diff options
author | nicm <nicm> | 2020-04-13 18:59:41 +0000 |
---|---|---|
committer | nicm <nicm> | 2020-04-13 18:59:41 +0000 |
commit | 187277eaadc4a675659bf7ede88f50bfe6cc7be9 (patch) | |
tree | c8bc4105ea95d9cc1111e60ec84172f5e25dfa3a /cmd-parse.y | |
parent | 34804f2709a16dca45dc072fb53d03f79db61e51 (diff) | |
download | rtmux-187277eaadc4a675659bf7ede88f50bfe6cc7be9.tar.gz rtmux-187277eaadc4a675659bf7ede88f50bfe6cc7be9.tar.bz2 rtmux-187277eaadc4a675659bf7ede88f50bfe6cc7be9.zip |
Add helpers for the simple case of parse string and add to command queue.
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) { |