log: fix signedness issue
[fio.git] / parse.c
diff --git a/parse.c b/parse.c
index adeb63fff5866787a26872c9f199bb0c0ec6ae9b..6261fca2599b96e45d7a733587b7ea61884b8cfd 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -36,6 +36,7 @@ static const char *opt_type_names[] = {
        "OPT_FLOAT_LIST",
        "OPT_STR_SET",
        "OPT_DEPRECATED",
+       "OPT_SOFT_DEPRECATED",
        "OPT_UNSUPPORTED",
 };
 
@@ -68,15 +69,20 @@ static void posval_sort(const struct fio_option *o, struct value_pair *vpmap)
 }
 
 static void show_option_range(const struct fio_option *o,
-                             size_t (*logger)(const char *format, ...))
+                             ssize_t (*logger)(const char *format, ...))
 {
        if (o->type == FIO_OPT_FLOAT_LIST) {
-               if (o->minfp == DBL_MIN && o->maxfp == DBL_MAX)
+               const char *sep = "";
+               if (!o->minfp && !o->maxfp)
                        return;
 
-               logger("%20s: min=%f", "range", o->minfp);
+               logger("%20s: ", "range");
+               if (o->minfp != DBL_MIN) {
+                       logger("min=%f", o->minfp);
+                       sep = ", ";
+               }
                if (o->maxfp != DBL_MAX)
-                       logger(", max=%f", o->maxfp);
+                       logger("%smax=%f", sep, o->maxfp);
                logger("\n");
        } else if (!o->posval[0].ival) {
                if (!o->minval && !o->maxval)
@@ -126,7 +132,7 @@ static void show_option_help(const struct fio_option *o, int is_err)
                "deprecated",
                "unsupported",
        };
-       size_t (*logger)(const char *format, ...);
+       ssize_t (*logger)(const char *format, ...);
 
        if (is_err)
                logger = log_err;
@@ -668,15 +674,17 @@ static int __handle_option(const struct fio_option *o, const char *ptr,
                        log_err("not a floating point value: %s\n", ptr);
                        return 1;
                }
-               if (uf > o->maxfp) {
-                       log_err("value out of range: %f"
-                               " (range max: %f)\n", uf, o->maxfp);
-                       return 1;
-               }
-               if (uf < o->minfp) {
-                       log_err("value out of range: %f"
-                               " (range min: %f)\n", uf, o->minfp);
-                       return 1;
+               if (o->minfp || o->maxfp) {
+                       if (uf > o->maxfp) {
+                               log_err("value out of range: %f"
+                                       " (range max: %f)\n", uf, o->maxfp);
+                               return 1;
+                       }
+                       if (uf < o->minfp) {
+                               log_err("value out of range: %f"
+                                       " (range min: %f)\n", uf, o->minfp);
+                               return 1;
+                       }
                }
 
                flp = td_var(data, o, o->off1);
@@ -869,8 +877,9 @@ static int __handle_option(const struct fio_option *o, const char *ptr,
                break;
        }
        case FIO_OPT_DEPRECATED:
-               log_info("Option %s is deprecated\n", o->name);
                ret = 1;
+       case FIO_OPT_SOFT_DEPRECATED:
+               log_info("Option %s is deprecated\n", o->name);
                break;
        default:
                log_err("Bad option type %u\n", o->type);
@@ -1178,8 +1187,6 @@ static void __print_option(const struct fio_option *o,
 
        if (!o)
                return;
-       if (!org)
-               org = o;
 
        p = name;
        depth = level;
@@ -1230,7 +1237,8 @@ int show_cmd_help(const struct fio_option *options, const char *name)
        for (o = &options[0]; o->name; o++) {
                int match = 0;
 
-               if (o->type == FIO_OPT_DEPRECATED)
+               if (o->type == FIO_OPT_DEPRECATED ||
+                   o->type == FIO_OPT_SOFT_DEPRECATED)
                        continue;
                if (!exec_profile && o->prof_name)
                        continue;
@@ -1304,7 +1312,8 @@ void fill_default_options(void *data, const struct fio_option *options)
 
 static void option_init(struct fio_option *o)
 {
-       if (o->type == FIO_OPT_DEPRECATED || o->type == FIO_OPT_UNSUPPORTED)
+       if (o->type == FIO_OPT_DEPRECATED || o->type == FIO_OPT_UNSUPPORTED ||
+           o->type == FIO_OPT_SOFT_DEPRECATED)
                return;
        if (o->name && !o->lname)
                log_err("Option %s: missing long option name\n", o->name);
@@ -1316,10 +1325,6 @@ static void option_init(struct fio_option *o)
                if (!o->maxval)
                        o->maxval = UINT_MAX;
        }
-       if (o->type == FIO_OPT_FLOAT_LIST) {
-               o->minfp = DBL_MIN;
-               o->maxfp = DBL_MAX;
-       }
        if (o->type == FIO_OPT_STR_SET && o->def && !o->no_warn_def) {
                log_err("Option %s: string set option with"
                                " default will always be true\n", o->name);