[MINOR] config: support a comma-separated list of store data types in stick-table
Sometimes we need to store many data types in stick-tables. Let's support a
comma-separated list instead of repeating "store" with each keyword.
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 871310b..69ab566 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -2276,19 +2276,29 @@
}
else if (strcmp(args[myidx], "store") == 0) {
int type;
+ char *cw, *nw;
myidx++;
- type = stktable_get_data_type(args[myidx]);
- if (type < 0) {
- Alert("parsing [%s:%d] : %s: unknown store option '%s'.\n",
- file, linenum, args[0], args[myidx]);
- err_code |= ERR_ALERT | ERR_FATAL;
- goto out;
- }
- if (!stktable_alloc_data_type(&curproxy->table, type)) {
- Warning("parsing [%s:%d]: %s: store option '%s' already enabled, ignored.\n",
- file, linenum, args[0], args[myidx]);
- err_code |= ERR_WARN;
+ nw = args[myidx];
+ while (*nw) {
+ /* the "store" keyword supports a comma-separated list */
+ cw = nw;
+ while (*nw && *nw != ',')
+ nw++;
+ if (*nw)
+ *nw++ = '\0';
+ type = stktable_get_data_type(cw);
+ if (type < 0) {
+ Alert("parsing [%s:%d] : %s: unknown store option '%s'.\n",
+ file, linenum, args[0], cw);
+ err_code |= ERR_ALERT | ERR_FATAL;
+ goto out;
+ }
+ if (!stktable_alloc_data_type(&curproxy->table, type)) {
+ Warning("parsing [%s:%d]: %s: store option '%s' already enabled, ignored.\n",
+ file, linenum, args[0], cw);
+ err_code |= ERR_WARN;
+ }
}
myidx++;
}