From 662d471215d66d3c44a9251cef7d00b25587851d Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Sun, 23 Jun 2013 12:41:54 +0000 Subject: Mark control commands specially so the client can identify them, based on a diff from George Nachman a while back. --- cmd-queue.c | 7 +++++-- control.c | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cmd-queue.c b/cmd-queue.c index a64d332c..904b092c 100644 --- a/cmd-queue.c +++ b/cmd-queue.c @@ -157,14 +157,17 @@ int cmdq_guard(struct cmd_q *cmdq, const char *guard) { struct client *c = cmdq->client; + int flags; if (c == NULL) return 0; if (!(c->flags & CLIENT_CONTROL)) return 0; - evbuffer_add_printf(c->stdout_data, "%%%s %ld %u\n", guard, - (long) cmdq->time, cmdq->number); + flags = !!(cmdq->cmd->flags & CMD_CONTROL); + + evbuffer_add_printf(c->stdout_data, "%%%s %ld %u %d\n", guard, + (long) cmdq->time, cmdq->number, flags); server_push_stdout(c); return 1; } diff --git a/control.c b/control.c index 8986f5c6..1f3739fc 100644 --- a/control.c +++ b/control.c @@ -55,6 +55,7 @@ control_callback(struct client *c, int closed, unused void *data) { char *line, *cause; struct cmd_list *cmdlist; + struct cmd *cmd; if (closed) c->flags |= CLIENT_EXIT; @@ -78,6 +79,8 @@ control_callback(struct client *c, int closed, unused void *data) free(cause); } else { + TAILQ_FOREACH(cmd, &cmdlist->list, qentry) + cmd->flags |= CMD_CONTROL; cmdq_run(c->cmdq, cmdlist); cmd_list_free(cmdlist); } -- cgit v1.2.3