diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2016-01-26 15:34:43 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-01-26 13:42:59 -0800 |
commit | 1fc7bf79e5f907b85aa0213c0ad4969506cf8f2b (patch) | |
tree | cf996e6ac4771e6362b5ccbabe567966bd0af284 /compat | |
parent | mingw: factor out Windows specific environment setup (diff) | |
download | tgif-1fc7bf79e5f907b85aa0213c0ad4969506cf8f2b.tar.xz |
mingw: prepare the TMPDIR environment variable for shell scripts
When shell scripts access a $TMPDIR variable containing backslashes,
they will be mistaken for escape characters. Let's not let that happen
by converting them to forward slashes.
This partially fixes t7800 with MSYS2.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'compat')
-rw-r--r-- | compat/mingw.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/compat/mingw.c b/compat/mingw.c index b592000f58..717931e359 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -2046,13 +2046,28 @@ int xwcstoutf(char *utf, const wchar_t *wcs, size_t utflen) static void setup_windows_environment() { + char *tmp = getenv("TMPDIR"); + /* on Windows it is TMP and TEMP */ - if (!getenv("TMPDIR")) { - const char *tmp = getenv("TMP"); - if (!tmp) + if (!tmp) { + if (!(tmp = getenv("TMP"))) tmp = getenv("TEMP"); - if (tmp) + if (tmp) { setenv("TMPDIR", tmp, 1); + tmp = getenv("TMPDIR"); + } + } + + if (tmp) { + /* + * Convert all dir separators to forward slashes, + * to help shell commands called from the Git + * executable (by not mistaking the dir separators + * for escape characters). + */ + for (; *tmp; tmp++) + if (*tmp == '\\') + *tmp = '/'; } /* simulate TERM to enable auto-color (see color.c) */ |