diff options
Diffstat (limited to 'builtin/help.c')
| -rw-r--r-- | builtin/help.c | 16 | 
1 files changed, 11 insertions, 5 deletions
diff --git a/builtin/help.c b/builtin/help.c index b3c818ee01..3422e73079 100644 --- a/builtin/help.c +++ b/builtin/help.c @@ -49,7 +49,7 @@ static struct option builtin_help_options[] = {  };  static const char * const builtin_help_usage[] = { -	N_("git help [--all] [--guides] [--man|--web|--info] [command]"), +	N_("git help [--all] [--guides] [--man | --web | --info] [<command>]"),  	NULL  }; @@ -171,7 +171,7 @@ static void exec_man_cmd(const char *cmd, const char *page)  {  	struct strbuf shell_cmd = STRBUF_INIT;  	strbuf_addf(&shell_cmd, "%s %s", cmd, page); -	execl("/bin/sh", "sh", "-c", shell_cmd.buf, (char *)NULL); +	execl(SHELL_PATH, SHELL_PATH, "-c", shell_cmd.buf, (char *)NULL);  	warning(_("failed to exec '%s': %s"), cmd, strerror(errno));  } @@ -321,16 +321,18 @@ static void setup_man_path(void)  {  	struct strbuf new_path = STRBUF_INIT;  	const char *old_path = getenv("MANPATH"); +	char *git_man_path = system_path(GIT_MAN_PATH);  	/* 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, system_path(GIT_MAN_PATH)); +	strbuf_addstr(&new_path, git_man_path);  	strbuf_addch(&new_path, ':');  	if (old_path)  		strbuf_addstr(&new_path, old_path); +	free(git_man_path);  	setenv("MANPATH", new_path.buf, 1);  	strbuf_release(&new_path); @@ -380,8 +382,10 @@ static void show_info_page(const char *git_cmd)  static void get_html_page_path(struct strbuf *page_path, const char *page)  {  	struct stat st; +	char *to_free = NULL; +  	if (!html_path) -		html_path = system_path(GIT_HTML_PATH); +		html_path = to_free = system_path(GIT_HTML_PATH);  	/* Check that we have a git documentation directory. */  	if (!strstr(html_path, "://")) { @@ -392,6 +396,7 @@ static void get_html_page_path(struct strbuf *page_path, const char *page)  	strbuf_init(page_path, 0);  	strbuf_addf(page_path, "%s/%s.html", html_path, page); +	free(to_free);  }  /* @@ -451,7 +456,7 @@ static void list_common_guides_help(void)  int cmd_help(int argc, const char **argv, const char *prefix)  {  	int nongit; -	const char *alias; +	char *alias;  	enum help_format parsed_help_format;  	argc = parse_options(argc, argv, prefix, builtin_help_options, @@ -494,6 +499,7 @@ int cmd_help(int argc, const char **argv, const char *prefix)  	alias = alias_lookup(argv[0]);  	if (alias && !is_git_command(argv[0])) {  		printf_ln(_("`git %s' is aliased to `%s'"), argv[0], alias); +		free(alias);  		return 0;  	}  | 
