diff options
author | Thomas Adam <thomas@xteddy.org> | 2019-05-23 13:02:27 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2019-05-23 13:02:27 +0100 |
commit | 75aeb733f292639f8332df11315ca8280e5631fd (patch) | |
tree | d459b4c2381ca737009613577deafe14196eceef /control.c | |
parent | 7ca2e2fe88cd282d3e8faea3f2000ad15972f71d (diff) | |
parent | 723010ba72e337832402f8e44981c02caa30b476 (diff) | |
download | rtmux-75aeb733f292639f8332df11315ca8280e5631fd.tar.gz rtmux-75aeb733f292639f8332df11315ca8280e5631fd.tar.bz2 rtmux-75aeb733f292639f8332df11315ca8280e5631fd.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'control.c')
-rw-r--r-- | control.c | 22 |
1 files changed, 14 insertions, 8 deletions
@@ -68,9 +68,9 @@ control_error(struct cmdq_item *item, void *data) void control_callback(struct client *c, int closed, __unused void *data) { - char *line, *cause; - struct cmd_list *cmdlist; + char *line; struct cmdq_item *item; + struct cmd_parse_result *pr; if (closed) c->flags |= CLIENT_EXIT; @@ -84,15 +84,21 @@ control_callback(struct client *c, int closed, __unused void *data) break; } - cmdlist = cmd_string_parse(line, NULL, 0, &cause); - if (cmdlist == NULL) { - item = cmdq_get_callback(control_error, cause); + pr = cmd_parse_from_string(line, NULL); + switch (pr->status) { + case CMD_PARSE_EMPTY: + break; + case CMD_PARSE_ERROR: + item = cmdq_get_callback(control_error, pr->error); cmdq_append(c, item); - } else { - item = cmdq_get_command(cmdlist, NULL, NULL, 0); + free(pr->error); + break; + case CMD_PARSE_SUCCESS: + item = cmdq_get_command(pr->cmdlist, NULL, NULL, 0); item->shared->flags |= CMDQ_SHARED_CONTROL; cmdq_append(c, item); - cmd_list_free(cmdlist); + cmd_list_free(pr->cmdlist); + break; } free(line); |