From df55c9cbc3ea79c51d5f41a628439283e94a87fd Mon Sep 17 00:00:00 2001 From: Christian Couder Date: Sun, 2 Dec 2007 06:07:40 +0100 Subject: [PATCH] git-help: add -i|--info option to display info page. "git help --info subcommand" will now call "info git-subcommand". Signed-off-by: Christian Couder Signed-off-by: Junio C Hamano --- help.c | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/help.c b/help.c index 37a9c25db..0f1cb7172 100644 --- a/help.c +++ b/help.c @@ -239,24 +239,32 @@ void list_common_cmds_help(void) } } -static void show_man_page(const char *git_cmd) +static const char *cmd_to_page(const char *git_cmd) { - const char *page; - if (!prefixcmp(git_cmd, "git")) - page = git_cmd; + 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; - page = p; + return p; } +} +static void show_man_page(const char *git_cmd) +{ + const char *page = cmd_to_page(git_cmd); execlp("man", "man", page, NULL); } +static void show_info_page(const char *git_cmd) +{ + const char *page = cmd_to_page(git_cmd); + execlp("info", "info", page, NULL); +} + void help_unknown_cmd(const char *cmd) { fprintf(stderr, "git: '%s' is not a git-command. See 'git --help'.\n", cmd); @@ -269,10 +277,8 @@ int cmd_version(int argc, const char **argv, const char *prefix) return 0; } -int cmd_help(int argc, const char **argv, const char *prefix) +static void check_help_cmd(const char *help_cmd) { - const char *help_cmd = argc > 1 ? argv[1] : NULL; - if (!help_cmd) { printf("usage: %s\n\n", git_usage_string); list_common_cmds_help(); @@ -284,6 +290,19 @@ int cmd_help(int argc, const char **argv, const char *prefix) list_commands(); exit(0); } +} + +int cmd_help(int argc, const char **argv, const char *prefix) +{ + const char *help_cmd = argc > 1 ? argv[1] : NULL; + check_help_cmd(help_cmd); + + if (!strcmp(help_cmd, "--info") || !strcmp(help_cmd, "-i")) { + help_cmd = argc > 2 ? argv[2] : NULL; + check_help_cmd(help_cmd); + + show_info_page(help_cmd); + } else show_man_page(help_cmd); -- 2.26.2