aboutsummaryrefslogtreecommitdiff
path: root/options.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2019-05-23 13:02:27 +0100
committerThomas Adam <thomas@xteddy.org>2019-05-23 13:02:27 +0100
commit75aeb733f292639f8332df11315ca8280e5631fd (patch)
treed459b4c2381ca737009613577deafe14196eceef /options.c
parent7ca2e2fe88cd282d3e8faea3f2000ad15972f71d (diff)
parent723010ba72e337832402f8e44981c02caa30b476 (diff)
downloadrtmux-75aeb733f292639f8332df11315ca8280e5631fd.tar.gz
rtmux-75aeb733f292639f8332df11315ca8280e5631fd.tar.bz2
rtmux-75aeb733f292639f8332df11315ca8280e5631fd.zip
Merge branch 'obsd-master'
Diffstat (limited to 'options.c')
-rw-r--r--options.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/options.c b/options.c
index 488f6cf9..fa8752b0 100644
--- a/options.c
+++ b/options.c
@@ -353,8 +353,7 @@ options_array_set(struct options_entry *o, u_int idx, const char *value,
{
struct options_array_item *a;
char *new;
- struct cmd_list *cmdlist;
- char *error;
+ struct cmd_parse_result *pr;
if (!OPTIONS_IS_ARRAY(o)) {
if (cause != NULL)
@@ -363,13 +362,19 @@ options_array_set(struct options_entry *o, u_int idx, const char *value,
}
if (OPTIONS_IS_COMMAND(o)) {
- cmdlist = cmd_string_parse(value, NULL, 0, &error);
- if (cmdlist == NULL && error != NULL) {
+ pr = cmd_parse_from_string(value, NULL);
+ switch (pr->status) {
+ case CMD_PARSE_EMPTY:
+ *cause = xstrdup("empty command");
+ return (-1);
+ case CMD_PARSE_ERROR:
if (cause != NULL)
- *cause = error;
+ *cause = pr->error;
else
- free(error);
+ free(pr->error);
return (-1);
+ case CMD_PARSE_SUCCESS:
+ break;
}
}
@@ -397,7 +402,7 @@ options_array_set(struct options_entry *o, u_int idx, const char *value,
if (OPTIONS_IS_STRING(o))
a->value.string = new;
else if (OPTIONS_IS_COMMAND(o))
- a->value.cmdlist = cmdlist;
+ a->value.cmdlist = pr->cmdlist;
return (0);
}