Special-case the MSYS2_TZ environment variable

With MSys2, the "TZ" environment variable gets filtered out when calling
non-MSys2 executables. The reason is that Windows' time zone handling is
substantially different from the POSIX one.

However, we just taught Git for Windows' fork of the MSys2 runtime to
pass on the timezone in a different environment variable, MSYS2_TZ for
the sole purpose of Git being able to reinterpret it correctly.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
Johannes Schindelin
2015-02-15 16:39:10 +01:00
parent 53ec25dd54
commit 07d4bcc66d

View File

@@ -2219,8 +2219,14 @@ void mingw_startup()
__argv[0] = wcstoutfdup_startup(buffer, _wpgmptr, maxlen);
for (i = 1; i < argc; i++)
__argv[i] = wcstoutfdup_startup(buffer, wargv[i], maxlen);
for (i = 0; wenv[i]; i++)
for (i = 0; wenv[i]; i++) {
environ[i] = wcstoutfdup_startup(buffer, wenv[i], maxlen);
if (!strncasecmp(environ[i], "MSYS2_TZ=", 9)) {
char *to_free = environ[i];
environ[i] = xstrdup(to_free + 6);
free(to_free);
}
}
environ[i] = NULL;
free(buffer);