Fix usage/help search for subcommands.
This makes it so that the usage/help command properly uses the whole command, including subcommand, in the search for help information. This previously caused erroneous output from the usage command handler. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
This commit is contained in:
parent
be01786186
commit
9d167d62f2
|
@ -960,18 +960,45 @@ static COMMAND_HELPER(command_help_show, struct command *c, unsigned n,
|
||||||
COMMAND_HANDLER(handle_help_command)
|
COMMAND_HANDLER(handle_help_command)
|
||||||
{
|
{
|
||||||
bool full = strcmp(CMD_NAME, "help") == 0;
|
bool full = strcmp(CMD_NAME, "help") == 0;
|
||||||
|
int retval;
|
||||||
struct command *c = CMD_CTX->commands;
|
struct command *c = CMD_CTX->commands;
|
||||||
|
char *match = NULL;
|
||||||
|
|
||||||
const char *match = "";
|
|
||||||
if (CMD_ARGC == 0)
|
if (CMD_ARGC == 0)
|
||||||
match = "";
|
match = "";
|
||||||
else if (CMD_ARGC == 1)
|
else if (CMD_ARGC >= 1) {
|
||||||
match = CMD_ARGV[0];
|
unsigned i;
|
||||||
else
|
|
||||||
|
for (i = 0; i < CMD_ARGC; ++i) {
|
||||||
|
if (NULL != match) {
|
||||||
|
char *prev = match;
|
||||||
|
|
||||||
|
match = alloc_printf("%s %s", match,
|
||||||
|
CMD_ARGV[i]);
|
||||||
|
free(prev);
|
||||||
|
if (NULL == match) {
|
||||||
|
LOG_ERROR("unable to build "
|
||||||
|
"search string");
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
match = alloc_printf("%s", CMD_ARGV[i]);
|
||||||
|
if (NULL == match) {
|
||||||
|
LOG_ERROR("unable to build "
|
||||||
|
"search string");
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else
|
||||||
return ERROR_COMMAND_SYNTAX_ERROR;
|
return ERROR_COMMAND_SYNTAX_ERROR;
|
||||||
|
|
||||||
return CALL_COMMAND_HANDLER(command_help_show_list, c, 0, full, match);
|
retval = CALL_COMMAND_HANDLER(command_help_show_list,
|
||||||
|
c, 0, full, match);
|
||||||
|
|
||||||
|
if (CMD_ARGC >= 1)
|
||||||
|
free(match);
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int command_unknown_find(unsigned argc, Jim_Obj *const *argv,
|
static int command_unknown_find(unsigned argc, Jim_Obj *const *argv,
|
||||||
|
|
Loading…
Reference in New Issue