X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=parse.c;h=f0e644f113bf63171fbebc8e0bd2545ae5d0fcd8;hp=bf1dea908817a5cf8530d0d76aec603173a20f47;hb=bcdedd0ac6e9413258b608ecb3511867b1a9c534;hpb=4d651dad4b3ee17a9be223fc1c0489cd4e304f65 diff --git a/parse.c b/parse.c index bf1dea90..f0e644f1 100644 --- a/parse.c +++ b/parse.c @@ -148,9 +148,19 @@ void strip_blank_front(char **p) void strip_blank_end(char *p) { - char *s = p + strlen(p) - 1; - - while (isspace(*s) || iscntrl(*s)) + char *s; + + s = strchr(p, ';'); + if (s) + *s = '\0'; + s = strchr(p, '#'); + if (s) + *s = '\0'; + if (s) + p = s; + + s = p + strlen(p); + while ((isspace(*s) || iscntrl(*s)) && (s > p)) s--; *(s + 1) = '\0'; @@ -452,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) { @@ -470,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; }