From: William Lallemand Date: Tue, 11 Dec 2018 15:10:54 +0000 (+0100) Subject: MINOR: cli: parse prompt command in the CLI proxy X-Git-Tag: v1.9-dev11~112 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b80fa2864d6ad04abce345f46b35b7ec7e67d55;p=thirdparty%2Fhaproxy.git MINOR: cli: parse prompt command in the CLI proxy Handle the prompt command. Works the same way as the CLI. --- diff --git a/include/types/stream.h b/include/types/stream.h index 87bdf46edb..52c0b97c0a 100644 --- a/include/types/stream.h +++ b/include/types/stream.h @@ -163,6 +163,8 @@ struct stream { struct stream_interface *si); int pcli_next_pid; /* next target PID to use for the CLI proxy */ + int pcli_prompt; /* is there a prompt ?! */ + char *unique_id; /* custom unique ID */ /* These two pointers are used to resume the execution of the rule lists. */ diff --git a/src/cli.c b/src/cli.c index e7682f5fec..3171c0a3c0 100644 --- a/src/cli.c +++ b/src/cli.c @@ -1657,6 +1657,9 @@ void pcli_write_prompt(struct stream *s) struct buffer *msg = get_trash_chunk(); struct channel *oc = si_oc(&s->si[0]); + if (!s->pcli_prompt) + return; + if (s->pcli_next_pid == 0) chunk_appendf(msg, "master> "); else @@ -1781,6 +1784,9 @@ int pcli_find_and_exec_kw(struct stream *s, char **args, int argl, char **errmsg else *next_pid = target_pid; return 1; + } else if (!strcmp("prompt", args[0])) { + s->pcli_prompt ^= 1; + return argl; /* return the number of elements in the array */ } return 0; diff --git a/src/stream.c b/src/stream.c index 805fe4d509..67b0c8d710 100644 --- a/src/stream.c +++ b/src/stream.c @@ -201,6 +201,7 @@ struct stream *stream_new(struct session *sess, enum obj_type *origin) s->flags |= SF_INITIALIZED; s->pcli_next_pid = 0; + s->pcli_prompt = 0; s->unique_id = NULL; if ((t = task_new(tid_bit)) == NULL)