From: Willy Tarreau Date: Sat, 19 Jun 2010 05:12:36 +0000 (+0200) Subject: [MINOR] config: support a comma-separated list of store data types in stick-table X-Git-Tag: v1.5-dev8~517 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b084e9ccb97e533c192e2a42a4929d183dc32c76;p=thirdparty%2Fhaproxy.git [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 871310b66b..69ab566065 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -2276,19 +2276,29 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm) } 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++; }