diff options
author | Thomas Adam <thomas@xteddy.org> | 2020-04-13 22:01:30 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2020-04-13 22:01:30 +0100 |
commit | 2159ff3256df4b823dfaed24e64047249cf079c2 (patch) | |
tree | 5652805f202533dd5367bac6659bcf1d558a9348 /cmd-parse.y | |
parent | acc00cd13a767067f85ed27d52ad543c9a58869c (diff) | |
parent | 187277eaadc4a675659bf7ede88f50bfe6cc7be9 (diff) | |
download | rtmux-2159ff3256df4b823dfaed24e64047249cf079c2.tar.gz rtmux-2159ff3256df4b823dfaed24e64047249cf079c2.tar.bz2 rtmux-2159ff3256df4b823dfaed24e64047249cf079c2.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'cmd-parse.y')
-rw-r--r-- | cmd-parse.y | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/cmd-parse.y b/cmd-parse.y index 2ca0124a..891f2289 100644 --- a/cmd-parse.y +++ b/cmd-parse.y @@ -793,6 +793,58 @@ cmd_parse_from_string(const char *s, struct cmd_parse_input *pi) return (cmd_parse_from_buffer(s, strlen(s), pi)); } +enum cmd_parse_status +cmd_parse_and_insert(const char *s, struct cmd_parse_input *pi, + struct cmdq_item *after, struct cmdq_state *state, char **error) +{ + struct cmd_parse_result *pr; + struct cmdq_item *item; + + pr = cmd_parse_from_string(s, pi); + switch (pr->status) { + case CMD_PARSE_EMPTY: + break; + case CMD_PARSE_ERROR: + if (error != NULL) + *error = pr->error; + else + free(pr->error); + break; + case CMD_PARSE_SUCCESS: + item = cmdq_get_command(pr->cmdlist, state); + cmdq_insert_after(after, item); + cmd_list_free(pr->cmdlist); + break; + } + return (pr->status); +} + +enum cmd_parse_status +cmd_parse_and_append(const char *s, struct cmd_parse_input *pi, + struct client *c, struct cmdq_state *state, char **error) +{ + struct cmd_parse_result *pr; + struct cmdq_item *item; + + pr = cmd_parse_from_string(s, pi); + switch (pr->status) { + case CMD_PARSE_EMPTY: + break; + case CMD_PARSE_ERROR: + if (error != NULL) + *error = pr->error; + else + free(pr->error); + break; + case CMD_PARSE_SUCCESS: + item = cmdq_get_command(pr->cmdlist, state); + cmdq_append(c, item); + cmd_list_free(pr->cmdlist); + break; + } + return (pr->status); +} + struct cmd_parse_result * cmd_parse_from_buffer(const void *buf, size_t len, struct cmd_parse_input *pi) { |