From: Junio C Hamano Date: Mon, 10 Dec 2007 09:22:42 +0000 (-0800) Subject: Merge branch 'master' into cc/help X-Git-Tag: v1.5.4-rc0~1^2~8 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=7be2b6e02b4f2a1b4812764f65b12cafb11a934e;p=git.git Merge branch 'master' into cc/help This is to primarily pull in MANPATH tweak and help.txt formatting fix from the master branch. --- 7be2b6e02b4f2a1b4812764f65b12cafb11a934e diff --cc Makefile index 932b0d434,4cdb84ba6..429bc1ddb --- a/Makefile +++ b/Makefile @@@ -745,9 -747,9 +749,10 @@@ ETC_GITCONFIG_SQ = $(subst ','\'',$(ETC DESTDIR_SQ = $(subst ','\'',$(DESTDIR)) bindir_SQ = $(subst ','\'',$(bindir)) + mandir_SQ = $(subst ','\'',$(mandir)) gitexecdir_SQ = $(subst ','\'',$(gitexecdir)) template_dir_SQ = $(subst ','\'',$(template_dir)) +htmldir_SQ = $(subst ','\'',$(htmldir)) prefix_SQ = $(subst ','\'',$(prefix)) SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) diff --cc help.c index ec0d0155a,f935887d3..56477f450 --- a/help.c +++ b/help.c @@@ -239,25 -239,43 +239,47 @@@ void list_common_cmds_help(void } } +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; + } +} + + static void setup_man_path(void) + { + struct strbuf new_path; + const char *old_path = getenv("MANPATH"); + + strbuf_init(&new_path, 0); + + /* We should always put ':' after our path. If there is no + * old_path, the ':' at the end will let 'man' to try + * system-wide paths after ours to find the manual page. If + * there is old_path, we need ':' as delimiter. */ + strbuf_addstr(&new_path, GIT_MAN_PATH); + strbuf_addch(&new_path, ':'); + if (old_path) + strbuf_addstr(&new_path, old_path); + + setenv("MANPATH", new_path.buf, 1); + + strbuf_release(&new_path); + } + static void show_man_page(const char *git_cmd) { - const char *page; - - if (!prefixcmp(git_cmd, "git")) - page = 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; - } - + const char *page = cmd_to_page(git_cmd); + setup_man_path(); execlp("man", "man", page, NULL); }