summaryrefslogtreecommitdiffstats
path: root/cmd-set-option.c
diff options
context:
space:
mode:
authornicm <nicm>2017-01-12 15:36:35 +0000
committernicm <nicm>2017-01-12 15:36:35 +0000
commit24cba5907b5006363ac7f83f31801153f9c23b37 (patch)
tree9d6522e1a90ed7446f30231344077f1bbde03931 /cmd-set-option.c
parentdad3090d3201bd8272cb762beea8ef3aa8ce9673 (diff)
Simplify appending to string options.
Diffstat (limited to 'cmd-set-option.c')
-rw-r--r--cmd-set-option.c32
1 files changed, 10 insertions, 22 deletions
diff --git a/cmd-set-option.c b/cmd-set-option.c
index d1b7f331..ab15eb70 100644
--- a/cmd-set-option.c
+++ b/cmd-set-option.c
@@ -292,10 +292,8 @@ cmd_set_option_user(struct cmd *self, struct cmdq_item *item,
cmdq_error(item, "empty value");
return (CMD_RETURN_ERROR);
}
- if (o != NULL && args_has(args, 'a'))
- options_set_string(oo, optstr, "%s%s", o->str, valstr);
- else
- options_set_string(oo, optstr, "%s", valstr);
+ options_set_string(oo, optstr, args_has(args, 'a'), "%s",
+ valstr);
}
return (CMD_RETURN_NORMAL);
}
@@ -316,10 +314,11 @@ cmd_set_option_unset(struct cmd *self, struct cmdq_item *item,
if (args_has(args, 'g') || oo == global_options) {
switch (oe->type) {
case OPTIONS_TABLE_STRING:
- options_set_string(oo, oe->name, "%s", oe->default_str);
+ options_set_string(oo, oe->name, 0, "%s",
+ oe->default_str);
break;
case OPTIONS_TABLE_STYLE:
- options_set_style(oo, oe->name, oe->default_str, 0);
+ options_set_style(oo, oe->name, 0, oe->default_str);
break;
default:
options_set_number(oo, oe->name, oe->default_num);
@@ -391,20 +390,10 @@ cmd_set_option_string(struct cmd *self, __unused struct cmdq_item *item,
const struct options_table_entry *oe, struct options *oo,
const char *value)
{
- struct args *args = self->args;
- struct options_entry *o;
- char *oldval, *newval;
-
- if (args_has(args, 'a')) {
- oldval = options_get_string(oo, oe->name);
- xasprintf(&newval, "%s%s", oldval, value);
- } else
- newval = xstrdup(value);
-
- o = options_set_string(oo, oe->name, "%s", newval);
+ struct args *args = self->args;
+ int append = args_has(args, 'a');
- free(newval);
- return (o);
+ return (options_set_string(oo, oe->name, append, "%s", value));
}
/* Set a number option. */
@@ -544,11 +533,10 @@ cmd_set_option_style(struct cmd *self, struct cmdq_item *item,
const char *value)
{
struct args *args = self->args;
+ int append = args_has(args, 'a');
struct options_entry *o;
- int append;
- append = args_has(args, 'a');
- if ((o = options_set_style(oo, oe->name, value, append)) == NULL) {
+ if ((o = options_set_style(oo, oe->name, append, value)) == NULL) {
cmdq_error(item, "bad style: %s", value);
return (NULL);
}