From: Øyvind H. <go...@us...> - 2009-12-21 11:20:39
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Main OpenOCD repository". The branch, master has been updated via b5962b23d83fa692e023512a5b63e736a06d6422 (commit) from 34bbbe796178a85305dcd2ffb3dae02b6a372e55 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b5962b23d83fa692e023512a5b63e736a06d6422 Author: Oyvind Harboe <oyv...@zy...> Date: Sun Dec 20 22:14:10 2009 +0100 help: list all commands that match string Restore behavior where help lists all commands that match string passed to help. Signed-off-by: Oyvind Harboe <oyv...@zy...> diff --git a/src/helper/command.c b/src/helper/command.c index 76050ef..b991544 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -860,13 +860,13 @@ static COMMAND_HELPER(command_help_find, struct command *head, } static COMMAND_HELPER(command_help_show, struct command *c, unsigned n, - bool show_help); + bool show_help, const char *match); static COMMAND_HELPER(command_help_show_list, struct command *head, unsigned n, - bool show_help) + bool show_help, const char *match) { for (struct command *c = head; NULL != c; c = c->next) - CALL_COMMAND_HANDLER(command_help_show, c, n, show_help); + CALL_COMMAND_HANDLER(command_help_show, c, n, show_help, match); return ERROR_OK; } @@ -899,7 +899,7 @@ static void command_help_show_wrap(const char *str, unsigned n, unsigned n2) } } static COMMAND_HELPER(command_help_show, struct command *c, unsigned n, - bool show_help) + bool show_help, const char *match) { if (!command_can_run(CMD_CTX, c)) return ERROR_OK; @@ -908,18 +908,30 @@ static COMMAND_HELPER(command_help_show, struct command *c, unsigned n, if (NULL == cmd_name) return -ENOMEM; - command_help_show_indent(n); - LOG_USER_N("%s", cmd_name); + /* If the match string occurs anywhere, we print out + * stuff for this command. */ + bool is_match = (strstr(cmd_name, match) != NULL) || + ((c->usage != NULL) && (strstr(c->usage, match) != NULL)) || + ((c->help != NULL) && (strstr(c->help, match) != NULL)); + + if (is_match) + { + command_help_show_indent(n); + LOG_USER_N("%s", cmd_name); + } free(cmd_name); - if (c->usage) { - LOG_USER_N(" "); - command_help_show_wrap(c->usage, 0, n + 5); + if (is_match) + { + if (c->usage) { + LOG_USER_N(" "); + command_help_show_wrap(c->usage, 0, n + 5); + } + else + LOG_USER_N("\n"); } - else - LOG_USER_N("\n"); - if (show_help) + if (is_match && show_help) { const char *stage_msg; switch (c->mode) { @@ -942,7 +954,7 @@ static COMMAND_HELPER(command_help_show, struct command *c, unsigned n, return ERROR_OK; return CALL_COMMAND_HANDLER(command_help_show_list, - c->children, n, show_help); + c->children, n, show_help, match); } COMMAND_HANDLER(handle_help_command) { @@ -950,14 +962,15 @@ COMMAND_HANDLER(handle_help_command) struct command *c = CMD_CTX->commands; - if (0 == CMD_ARGC) - return CALL_COMMAND_HANDLER(command_help_show_list, c, 0, full); - - int retval = CALL_COMMAND_HANDLER(command_help_find, c, &c); - if (ERROR_OK != retval) - return retval; - - return CALL_COMMAND_HANDLER(command_help_show, c, 0, full); + const char *match = ""; + if (CMD_ARGC == 0) + match = ""; + else if (CMD_ARGC == 1) + match = CMD_ARGV[0]; + else + return ERROR_COMMAND_SYNTAX_ERROR; + + return CALL_COMMAND_HANDLER(command_help_show_list, c, 0, full, match); } static int command_unknown_find(unsigned argc, Jim_Obj *const *argv, @@ -975,6 +988,7 @@ static int command_unknown_find(unsigned argc, Jim_Obj *const *argv, return command_unknown_find(--argc, ++argv, (*out)->children, out, false); } + static int command_unknown(Jim_Interp *interp, int argc, Jim_Obj *const *argv) { const char *cmd_name = Jim_GetString(argv[0], NULL); ----------------------------------------------------------------------- Summary of changes: src/helper/command.c | 56 +++++++++++++++++++++++++++++++------------------ 1 files changed, 35 insertions(+), 21 deletions(-) hooks/post-receive -- Main OpenOCD repository |