Skip to content

Commit

Permalink
Win32: patch Windows environment on startup
Browse files Browse the repository at this point in the history
Fix Windows specific environment settings on startup rather than checking
for special values on every getenv call.

As a side effect, this makes the patched environment (i.e. with properly
initialized TMPDIR and TERM) available to child processes.

Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Stepan Kasal <kasal@ucw.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
kblees authored and gitster committed Jul 21, 2014
1 parent 343ff06 commit 6dc7154
Showing 1 changed file with 12 additions and 13 deletions.
25 changes: 12 additions & 13 deletions compat/mingw.c
Original file line number Diff line number Diff line change
Expand Up @@ -1251,7 +1251,7 @@ static int do_putenv(char **env, const char *name, int size, int free_old)
return size;
}

static char *do_getenv(const char *name)
char *mingw_getenv(const char *name)
{
char *value;
int pos = bsearchenv(environ, name, environ_size - 1);
Expand All @@ -1261,18 +1261,6 @@ static char *do_getenv(const char *name)
return value ? &value[1] : NULL;
}

char *mingw_getenv(const char *name)
{
char *result = do_getenv(name);
if (!result && !strcmp(name, "TMPDIR")) {
/* on Windows it is TMP and TEMP */
result = do_getenv("TMP");
if (!result)
result = do_getenv("TEMP");
}
return result;
}

int mingw_putenv(const char *namevalue)
{
ALLOC_GROW(environ, (environ_size + 1) * sizeof(char*), environ_alloc);
Expand Down Expand Up @@ -2114,6 +2102,17 @@ void mingw_startup()
/* sort environment for O(log n) getenv / putenv */
qsort(environ, i, sizeof(char*), compareenv);

/* fix Windows specific environment settings */

/* on Windows it is TMP and TEMP */
if (!mingw_getenv("TMPDIR")) {
const char *tmp = mingw_getenv("TMP");
if (!tmp)
tmp = mingw_getenv("TEMP");
if (tmp)
setenv("TMPDIR", tmp, 1);
}

/* initialize critical section for waitpid pinfo_t list */
InitializeCriticalSection(&pinfo_cs);

Expand Down

0 comments on commit 6dc7154

Please sign in to comment.