diff options
author | nicm <nicm> | 2015-06-04 14:29:33 +0000 |
---|---|---|
committer | nicm <nicm> | 2015-06-04 14:29:33 +0000 |
commit | 4a6c06d6a981d05c5ab3dbc7a365ff740fbb7feb (patch) | |
tree | e6cc87952f20905e67dc951a03b8994ca22597ac /cmd-set-option.c | |
parent | a863834574ec02b87ff0e7245ef31f0d4543ab34 (diff) | |
download | rtmux-4a6c06d6a981d05c5ab3dbc7a365ff740fbb7feb.tar.gz rtmux-4a6c06d6a981d05c5ab3dbc7a365ff740fbb7feb.tar.bz2 rtmux-4a6c06d6a981d05c5ab3dbc7a365ff740fbb7feb.zip |
Make unsetting a global option restore it to the default. Diff lying
around for a while, I have forgotten who suggested it :-/.
Diffstat (limited to 'cmd-set-option.c')
-rw-r--r-- | cmd-set-option.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/cmd-set-option.c b/cmd-set-option.c index 83d31b93..77c7d7c2 100644 --- a/cmd-set-option.c +++ b/cmd-set-option.c @@ -266,16 +266,25 @@ cmd_set_option_unset(struct cmd *self, struct cmd_q *cmdq, { struct args *args = self->args; - if (args_has(args, 'g')) { - cmdq_error(cmdq, "can't unset global option: %s", oe->name); - return (-1); - } if (value != NULL) { cmdq_error(cmdq, "value passed to unset option: %s", oe->name); return (-1); } - options_remove(oo, oe->name); + 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); + break; + case OPTIONS_TABLE_STYLE: + options_set_style(oo, oe->name, oe->default_str, 0); + break; + default: + options_set_number(oo, oe->name, oe->default_num); + break; + } + } else + options_remove(oo, oe->name); return (0); } |