| 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 | | /*****************************************************************************/ |