MEDIUM: dumpstat: make the CLI parser understand the backslash as an escape char
We'll need to pass patterns on the CLI for lookups. Till now there was no
need for a backslash, so it's still time to support them just like in the
config file.
diff --git a/src/dumpstats.c b/src/dumpstats.c
index d1518b8..96c5cea 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -926,6 +926,7 @@
struct appctx *appctx = __objt_appctx(si->end);
char *args[MAX_STATS_ARGS + 1];
int arg;
+ int i, j;
while (isspace((unsigned char)*line))
line++;
@@ -934,7 +935,12 @@
args[arg] = line;
while (*line && arg < MAX_STATS_ARGS) {
- if (isspace((unsigned char)*line)) {
+ if (*line == '\\') {
+ line++;
+ if (*line == '\0')
+ break;
+ }
+ else if (isspace((unsigned char)*line)) {
*line++ = '\0';
while (isspace((unsigned char)*line))
@@ -950,6 +956,20 @@
while (++arg <= MAX_STATS_ARGS)
args[arg] = line;
+ /* remove \ */
+ arg = 0;
+ while (*args[arg] != '\0') {
+ j = 0;
+ for (i=0; args[arg][i] != '\0'; i++) {
+ if (args[arg][i] == '\\')
+ continue;
+ args[arg][j] = args[arg][i];
+ j++;
+ }
+ args[arg][j] = '\0';
+ arg++;
+ }
+
appctx->ctx.stats.flags = 0;
if (strcmp(args[0], "show") == 0) {
if (strcmp(args[1], "stat") == 0) {