[PATCH] Cleanup 2nd argument set parsing/setting
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/parse.c b/parse.c
index 6e935f3..12f7697 100644
--- a/parse.c
+++ b/parse.c
@@ -133,10 +133,16 @@
return NULL;
}
+#define val_store(ptr, val, off, data) \
+ do { \
+ ptr = td_var((data), (off)); \
+ *ptr = (val); \
+ } while (0)
+
static int __handle_option(struct fio_option *o, const char *ptr, void *data,
int first)
{
- unsigned int il, *ilp1, *ilp2;
+ unsigned int il, *ilp;
unsigned long long ull, *ullp;
unsigned long ul1, ul2;
char **cp;
@@ -170,29 +176,15 @@
ret = fn(data, &ull);
else {
if (o->type == FIO_OPT_STR_VAL_INT) {
- if (first) {
- ilp1 = td_var(data, o->off1);
- *ilp1 = ull;
- if (o->off2) {
- ilp1 = td_var(data, o->off2);
- *ilp1 = ull;
- }
- } else if (o->off2) {
- ilp1 = td_var(data, o->off2);
- *ilp1 = ull;
- }
+ if (first)
+ val_store(ilp, ull, o->off1, data);
+ if (o->off2)
+ val_store(ilp, ull, o->off2, data);
} else {
- if (first) {
- ullp = td_var(data, o->off1);
- *ullp = ull;
- if (o->off2) {
- ullp = td_var(data, o->off2);
- *ullp = ull;
- }
- } else if (o->off2) {
- ullp = td_var(data, o->off2);
- *ullp = ull;
- }
+ if (first)
+ val_store(ullp, ull, o->off1, data);
+ if (o->off2)
+ val_store(ullp, ull, o->off2, data);
}
}
break;
@@ -228,24 +220,15 @@
}
if (first) {
- ilp1 = td_var(data, o->off1);
- ilp2 = td_var(data, o->off2);
- *ilp1 = ul1;
- *ilp2 = ul2;
- if (o->off3 && o->off4) {
- ilp1 = td_var(data, o->off3);
- ilp2 = td_var(data, o->off4);
- *ilp1 = ul1;
- *ilp2 = ul2;
- }
- } else if (o->off3 && o->off4) {
- ilp1 = td_var(data, o->off3);
- ilp2 = td_var(data, o->off4);
- *ilp1 = ul1;
- *ilp2 = ul2;
+ val_store(ilp, ul1, o->off1, data);
+ val_store(ilp, ul2, o->off2, data);
}
- }
-
+ if (o->off3 && o->off4) {
+ val_store(ilp, ul1, o->off3, data);
+ val_store(ilp, ul2, o->off4, data);
+ }
+ }
+
break;
}
case FIO_OPT_INT: {
@@ -261,12 +244,10 @@
if (fn)
ret = fn(data, &il);
else {
- if (first || !o->off2)
- ilp1 = td_var(data, o->off1);
- else
- ilp1 = td_var(data, o->off2);
-
- *ilp1 = il;
+ if (first)
+ val_store(ilp, il, o->off1, data);
+ if (o->off2)
+ val_store(ilp, il, o->off2, data);
}
break;
}
@@ -276,12 +257,10 @@
if (fn)
ret = fn(data);
else {
- if (first || !o->off2)
- ilp1 = td_var(data, o->off1);
- else
- ilp1 = td_var(data, o->off2);
-
- *ilp1 = 1;
+ if (first)
+ val_store(ilp, 1, o->off1, data);
+ if (o->off2)
+ val_store(ilp, 1, o->off2, data);
}
break;
}