Merge branch 'master' into gfio
[fio.git] / parse.c
diff --git a/parse.c b/parse.c
index 92adbe58c135370725cf2172ffbf37f6be8250b6..f3497440aade02ca875dc7c0f9e07469c4030595 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -343,6 +343,11 @@ static int opt_len(const char *str)
        return (int)(postfix - str);
 }
 
+static int str_match_len(const struct value_pair *vp, const char *str)
+{
+       return max(strlen(vp->ival), opt_len(str));
+}
+
 #define val_store(ptr, val, off, or, data)             \
        do {                                            \
                ptr = td_var((data), (off));            \
@@ -387,7 +392,7 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data,
                        if (!vp->ival || vp->ival[0] == '\0')
                                continue;
                        all_skipped = 0;
-                       if (!strncmp(vp->ival, ptr, opt_len(ptr))) {
+                       if (!strncmp(vp->ival, ptr, str_match_len(vp, ptr))) {
                                ret = 0;
                                if (o->roff1) {
                                        if (vp->or)
@@ -548,7 +553,7 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data,
                                if (!vp->ival || vp->ival[0] == '\0')
                                        continue;
                                all_skipped = 0;
-                               if (!strncmp(vp->ival, ptr, opt_len(ptr))) {
+                               if (!strncmp(vp->ival, ptr, str_match_len(vp, ptr))) {
                                        char *rest;
 
                                        ret = 0;