summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm>2017-01-18 08:40:50 +0000
committernicm <nicm>2017-01-18 08:40:50 +0000
commit373541104b745f58a5d6eaba81444cf1ccb0e595 (patch)
tree7bf2e6ab4c5b4e388af6d41f307e3d6bc0c75868
parent6b6b0e91d0e3ee5d92f67f383172037bf1348880 (diff)
options_match needs to explicitly check for user options.
-rw-r--r--cmd-show-options.c3
-rw-r--r--options.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/cmd-show-options.c b/cmd-show-options.c
index b9bfe5ee..5929e915 100644
--- a/cmd-show-options.c
+++ b/cmd-show-options.c
@@ -131,7 +131,8 @@ cmd_show_options_one(struct cmd *self, struct cmdq_item *item,
cmdq_error(item, "ambiguous option: %s", name);
return (CMD_RETURN_ERROR);
}
- if (options_match_get(oo, name, &idx, 0, &ambiguous) != NULL)
+ if (*name != '@' &&
+ options_match_get(oo, name, &idx, 0, &ambiguous) != NULL)
return (CMD_RETURN_NORMAL);
cmdq_error(item, "unknown option: %s", name);
return (CMD_RETURN_ERROR);
diff --git a/options.c b/options.c
index 9c260e26..0375c0a4 100644
--- a/options.c
+++ b/options.c
@@ -403,6 +403,12 @@ options_match(const char *s, int *idx, int* ambiguous)
name = options_parse(s, idx);
namelen = strlen(name);
+ *idx = -1;
+ if (*name == '@') {
+ *ambiguous = 0;
+ return (xstrdup(name));
+ }
+
found = NULL;
for (oe = options_table; oe->name != NULL; oe++) {
if (strcmp(oe->name, name) == 0) {