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.schinde...@gmx.de>
---
 compat/mingw.c | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/compat/mingw.c b/compat/mingw.c
index a12197e..db92f5d 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -2042,13 +2042,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) */
-- 
2.7.0.windows.1.7.g55a05c8


--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to