mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-11 03:31:36 +00:00
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.
This commit is contained in:
parent
c64de3f1bc
commit
48bcfdab24
@ -926,6 +926,7 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
|
|||||||
struct appctx *appctx = __objt_appctx(si->end);
|
struct appctx *appctx = __objt_appctx(si->end);
|
||||||
char *args[MAX_STATS_ARGS + 1];
|
char *args[MAX_STATS_ARGS + 1];
|
||||||
int arg;
|
int arg;
|
||||||
|
int i, j;
|
||||||
|
|
||||||
while (isspace((unsigned char)*line))
|
while (isspace((unsigned char)*line))
|
||||||
line++;
|
line++;
|
||||||
@ -934,7 +935,12 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
|
|||||||
args[arg] = line;
|
args[arg] = line;
|
||||||
|
|
||||||
while (*line && arg < MAX_STATS_ARGS) {
|
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';
|
*line++ = '\0';
|
||||||
|
|
||||||
while (isspace((unsigned char)*line))
|
while (isspace((unsigned char)*line))
|
||||||
@ -950,6 +956,20 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
|
|||||||
while (++arg <= MAX_STATS_ARGS)
|
while (++arg <= MAX_STATS_ARGS)
|
||||||
args[arg] = line;
|
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;
|
appctx->ctx.stats.flags = 0;
|
||||||
if (strcmp(args[0], "show") == 0) {
|
if (strcmp(args[0], "show") == 0) {
|
||||||
if (strcmp(args[1], "stat") == 0) {
|
if (strcmp(args[1], "stat") == 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user