X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=parse.c;h=6141c91e8d31c4e9d0822fb769f606e1bcd84b00;hb=5e4c7118da52cb62aa9361dcac16c68001813cb9;hp=5e3573ea646fcb52ca1b08d043712d2c89efb0c6;hpb=d94722713ebd7bbdbf8b284b7563f2dd17964e24;p=fio.git diff --git a/parse.c b/parse.c index 5e3573ea..6141c91e 100644 --- a/parse.c +++ b/parse.c @@ -547,9 +547,11 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, ** Initialize precision to 0 and zero out list ** in case specified list is shorter than default */ - ul2 = 0; - ilp = td_var(data, o->off2); - *ilp = ul2; + if (o->off2) { + ul2 = 0; + ilp = td_var(data, o->off2); + *ilp = ul2; + } flp = td_var(data, o->off1); for(i = 0; i < o->maxlen; i++) @@ -592,9 +594,11 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, while (*++cp2 != '\0' && *cp2 >= '0' && *cp2 <= '9') len++; - ilp = td_var(data, o->off2); - if (len > *ilp) - *ilp = len; + if (o->off2) { + ilp = td_var(data, o->off2); + if (len > *ilp) + *ilp = len; + } } break; @@ -944,7 +948,8 @@ int parse_cmd_option(const char *opt, const char *val, } int parse_option(char *opt, const char *input, - struct fio_option *options, struct fio_option **o, void *data) + struct fio_option *options, struct fio_option **o, void *data, + int dump_cmdline) { char *post; @@ -965,11 +970,25 @@ int parse_option(char *opt, const char *input, return 1; } - if (!handle_option(*o, post, data)) - return 0; + if (handle_option(*o, post, data)) { + log_err("fio: failed parsing %s\n", input); + return 1; + } - log_err("fio: failed parsing %s\n", input); - return 1; + if (dump_cmdline) { + const char *delim; + + if (!strcmp("description", (*o)->name)) + delim = "\""; + else + delim = ""; + + log_info("--%s%s", (*o)->name, post ? "" : " "); + if (post) + log_info("=%s%s%s ", delim, post, delim); + } + + return 0; } /*