aboutsummaryrefslogtreecommitdiff
path: root/cmd-parse.y
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2020-04-13 22:01:30 +0100
committerThomas Adam <thomas@xteddy.org>2020-04-13 22:01:30 +0100
commit2159ff3256df4b823dfaed24e64047249cf079c2 (patch)
tree5652805f202533dd5367bac6659bcf1d558a9348 /cmd-parse.y
parentacc00cd13a767067f85ed27d52ad543c9a58869c (diff)
parent187277eaadc4a675659bf7ede88f50bfe6cc7be9 (diff)
downloadrtmux-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.y52
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)
{