Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Add a Windows-specific fallback to getenv("HOME");

This fixes msysGit issue 482 properly.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information...
commit 8909b8fe62181e1c22312a4aa03912bb43f8ad02 1 parent 761b4b7
@dscho dscho authored patthoyts committed
View
4 builtin/config.c
@@ -169,7 +169,7 @@ static int get_value(const char *key_, const char *regex_)
local = given_config_file;
if (!local) {
- const char *home = getenv("HOME");
+ const char *home = get_home_directory();
local = repo_config = git_pathdup("config");
if (home)
global = xstrdup(mkpath("%s/.gitconfig", home));
@@ -379,7 +379,7 @@ int cmd_config(int argc, const char **argv, const char *prefix)
}
if (use_global_config) {
- char *home = getenv("HOME");
+ const char *home = get_home_directory();
if (home) {
char *user_config = xstrdup(mkpath("%s/.gitconfig", home));
given_config_file = user_config;
View
18 compat/mingw.c
@@ -1831,3 +1831,21 @@ pid_t waitpid(pid_t pid, int *status, int options)
errno = EINVAL;
return -1;
}
+
+const char *get_windows_home_directory(void)
+{
+ static const char *home_directory = NULL;
+ struct strbuf buf = STRBUF_INIT;
+
+ if (home_directory)
+ return home_directory;
+
+ home_directory = getenv("HOME");
+ if (home_directory && *home_directory)
+ return home_directory;
+
+ strbuf_addf(&buf, "%s/%s", getenv("HOMEDRIVE"), getenv("HOMEPATH"));
+ home_directory = strbuf_detach(&buf, NULL);
+
+ return home_directory;
+}
View
3  compat/mingw.h
@@ -350,3 +350,6 @@ static int mingw_main(c,v)
* Used by Pthread API implementation for Windows
*/
extern int err_win_to_posix(DWORD winerr);
+
+extern const char *get_windows_home_directory();
+#define get_home_directory() get_windows_home_directory()
View
2  config.c
@@ -946,7 +946,7 @@ int git_config_early(config_fn_t fn, void *data, const char *repo_config)
found += 1;
}
- home = getenv("HOME");
+ home = get_home_directory();
if (home) {
char buf[PATH_MAX];
char *user_config = mksnpath(buf, sizeof(buf), "%s/.gitconfig", home);
View
4 git-compat-util.h
@@ -602,4 +602,8 @@ struct passwd *xgetpwuid_self(void);
#define mark_as_git_dir(x) /* noop */
#endif
+#ifndef get_home_directory
+#define get_home_directory() getenv("HOME")
+#endif
+
#endif
View
2  path.c
@@ -240,7 +240,7 @@ char *expand_user_path(const char *path)
const char *username = path + 1;
size_t username_len = first_slash - username;
if (username_len == 0) {
- const char *home = getenv("HOME");
+ const char *home = get_home_directory();
if (!home)
goto return_null;
strbuf_add(&user_path, home, strlen(home));
Please sign in to comment.
Something went wrong with that request. Please try again.