X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=parse.c;h=81ffb741094b2ebec9b24e18dff062af2bceced3;hp=abe0653b69adc5875b879691d3f67a7941386cb2;hb=76a43db448f9fd5e9f1397428a433466d98e0d5d;hpb=63f29372bc1bd69b66816c96d88b9c0bd8f3d8b9 diff --git a/parse.c b/parse.c index abe0653b..81ffb741 100644 --- a/parse.c +++ b/parse.c @@ -56,8 +56,8 @@ static int str_to_decimal(const char *str, long long *val, int kilo) if (!len) return 1; - *val = strtoul(str, NULL, 10); - if (*val == ULONG_MAX && errno == ERANGE) + *val = strtol(str, NULL, 10); + if (*val == LONG_MAX && errno == ERANGE) return 1; if (kilo) @@ -132,6 +132,8 @@ static struct fio_option *find_option(struct fio_option *options, while (o->name) { if (!strcmp(o->name, opt)) return o; + else if (o->alias && !strcmp(o->alias, opt)) + return o; o++; } @@ -180,10 +182,14 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, if (ret) break; - if (o->maxval && ull > o->maxval) - ull = o->maxval; - if (o->minval && ull < o->minval) - ull = o->minval; + if (o->maxval && ull > o->maxval) { + fprintf(stderr, "max value out of range: %lld (%d max)\n", ull, o->maxval); + return 1; + } + if (o->minval && ull < o->minval) { + fprintf(stderr, "min value out of range: %lld (%d min)\n", ull, o->minval); + return 1; + } if (fn) ret = fn(data, &ull); @@ -252,10 +258,17 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, if (ret) break; - if (o->maxval && il > (int) o->maxval) - il = o->maxval; - if (o->minval && il < o->minval) - il = o->minval; + if (o->maxval && il > (int) o->maxval) { + fprintf(stderr, "max value out of range: %d (%d max)\n", il, o->maxval); + return 1; + } + if (o->minval && il < o->minval) { + fprintf(stderr, "min value out of range: %d (%d min)\n", il, o->minval); + return 1; + } + + if (o->neg) + il = !il; if (fn) ret = fn(data, &il);