diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-07-22 12:56:27 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-07-22 12:56:27 -0700 |
commit | a3ad9a0f8d57cb0c98adc541ea1de1cc1081cf14 (patch) | |
tree | 2c55c9de25f3009667bc367f68738b10b56bcf84 | |
parent | Merge branch 'as/t4012-style-updates' (diff) | |
parent | config: fix several access(NULL) calls (diff) | |
download | tgif-a3ad9a0f8d57cb0c98adc541ea1de1cc1081cf14.tar.xz |
Merge branch 'mm/config-xdg'
* mm/config-xdg:
config: fix several access(NULL) calls
-rw-r--r-- | builtin/config.c | 16 | ||||
-rw-r--r-- | config.c | 4 |
2 files changed, 14 insertions, 6 deletions
diff --git a/builtin/config.c b/builtin/config.c index e8e1c0a456..8cd08da991 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -387,12 +387,20 @@ int cmd_config(int argc, const char **argv, const char *prefix) home_config_paths(&user_config, &xdg_config, "config"); - if (access(user_config, R_OK) && !access(xdg_config, R_OK)) + if (!user_config) + /* + * It is unknown if HOME/.gitconfig exists, so + * we do not know if we should write to XDG + * location; error out even if XDG_CONFIG_HOME + * is set and points at a sane location. + */ + die("$HOME not set"); + + if (access(user_config, R_OK) && + xdg_config && !access(xdg_config, R_OK)) given_config_file = xdg_config; - else if (user_config) - given_config_file = user_config; else - die("$HOME not set"); + given_config_file = user_config; } else if (use_system_config) given_config_file = git_etc_gitconfig(); @@ -945,12 +945,12 @@ int git_config_early(config_fn_t fn, void *data, const char *repo_config) found += 1; } - if (!access(xdg_config, R_OK)) { + if (xdg_config && !access(xdg_config, R_OK)) { ret += git_config_from_file(fn, xdg_config, data); found += 1; } - if (!access(user_config, R_OK)) { + if (user_config && !access(user_config, R_OK)) { ret += git_config_from_file(fn, user_config, data); found += 1; } |