summaryrefslogtreecommitdiff
path: root/compat
diff options
context:
space:
mode:
authorLibravatar Johannes Schindelin <johannes.schindelin@gmx.de>2016-01-26 15:34:43 +0100
committerLibravatar Junio C Hamano <gitster@pobox.com>2016-01-26 13:42:59 -0800
commit1fc7bf79e5f907b85aa0213c0ad4969506cf8f2b (patch)
treecf996e6ac4771e6362b5ccbabe567966bd0af284 /compat
parentmingw: factor out Windows specific environment setup (diff)
downloadtgif-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.c23
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) */