mirror of
https://github.com/git/git.git
synced 2024-11-08 02:03:12 +01:00
Merge branch 'bw/spawn-via-shell-path'
"sh" on the user's PATH may be utterly broken on some systems; consistently use SHELL_PATH even from inside run-command API. By Ben Walton * bw/spawn-via-shell-path: Use SHELL_PATH from build system in run_command.c:prepare_shell_cmd
This commit is contained in:
commit
fa0ba729dc
2 changed files with 12 additions and 1 deletions
7
Makefile
7
Makefile
|
@ -1849,6 +1849,13 @@ DEFAULT_PAGER_CQ_SQ = $(subst ','\'',$(DEFAULT_PAGER_CQ))
|
|||
BASIC_CFLAGS += -DDEFAULT_PAGER='$(DEFAULT_PAGER_CQ_SQ)'
|
||||
endif
|
||||
|
||||
ifdef SHELL_PATH
|
||||
SHELL_PATH_CQ = "$(subst ",\",$(subst \,\\,$(SHELL_PATH)))"
|
||||
SHELL_PATH_CQ_SQ = $(subst ','\'',$(SHELL_PATH_CQ))
|
||||
|
||||
BASIC_CFLAGS += -DSHELL_PATH='$(SHELL_PATH_CQ_SQ)'
|
||||
endif
|
||||
|
||||
ALL_CFLAGS += $(BASIC_CFLAGS)
|
||||
ALL_LDFLAGS += $(BASIC_LDFLAGS)
|
||||
|
||||
|
|
|
@ -4,6 +4,10 @@
|
|||
#include "sigchain.h"
|
||||
#include "argv-array.h"
|
||||
|
||||
#ifndef SHELL_PATH
|
||||
# define SHELL_PATH "/bin/sh"
|
||||
#endif
|
||||
|
||||
struct child_to_clean {
|
||||
pid_t pid;
|
||||
struct child_to_clean *next;
|
||||
|
@ -90,7 +94,7 @@ static const char **prepare_shell_cmd(const char **argv)
|
|||
die("BUG: shell command is empty");
|
||||
|
||||
if (strcspn(argv[0], "|&;<>()$`\\\"' \t\n*?[#~=%") != strlen(argv[0])) {
|
||||
nargv[nargc++] = "sh";
|
||||
nargv[nargc++] = SHELL_PATH;
|
||||
nargv[nargc++] = "-c";
|
||||
|
||||
if (argc < 2)
|
||||
|
|
Loading…
Reference in a new issue