X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=parse.c;h=1e6a5224fb4ada8897f2e6e8b901eb5c2c82d256;hb=dce8b847f2c149f0f857918e3250b9dafeb5c713;hp=d8061610a8a92563c3701b02e8e7ee305f480ee5;hpb=808def7036ddfaf6f0ec2f5ecce031fd46ce40ef;p=fio.git diff --git a/parse.c b/parse.c index d8061610..1e6a5224 100644 --- a/parse.c +++ b/parse.c @@ -79,6 +79,7 @@ static void show_option_help(struct fio_option *o, FILE *out) const char *typehelp[] = { "invalid", "string (opt=bla)", + "string (opt=bla)", "string with possible k/m/g postfix (opt=4k)", "string with time postfix (opt=10s)", "string (opt=bla)", @@ -167,16 +168,20 @@ static unsigned long long __get_mult_bytes(const char *p, void *data) static unsigned long long get_mult_bytes(const char *str, int len, void *data) { - const char *p; + const char *p = str; + + if (len < 2) + return __get_mult_bytes(str, data); + + /* + * Go forward until we hit a non-digit + */ + while ((p - str) <= len) { + if (!isdigit(*p)) + break; + p++; + } - /* - * if the last char is 'b' or 'B', the user likely used - * "1gb" instead of just "1g". If the second to last is also - * a letter, adjust. - */ - p = str + len - 1; - while (isalpha(*(p - 1))) - p--; if (!isalpha(*p)) p = NULL;