GUASI API change
[fio.git] / parse.c
diff --git a/parse.c b/parse.c
index 4d8e95db7fbe88b84a45c7bb215b1b7f3db47223..9015b1d72bd5a527ef36ed0db12646ce01fcc945 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -142,12 +142,24 @@ void strip_blank_front(char **p)
 
        while (isspace(*s))
                s++;
+
+       *p = s;
 }
 
 void strip_blank_end(char *p)
 {
-       char *s = p + strlen(p) - 1;
-
+       char *s;
+
+       s = strchr(p, ';');
+       if (s)
+               *s = '\0';
+       s = strchr(p, '#');
+       if (s)
+               *s = '\0';
+       if (s)
+               p = s;
+
+       s = p + strlen(p) - 1;
        while (isspace(*s) || iscntrl(*s))
                s--;
 
@@ -450,9 +462,9 @@ int parse_option(const char *opt, struct fio_option *options, void *data)
 {
        struct fio_option *o;
        char *pre, *post;
-       char tmp[64];
+       char *tmp;
 
-       strncpy(tmp, opt, sizeof(tmp) - 1);
+       tmp = strdup(opt);
 
        pre = strchr(tmp, '=');
        if (pre) {
@@ -468,13 +480,17 @@ int parse_option(const char *opt, struct fio_option *options, void *data)
 
        if (!o) {
                fprintf(stderr, "Bad option %s\n", tmp);
+               free(tmp);
                return 1;
        }
 
-       if (!handle_option(o, post, data))
+       if (!handle_option(o, post, data)) {
+               free(tmp);
                return 0;
+       }
 
        fprintf(stderr, "fio: failed parsing %s\n", opt);
+       free(tmp);
        return 1;
 }
 
@@ -625,6 +641,8 @@ void options_init(struct fio_option *options)
                        o->minval = 0;
                        o->maxval = 1;
                }
+               if (o->type == FIO_OPT_STR_SET && o->def)
+                       fprintf(stderr, "Option %s: string set option with default will always be true\n", o->name);
                if (!o->cb && !o->off1)
                        fprintf(stderr, "Option %s: neither cb nor offset given\n", o->name);
                if (o->type == FIO_OPT_STR || o->type == FIO_OPT_STR_STORE)