| | 251 | // Get option value num/string, with bytes/kilo/mega/giga modifier and default |
| | 252 | /*****************************************************************************/ |
| | 253 | ULONG TxaOptBkmg // RET number value in bytes |
| | 254 | ( |
| | 255 | TXHANDLE txh, // IN TXA handle |
| | 256 | char option, // IN option character |
| | 257 | ULONG def, // IN default value |
| | 258 | BYTE mod // IN b,kb,mb,gb modifier |
| | 259 | ) |
| | 260 | { |
| | 261 | ULONG rc = 0; // function return |
| | 262 | BYTE unit = TXA_DFUNIT; |
| | 263 | TXA_OPTION *opt; // option pointer |
| | 264 | |
| | 265 | ENTER(); |
| | 266 | TRACES(("Option: '%c' default: %8.8lx mod:%2.2hx = '%c'\n", |
| | 267 | option, def, mod, mod)); |
| | 268 | |
| | 269 | if ((opt = TxaOptValue( option)) != NULL) // get the option details |
| | 270 | { |
| | 271 | switch (opt->type) |
| | 272 | { |
| | 273 | case TXA_STRING: |
| | 274 | rc = TxaParseNumber( opt->value.string, TX_RADIX_STD_CLASS, &unit); |
| | 275 | case TXA_NO_VAL: |
| | 276 | rc = def; |
| | 277 | break; |
| | 278 | |
| | 279 | default: // convert, default is MiB! |
| | 280 | rc = opt->value.number; |
| | 281 | unit = opt->unit; |
| | 282 | break; |
| | 283 | } |
| | 284 | } |
| | 285 | if (unit == TXA_DFUNIT) |
| | 286 | { |
| | 287 | unit = mod; |
| | 288 | } |
| | 289 | switch (tolower(unit)) |
| | 290 | { |
| | 291 | case 'g': |
| | 292 | if (rc >= 4) |
| | 293 | { |
| | 294 | rc = 0xffffffff; |
| | 295 | break; |
| | 296 | } |
| | 297 | else |
| | 298 | { |
| | 299 | rc *= 1024; // Giga |
| | 300 | } |
| | 301 | case 'm': rc *= 1024; // Mega |
| | 302 | case 'k': rc *= 1024; // Kilo |
| | 303 | default: break; // Bytes, OK |
| | 304 | } |
| | 305 | RETURN (rc); |
| | 306 | } // end 'TxaParseBkmgNumber' |
| | 307 | /*---------------------------------------------------------------------------*/ |
| | 308 | |
| | 309 | |
| | 310 | /*****************************************************************************/ |
| | 742 | // Get option value num/string, with bytes/kilo/mega/giga modifier and default |
| | 743 | /*****************************************************************************/ |
| | 744 | ULONG TxaOptionBkmg // RET number value in bytes |
| | 745 | ( |
| | 746 | TXHANDLE txh, // IN TXA handle |
| | 747 | char option, // IN option character |
| | 748 | ULONG def, // IN default value |
| | 749 | BYTE mod // IN b,kb,mb,gb modifier |
| | 750 | ) |
| | 751 | { |
| | 752 | ULONG rc = 0; // function return |
| | 753 | BYTE unit = TXA_DFUNIT; |
| | 754 | TXA_OPTION *opt; // option pointer |
| | 755 | |
| | 756 | ENTER(); |
| | 757 | TRACES(("Option: '%c' default: %8.8lx mod:%2.2hx = '%c'\n", |
| | 758 | option, def, mod, mod)); |
| | 759 | |
| | 760 | if ((opt = TxaOptValue( option)) != NULL) // get the option details |
| | 761 | { |
| | 762 | switch (opt->type) |
| | 763 | { |
| | 764 | case TXA_STRING: |
| | 765 | rc = TxaParseNumber( opt->value.string, TX_RADIX_STD_CLASS, &unit); |
| | 766 | case TXA_NO_VAL: |
| | 767 | rc = def; |
| | 768 | break; |
| | 769 | |
| | 770 | default: // convert, default is MiB! |
| | 771 | rc = opt->value.number; |
| | 772 | unit = opt->unit; |
| | 773 | break; |
| | 774 | } |
| | 775 | } |
| | 776 | if (unit == TXA_DFUNIT) |
| | 777 | { |
| | 778 | unit = mod; |
| | 779 | } |
| | 780 | switch (tolower(unit)) |
| | 781 | { |
| | 782 | case 'g': rc *= 1024; // Giga |
| | 783 | case 'm': rc *= 1024; // Mega |
| | 784 | case 'k': rc *= 1024; // Kilo |
| | 785 | default: break; // Bytes, OK |
| | 786 | } |
| | 787 | RETURN (rc); |
| | 788 | } // end 'TxaOptionBkmg' |
| | 789 | /*---------------------------------------------------------------------------*/ |
| | 790 | |
| | 791 | |
| | 792 | /*****************************************************************************/ |