diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-07-29 12:38:17 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-07-29 12:38:17 -0700 |
commit | 2f72ebfcd02b06a19e6c5429fcfc78b5fc754144 (patch) | |
tree | 0b83fd7835ecd4e390e5814a7cecf56f461c3cba | |
parent | Merge branch 'sr/gpg-interface-stop-at-the-end' into maint (diff) | |
parent | mingw: support spawning programs containing spaces in their names (diff) | |
download | tgif-2f72ebfcd02b06a19e6c5429fcfc78b5fc754144.tar.xz |
Merge branch 'js/mingw-spawn-with-spaces-in-path' into maint
Window 7 update ;-)
* js/mingw-spawn-with-spaces-in-path:
mingw: support spawning programs containing spaces in their names
-rw-r--r-- | compat/mingw.c | 8 | ||||
-rwxr-xr-x | t/t0061-run-command.sh | 6 |
2 files changed, 11 insertions, 3 deletions
diff --git a/compat/mingw.c b/compat/mingw.c index 9b6d2400e1..6d7fc07a48 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -1437,7 +1437,9 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **deltaen si.hStdOutput = winansi_get_osfhandle(fhout); si.hStdError = winansi_get_osfhandle(fherr); - if (xutftowcs_path(wcmd, cmd) < 0) + if (*argv && !strcmp(cmd, *argv)) + wcmd[0] = L'\0'; + else if (xutftowcs_path(wcmd, cmd) < 0) return -1; if (dir && xutftowcs_path(wdir, dir) < 0) return -1; @@ -1466,8 +1468,8 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **deltaen wenvblk = make_environment_block(deltaenv); memset(&pi, 0, sizeof(pi)); - ret = CreateProcessW(wcmd, wargs, NULL, NULL, TRUE, flags, - wenvblk, dir ? wdir : NULL, &si, &pi); + ret = CreateProcessW(*wcmd ? wcmd : NULL, wargs, NULL, NULL, TRUE, + flags, wenvblk, dir ? wdir : NULL, &si, &pi); free(wenvblk); free(wargs); diff --git a/t/t0061-run-command.sh b/t/t0061-run-command.sh index ebc49561ac..015fac8b5d 100755 --- a/t/t0061-run-command.sh +++ b/t/t0061-run-command.sh @@ -210,4 +210,10 @@ test_expect_success MINGW 'verify curlies are quoted properly' ' test_cmp expect actual ' +test_expect_success MINGW 'can spawn with argv[0] containing spaces' ' + cp "$GIT_BUILD_DIR/t/helper/test-fake-ssh$X" ./ && + test_must_fail "$PWD/test-fake-ssh$X" 2>err && + grep TRASH_DIRECTORY err +' + test_done |