Moved the "available commands" print output to the top level help command handler to avoid repitition across all commands with sub-commands. Adjusted the redir command handler to no longer print out available commands. Adjusted "OK" message to be shared by all cases to avoid duplicates.
Signed-off-by: Greg Bellows <greg.bell...@linaro.org> --- android-console.c | 20 +++++--------------- monitor.c | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/android-console.c b/android-console.c index c2e41da..be573b5 100644 --- a/android-console.c +++ b/android-console.c @@ -242,8 +242,7 @@ void android_console_redir_remove(Monitor *mon, const QDict *qdict) static const char *redir_list_help = "list current port redirections. " - "use 'redir add' and 'redir del' to add and remove them\n" - "OK\n"; + "use 'redir add' and 'redir del' to add and remove them\n"; static const char *redir_add_help = "add a new port redirection, arguments must be:\n" @@ -258,15 +257,13 @@ static const char *redir_add_help = "\n" "as an example, 'redir tcp:5000:6000' will allow any packets sent to\n" "the host's TCP port 5000 to be routed to TCP port 6000 of the " - "emulated device\n" - "OK\n"; + "emulated device\n"; static const char *redir_del_help = "remove a port redirecion that was created with 'redir add', " - "arguments must be:\n\n" + "arguments must be:\n" " redir del <protocol>:<host-port>\n\n" - "see the 'help redir add' for the meaning of <protocol> and <host-port>\n" - "OK\n"; + "see the 'help redir add' for the meaning of <protocol> and <host-port>\n"; void android_console_redir(Monitor *mon, const QDict *qdict) { @@ -291,12 +288,5 @@ void android_console_redir(Monitor *mon, const QDict *qdict) "PORT redirection from the host to the device\n" "as an example, 'redir tcp:5000:6000' will route " "any packet sent to the host's TCP port 5000\n" - "to TCP port 6000 of the emulated device\n" - "\n" - "available sub-commands:\n" - " list list current redirections\n" - " add add new redirection\n" - " del remove existing redirection\n" - "\n%s\n", - helptext ? "OK" : "KO: missing sub-command"); + "to TCP port 6000 of the emulated device\n"); } diff --git a/monitor.c b/monitor.c index f071878..4222b7a 100644 --- a/monitor.c +++ b/monitor.c @@ -943,7 +943,7 @@ static void do_help_cmd(Monitor *mon, const QDict *qdict) static void android_console_help(Monitor *mon, const QDict *qdict) { const char *name = qdict_get_try_str(qdict, "helptext"); - const mon_cmd_t *cmd; + const mon_cmd_t *cmd, *subcmd; const mon_cmd_t *cmds = mon->cmd_table; char *args[MAX_ARGS]; int nb_args = 0; @@ -957,7 +957,7 @@ static void android_console_help(Monitor *mon, const QDict *qdict) monitor_printf(mon, " %-15s %s\n", cmd->name, cmd->help); } monitor_printf(mon, - "\ntry 'help <command>' for command-specific help\n"); + "\ntry 'help <command>' for command-specific help\nOK\n"); return; } @@ -1000,15 +1000,23 @@ static void android_console_help(Monitor *mon, const QDict *qdict) parent_cmd->mhandler.cmd(mon, qdict); } else if (cmd->sub_table) { cmd->mhandler.cmd(mon, qdict); + monitor_printf(mon, "\navailable sub-commands:\n"); + for (subcmd = cmd->sub_table; subcmd->name; subcmd++) { + monitor_printf(mon, " %-15s %s\n", + subcmd->name, subcmd->help); + } + monitor_printf(mon, "\n"); } else { - monitor_printf(mon, "%s\nOK\n", cmd->help); + monitor_printf(mon, "%s\n", cmd->help); } - return; + break; } parent_cmd = cmd; cmds = cmd->sub_table; } + + monitor_printf(mon, "OK\n"); } static void do_trace_event_set_state(Monitor *mon, const QDict *qdict) -- 1.8.3.2