diff options
| -rw-r--r-- | degesch.c | 61 | 
1 files changed, 34 insertions, 27 deletions
@@ -7495,42 +7495,49 @@ try_handle_command_help_option (struct app_context *ctx, const char *name)  }  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))  | 
