From: Junio C Hamano Date: Fri, 19 Jul 2019 18:30:23 +0000 (-0700) Subject: Merge branch 'kb/mingw-set-home' X-Git-Tag: v2.23.0-rc0~27 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/fc613d2d6eadbc57780e4151ef8f89d07cb959cc?hp=dd0bc5b531f47e54d499e944db5276505319eaef Merge branch 'kb/mingw-set-home' Windows port update. * kb/mingw-set-home: mingw: initialize HOME on startup --- diff --git a/compat/mingw.c b/compat/mingw.c index 4891789771..d9913463be 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -2333,6 +2333,30 @@ static void setup_windows_environment(void) /* simulate TERM to enable auto-color (see color.c) */ if (!getenv("TERM")) setenv("TERM", "cygwin", 1); + + /* calculate HOME if not set */ + if (!getenv("HOME")) { + /* + * try $HOMEDRIVE$HOMEPATH - the home share may be a network + * location, thus also check if the path exists (i.e. is not + * disconnected) + */ + if ((tmp = getenv("HOMEDRIVE"))) { + struct strbuf buf = STRBUF_INIT; + strbuf_addstr(&buf, tmp); + if ((tmp = getenv("HOMEPATH"))) { + strbuf_addstr(&buf, tmp); + if (is_directory(buf.buf)) + setenv("HOME", buf.buf, 1); + else + tmp = NULL; /* use $USERPROFILE */ + } + strbuf_release(&buf); + } + /* use $USERPROFILE if the home share is not available */ + if (!tmp && (tmp = getenv("USERPROFILE"))) + setenv("HOME", tmp, 1); + } } #if !defined(_MSC_VER)