options_match needs to explicitly check for user options.

This commit is contained in:
nicm 2017-01-18 08:40:50 +00:00
parent 6b6b0e91d0
commit 373541104b
2 changed files with 8 additions and 1 deletions

View File

@ -131,7 +131,8 @@ cmd_show_options_one(struct cmd *self, struct cmdq_item *item,
cmdq_error(item, "ambiguous option: %s", name); cmdq_error(item, "ambiguous option: %s", name);
return (CMD_RETURN_ERROR); 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); return (CMD_RETURN_NORMAL);
cmdq_error(item, "unknown option: %s", name); cmdq_error(item, "unknown option: %s", name);
return (CMD_RETURN_ERROR); return (CMD_RETURN_ERROR);

View File

@ -403,6 +403,12 @@ options_match(const char *s, int *idx, int* ambiguous)
name = options_parse(s, idx); name = options_parse(s, idx);
namelen = strlen(name); namelen = strlen(name);
*idx = -1;
if (*name == '@') {
*ambiguous = 0;
return (xstrdup(name));
}
found = NULL; found = NULL;
for (oe = options_table; oe->name != NULL; oe++) { for (oe = options_table; oe->name != NULL; oe++) {
if (strcmp(oe->name, name) == 0) { if (strcmp(oe->name, name) == 0) {