diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-07-19 11:30:23 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-07-19 11:30:23 -0700 |
commit | fc613d2d6eadbc57780e4151ef8f89d07cb959cc (patch) | |
tree | 96dc4a6ce0e87772e8930c2c7fb41b0efd010d05 /compat/mingw.c | |
parent | Merge branch 'ea/merge-code-cleanup' (diff) | |
parent | mingw: initialize HOME on startup (diff) | |
download | tgif-fc613d2d6eadbc57780e4151ef8f89d07cb959cc.tar.xz |
Merge branch 'kb/mingw-set-home'
Windows port update.
* kb/mingw-set-home:
mingw: initialize HOME on startup
Diffstat (limited to 'compat/mingw.c')
-rw-r--r-- | compat/mingw.c | 24 |
1 files changed, 24 insertions, 0 deletions
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) |