diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2013-06-23 12:41:54 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2013-06-23 12:41:54 +0000 |
commit | 662d471215d66d3c44a9251cef7d00b25587851d (patch) | |
tree | b740b3c24d890d72c68212bc8d1c570a89ea7ce9 | |
parent | d6debc21c777dc0e993fd7928bbba51075685491 (diff) | |
download | rtmux-662d471215d66d3c44a9251cef7d00b25587851d.tar.gz rtmux-662d471215d66d3c44a9251cef7d00b25587851d.tar.bz2 rtmux-662d471215d66d3c44a9251cef7d00b25587851d.zip |
Mark control commands specially so the client can identify them, based
on a diff from George Nachman a while back.
-rw-r--r-- | cmd-queue.c | 7 | ||||
-rw-r--r-- | 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; } @@ -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); } |