projects
/
fio.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3e7ba7c
)
[PATCH] Fixup check_range() so it accepts any combination of suffixes
author
Jens Axboe
<axboe@suse.de>
Thu, 8 Dec 2005 18:50:40 +0000
(19:50 +0100)
committer
Jens Axboe
<axboe@suse.de>
Thu, 8 Dec 2005 18:50:40 +0000
(19:50 +0100)
fio-ini.c
patch
|
blob
|
blame
|
history
diff --git
a/fio-ini.c
b/fio-ini.c
index d34956494557b32a51b18c2d25852cf6b6359c22..eca7e2fbb5776c2e8ddce5ddb7c901f67bf9e02d 100644
(file)
--- a/
fio-ini.c
+++ b/
fio-ini.c
@@
-414,35
+414,58
@@
static int check_strstore(char *p, char *name, char *dest)
return 0;
}
return 0;
}
-static int
check_range(char *p, char *name, unsigned long *s, unsigned long *e
)
+static int
__check_range(char *str, unsigned long *val
)
{
{
- char str[128];
- char s1, s2;
+ char suffix;
- sprintf(str, "%s=%%lu%%c-%%lu%%c", name);
- if (sscanf(p, str, s, &s1, e, &s2) == 4) {
- *s *= get_mult(s1);
- *e *= get_mult(s2);
+ if (sscanf(str, "%lu%c", val, &suffix) == 2) {
+ *val *= get_mult(suffix);
return 0;
}
return 0;
}
- sprintf(str, "%s = %%lu%%c-%%lu%%c", name);
- if (sscanf(p, str, s, &s1, e, &s2) == 4) {
- *s *= get_mult(s1);
- *e *= get_mult(s2);
+ if (sscanf(str, "%lu", val) == 1)
return 0;
return 0;
- }
- sprintf(str, "%s=%%lu-%%lu", name);
- if (sscanf(p, str, s, e) == 2)
- return 0;
+ return 1;
+}
+
+static int check_range(char *p, char *name, unsigned long *s, unsigned long *e)
+{
+ char option[128];
+ char *str, *p1, *p2;
+
+ strcpy(option, p);
+ p = option;
+
+ str = strstr(p, name);
+ if (!str)
+ return 1;
- sprintf(str, "%s = %%lu-%%lu", name);
- if (sscanf(p, str, s, e) == 2)
+ p += strlen(name);
+
+ str = strchr(p, '=');
+ if (!str)
+ return 1;
+
+ /*
+ * 'p' now holds whatever is after the '=' sign
+ */
+ p1 = str + 1;
+
+ /*
+ * terminate p1 at the '-' sign
+ */
+ p = strchr(p1, '-');
+ if (!p)
+ return 1;
+
+ p2 = p + 1;
+ *p = '\0';
+
+ if (!__check_range(p1, s) && !__check_range(p2, e))
return 0;
return 1;
return 0;
return 1;
-
}
static int check_int(char *p, char *name, unsigned int *val)
}
static int check_int(char *p, char *name, unsigned int *val)