aboutsummaryrefslogtreecommitdiffstats
path: root/run-command.c
diff options
context:
space:
mode:
Diffstat (limited to 'run-command.c')
-rw-r--r--run-command.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/run-command.c b/run-command.c
index 59e433bf91..60a79db8f0 100644
--- a/run-command.c
+++ b/run-command.c
@@ -274,12 +274,14 @@ int sane_execvp(const char *file, char * const argv[])
return -1;
}
-static const char *git_shell_path(void)
+static char *git_shell_path(void)
{
#ifndef GIT_WINDOWS_NATIVE
- return SHELL_PATH;
+ return xstrdup(SHELL_PATH);
#else
- return "sh";
+ char *p = locate_in_PATH("sh");
+ convert_slashes(p);
+ return p;
#endif
}
@@ -289,7 +291,7 @@ static const char **prepare_shell_cmd(struct strvec *out, const char **argv)
BUG("shell command is empty");
if (strcspn(argv[0], "|&;<>()$`\\\"' \t\n*?[#~=%") != strlen(argv[0])) {
- strvec_push(out, git_shell_path());
+ strvec_push_nodup(out, git_shell_path());
strvec_push(out, "-c");
/*