Merge branch 'next'
[fio.git] / parse.c
diff --git a/parse.c b/parse.c
index 15aeb0acd3a5a96741360a0560dd2c630819871f..5b8e10f9f2e936ef55817c2d44b291e7c868e9f4 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -140,6 +140,19 @@ static unsigned long get_mult_time(char c)
        }
 }
 
+static int is_separator(char c)
+{
+       switch (c) {
+       case ':':
+       case '-':
+       case ',':
+       case '/':
+               return 1;
+       default:
+               return 0;
+       }
+}
+
 static unsigned long long __get_mult_bytes(const char *p, void *data,
                                           int *percent)
 {
@@ -153,8 +166,13 @@ static unsigned long long __get_mult_bytes(const char *p, void *data,
 
        c = strdup(p);
 
-       for (i = 0; i < strlen(c); i++)
+       for (i = 0; i < strlen(c); i++) {
                c[i] = tolower(c[i]);
+               if (is_separator(c[i])) {
+                       c[i] = '\0';
+                       break;
+               }
+       }
 
        if (!strcmp("pib", c)) {
                pow = 5;
@@ -369,11 +387,10 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data,
        long ul1, ul2;
        double uf;
        char **cp = NULL;
-       char *cp2;
        int ret = 0, is_time = 0;
        const struct value_pair *vp;
        struct value_pair posval[PARSE_MAX_VP];
-       int i, len, all_skipped = 1;
+       int i, all_skipped = 1;
 
        dprint(FD_PARSE, "__handle_option=%s, type=%d, ptr=%s\n", o->name,
                                                        o->type, ptr);
@@ -503,6 +520,8 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data,
                break;
        }
        case FIO_OPT_FLOAT_LIST: {
+               char *cp2;
+
                if (first) {
                        /*
                        ** Initialize precision to 0 and zero out list
@@ -521,7 +540,7 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data,
                                        o->maxlen);
                        return 1;
                }
-               if (!str_to_float(ptr, &uf)){
+               if (!str_to_float(ptr, &uf)) {
                        log_err("not a floating point value: %s\n", ptr);
                        return 1;
                }
@@ -546,7 +565,7 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data,
                */
                cp2 = strchr(ptr, '.');
                if (cp2 != NULL) {
-                       len = 0;
+                       int len = 0;
 
                        while (*++cp2 != '\0' && *cp2 >= '0' && *cp2 <= '9')
                                len++;