X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=parse.c;h=10d2116e9d95442c5d1e34ad3c5729b9ef441cc3;hb=cda866caa9b9f6598e264d24a8997d24f3c2b1c7;hp=abe0653b69adc5875b879691d3f67a7941386cb2;hpb=63f29372bc1bd69b66816c96d88b9c0bd8f3d8b9;p=fio.git diff --git a/parse.c b/parse.c index abe0653b..10d2116e 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) @@ -180,10 +180,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 +256,14 @@ 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 (fn) ret = fn(data, &il);