degesch: split handle_command_help()
This commit is contained in:
parent
f907f1e3dc
commit
1ba6db50b6
61
degesch.c
61
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))
|
||||
|
Loading…
Reference in New Issue
Block a user