mirror of
https://github.com/git/git.git
synced 2026-01-21 08:00:54 +00:00
Add a Windows-specific fallback to getenv("HOME");
This fixes msysGit issue 482 properly. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
@@ -158,7 +158,7 @@ static int get_value(const char *key_, const char *regex_)
|
|||||||
|
|
||||||
local = config_exclusive_filename;
|
local = config_exclusive_filename;
|
||||||
if (!local) {
|
if (!local) {
|
||||||
const char *home = getenv("HOME");
|
const char *home = get_home_directory();
|
||||||
local = repo_config = git_pathdup("config");
|
local = repo_config = git_pathdup("config");
|
||||||
if (git_config_global() && home)
|
if (git_config_global() && home)
|
||||||
global = xstrdup(mkpath("%s/.gitconfig", home));
|
global = xstrdup(mkpath("%s/.gitconfig", home));
|
||||||
@@ -348,7 +348,7 @@ int cmd_config(int argc, const char **argv, const char *unused_prefix)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (use_global_config) {
|
if (use_global_config) {
|
||||||
char *home = getenv("HOME");
|
char *home = get_home_directory();
|
||||||
if (home) {
|
if (home) {
|
||||||
char *user_config = xstrdup(mkpath("%s/.gitconfig", home));
|
char *user_config = xstrdup(mkpath("%s/.gitconfig", home));
|
||||||
config_exclusive_filename = user_config;
|
config_exclusive_filename = user_config;
|
||||||
|
|||||||
@@ -1709,3 +1709,21 @@ struct dirent *mingw_readdir(DIR *dir)
|
|||||||
return (struct dirent*)&dir->dd_dir;
|
return (struct dirent*)&dir->dd_dir;
|
||||||
}
|
}
|
||||||
#endif // !NO_MINGW_REPLACE_READDIR
|
#endif // !NO_MINGW_REPLACE_READDIR
|
||||||
|
|
||||||
|
const char *get_windows_home_directory()
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -334,3 +334,6 @@ struct dirent *mingw_readdir(DIR *dir);
|
|||||||
* Used by Pthread API implementation for Windows
|
* Used by Pthread API implementation for Windows
|
||||||
*/
|
*/
|
||||||
extern int err_win_to_posix(DWORD winerr);
|
extern int err_win_to_posix(DWORD winerr);
|
||||||
|
|
||||||
|
extern const char *get_windows_home_directory();
|
||||||
|
#define get_home_directory() get_windows_home_directory()
|
||||||
|
|||||||
2
config.c
2
config.c
@@ -788,7 +788,7 @@ int git_config(config_fn_t fn, void *data)
|
|||||||
found += 1;
|
found += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
home = getenv("HOME");
|
home = get_home_directory();
|
||||||
if (git_config_global() && home) {
|
if (git_config_global() && home) {
|
||||||
char *user_config = xstrdup(mkpath("%s/.gitconfig", home));
|
char *user_config = xstrdup(mkpath("%s/.gitconfig", home));
|
||||||
if (!access(user_config, R_OK)) {
|
if (!access(user_config, R_OK)) {
|
||||||
|
|||||||
@@ -503,4 +503,8 @@ int remove_or_warn(unsigned int mode, const char *path);
|
|||||||
#define mark_as_git_dir(x) /* noop */
|
#define mark_as_git_dir(x) /* noop */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef get_home_directory
|
||||||
|
#define get_home_directory() getenv("HOME")
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
2
path.c
2
path.c
@@ -315,7 +315,7 @@ char *expand_user_path(const char *path)
|
|||||||
const char *username = path + 1;
|
const char *username = path + 1;
|
||||||
size_t username_len = first_slash - username;
|
size_t username_len = first_slash - username;
|
||||||
if (username_len == 0) {
|
if (username_len == 0) {
|
||||||
const char *home = getenv("HOME");
|
const char *home = get_home_directory();
|
||||||
strbuf_add(&user_path, home, strlen(home));
|
strbuf_add(&user_path, home, strlen(home));
|
||||||
} else {
|
} else {
|
||||||
struct passwd *pw = getpw_str(username, username_len);
|
struct passwd *pw = getpw_str(username, username_len);
|
||||||
|
|||||||
Reference in New Issue
Block a user