From b084e9ccb97e533c192e2a42a4929d183dc32c76 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sat, 19 Jun 2010 07:12:36 +0200 Subject: [PATCH] [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. --- src/cfgparse.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/cfgparse.c b/src/cfgparse.c index 871310b66..69ab56606 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++; }