[PATCH] help: check early if we have a command, if not try a documentation topic
From: Christian Couder <hidden>
Date: 2016-06-15 22:44:48
Subsystem:
the rest · Maintainer:
Linus Torvalds
Before this patch, something like "git help tutorial" did not work, people had to use "git help gittutorial" which is not very intuitive. This patch uses the "is_git_command" function to test early if the argument passed to "git help" is a git command, and if this is not the case then we prefix the argument with "git" instead of "git-". This way, things like "git help tutorial" or "git help glossary" will work fine. The little downside of this patch is that the "is_git_command" is a little bit slow. Signed-off-by: Christian Couder <redacted> --- help.c | 23 +++++++++++++++-------- 1 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/help.c b/help.c
index 8aff94c..ef2e6b7 100644
--- a/help.c
+++ b/help.c@@ -527,20 +527,27 @@ static int is_git_command(const char *s) is_in_cmdlist(&other_cmds, s); } +static const char *add_prefix(const char *prefix, const char *cmd) +{ + size_t pre_len = strlen(prefix); + size_t cmd_len = strlen(cmd); + char *p = xmalloc(pre_len + cmd_len + 1); + strcpy(p, prefix); + strcpy(p + pre_len, cmd); + p[pre_len + cmd_len] = 0; + return p; +} + static const char *cmd_to_page(const char *git_cmd) { if (!git_cmd) return "git"; else if (!prefixcmp(git_cmd, "git")) return git_cmd; - else { - int page_len = strlen(git_cmd) + 4; - char *p = xmalloc(page_len + 1); - strcpy(p, "git-"); - strcpy(p + 4, git_cmd); - p[page_len] = 0; - return p; - } + else if (is_git_command(git_cmd)) + return add_prefix("git-", git_cmd); + else + return add_prefix("git", git_cmd); } static void setup_man_path(void)
--
1.5.6.109.g4f927.dirty