From 4a6c06d6a981d05c5ab3dbc7a365ff740fbb7feb Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 4 Jun 2015 14:29:33 +0000 Subject: Make unsetting a global option restore it to the default. Diff lying around for a while, I have forgotten who suggested it :-/. --- cmd-set-option.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'cmd-set-option.c') 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); } -- cgit