diff options
| author | Junio C Hamano <gitster@pobox.com> | 2012-04-16 12:42:54 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2012-04-16 12:42:55 -0700 |
| commit | fa0ba729dc5e0af0b0165e4e12904bfa3f39f9db (patch) | |
| tree | dc71f101ad7740d4f65a1db19270fbc97b9cad64 | |
| parent | Merge branch 'wk/gitweb-snapshot-use-if-modified-since' (diff) | |
| parent | Use SHELL_PATH from build system in run_command.c:prepare_shell_cmd (diff) | |
| download | git-fa0ba729dc5e0af0b0165e4e12904bfa3f39f9db.tar.gz git-fa0ba729dc5e0af0b0165e4e12904bfa3f39f9db.zip | |
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
| -rw-r--r-- | Makefile | 7 | ||||
| -rw-r--r-- | run-command.c | 6 |
2 files changed, 12 insertions, 1 deletions
@@ -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) diff --git a/run-command.c b/run-command.c index 1db8abf984..2af3e0fa52 100644 --- a/run-command.c +++ b/run-command.c @@ -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) |
