diff options
author | nicm <nicm> | 2019-05-25 07:18:20 +0000 |
---|---|---|
committer | nicm <nicm> | 2019-05-25 07:18:20 +0000 |
commit | f8d3d247d884a9dc0b23f2799944c15630cab28f (patch) | |
tree | 4d96106a16701c94bec7475d1fb2e188e207df80 /server-client.c | |
parent | 6b0fa14470df848ae0735a3e0bab393c241acb86 (diff) | |
download | rtmux-f8d3d247d884a9dc0b23f2799944c15630cab28f.tar.gz rtmux-f8d3d247d884a9dc0b23f2799944c15630cab28f.tar.bz2 rtmux-f8d3d247d884a9dc0b23f2799944c15630cab28f.zip |
Merge cmd_list_parse into cmd-parse.y so it can use the new alias
processing code.
Diffstat (limited to 'server-client.c')
-rw-r--r-- | server-client.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/server-client.c b/server-client.c index e71cce15..52842e38 100644 --- a/server-client.c +++ b/server-client.c @@ -1775,9 +1775,9 @@ server_client_dispatch_command(struct client *c, struct imsg *imsg) struct msg_command_data data; char *buf; size_t len; - struct cmd_list *cmdlist = NULL; int argc; char **argv, *cause; + struct cmd_parse_result *pr; if (c->flags & CLIENT_EXIT) return; @@ -1803,24 +1803,31 @@ server_client_dispatch_command(struct client *c, struct imsg *imsg) *argv = xstrdup("new-session"); } - if ((cmdlist = cmd_list_parse(argc, argv, NULL, 0, &cause)) == NULL) { - cmd_free_argv(argc, argv); + pr = cmd_parse_from_arguments(argc, argv, NULL); + switch (pr->status) { + case CMD_PARSE_EMPTY: + cause = xstrdup("empty command"); goto error; + case CMD_PARSE_ERROR: + cause = pr->error; + goto error; + case CMD_PARSE_SUCCESS: + break; } cmd_free_argv(argc, argv); - cmdq_append(c, cmdq_get_command(cmdlist, NULL, NULL, 0)); + cmdq_append(c, cmdq_get_command(pr->cmdlist, NULL, NULL, 0)); cmdq_append(c, cmdq_get_callback(server_client_command_done, NULL)); - cmd_list_free(cmdlist); + + cmd_list_free(pr->cmdlist); return; error: + cmd_free_argv(argc, argv); + cmdq_append(c, cmdq_get_error(cause)); free(cause); - if (cmdlist != NULL) - cmd_list_free(cmdlist); - c->flags |= CLIENT_EXIT; } |