diff options
author | nicm <nicm> | 2021-08-27 17:25:55 +0000 |
---|---|---|
committer | nicm <nicm> | 2021-08-27 17:25:55 +0000 |
commit | daec63e5e6eb3390d53f4bf7f8a327df77e46c95 (patch) | |
tree | cf78624cb0b4a80a6eeb8e29b368ea4f9beb5610 /server-client.c | |
parent | fd756a150b43d319d08ac4117f34edef9e0438c4 (diff) | |
download | rtmux-daec63e5e6eb3390d53f4bf7f8a327df77e46c95.tar.gz rtmux-daec63e5e6eb3390d53f4bf7f8a327df77e46c95.tar.bz2 rtmux-daec63e5e6eb3390d53f4bf7f8a327df77e46c95.zip |
Replace %% in command lists (by copying them) for template arguments ,
this means they can be used with {} as well. Also make argument
processing from an existing vector preserve commands. GitHub issue 2858.
Diffstat (limited to 'server-client.c')
-rw-r--r-- | server-client.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/server-client.c b/server-client.c index 062e72d4..a7cad0a5 100644 --- a/server-client.c +++ b/server-client.c @@ -2124,6 +2124,7 @@ server_client_dispatch_command(struct client *c, struct imsg *imsg) int argc; char **argv, *cause; struct cmd_parse_result *pr; + struct args_value *values; if (c->flags & CLIENT_EXIT) return; @@ -2149,7 +2150,8 @@ server_client_dispatch_command(struct client *c, struct imsg *imsg) *argv = xstrdup("new-session"); } - pr = cmd_parse_from_arguments(argc, argv, NULL); + values = args_from_vector(argc, argv); + pr = cmd_parse_from_arguments(values, argc, NULL); switch (pr->status) { case CMD_PARSE_ERROR: cause = pr->error; @@ -2157,6 +2159,8 @@ server_client_dispatch_command(struct client *c, struct imsg *imsg) case CMD_PARSE_SUCCESS: break; } + args_free_values(values, argc); + free(values); cmd_free_argv(argc, argv); cmdq_append(c, cmdq_get_command(pr->cmdlist, NULL)); |