diff --git a/degesch.c b/degesch.c index 6e3d6a6..fdfab28 100644 --- a/degesch.c +++ b/degesch.c @@ -7494,43 +7494,50 @@ try_handle_command_help_option (struct app_context *ctx, const char *name) return true; } +static bool +show_command_list (struct app_context *ctx) +{ + log_global_indent (ctx, ""); + log_global_indent (ctx, "Commands:"); + + int longest = 0; + for (size_t i = 0; i < N_ELEMENTS (g_command_handlers); i++) + { + int len = strlen (g_command_handlers[i].name); + longest = MAX (longest, len); + } + for (size_t i = 0; i < N_ELEMENTS (g_command_handlers); i++) + { + struct command_handler *handler = &g_command_handlers[i]; + log_global_indent (ctx, " #&s", xstrdup_printf + ("%-*s %s", longest, handler->name, handler->description)); + } + return true; +} + +static bool +show_command_help (struct app_context *ctx, struct command_handler *handler) +{ + log_global_indent (ctx, ""); + log_global_indent (ctx, "#s: #s", handler->name, handler->description); + log_global_indent (ctx, " Arguments: #s", + handler->usage ? handler->usage : "(none)"); + return true; +} + static bool handle_command_help (struct handler_args *a) { struct app_context *ctx = a->ctx; if (!*a->arguments) - { - log_global_indent (ctx, ""); - log_global_indent (ctx, "Commands:"); - - int longest = 0; - for (size_t i = 0; i < N_ELEMENTS (g_command_handlers); i++) - { - int len = strlen (g_command_handlers[i].name); - longest = MAX (longest, len); - } - for (size_t i = 0; i < N_ELEMENTS (g_command_handlers); i++) - { - struct command_handler *handler = &g_command_handlers[i]; - log_global_indent (ctx, " #&s", xstrdup_printf - ("%-*s %s", longest, handler->name, handler->description)); - } - return true; - } + return show_command_list (ctx); char *command = cut_word (&a->arguments); for (size_t i = 0; i < N_ELEMENTS (g_command_handlers); i++) { struct command_handler *handler = &g_command_handlers[i]; - if (strcasecmp_ascii (command, handler->name)) - continue; - - log_global_indent (ctx, ""); - log_global_indent (ctx, "#s: #s", - handler->name, handler->description); - log_global_indent (ctx, " Arguments: #s", - handler->usage ? handler->usage : "(none)"); - return true; + if (!strcasecmp_ascii (command, handler->name)) + return show_command_help (ctx, handler); } if (!try_handle_command_help_option (ctx, command))