From 1ba6db50b6004417108aeb451f07cabb9299c841 Mon Sep 17 00:00:00 2001
From: Přemysl Janouch
Date: Thu, 9 Jul 2015 00:10:46 +0200
Subject: degesch: split handle_command_help()
---
degesch.c | 61 ++++++++++++++++++++++++++++++++++---------------------------
1 file changed, 34 insertions(+), 27 deletions(-)
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))
--
cgit v1.2.3-70-g09d2