From: Junio C Hamano Date: Sun, 22 Jul 2012 19:56:27 +0000 (-0700) Subject: Merge branch 'mm/config-xdg' X-Git-Tag: v1.7.12-rc0~16 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/a3ad9a0f8d57cb0c98adc541ea1de1cc1081cf14?hp=19f13d29a28b5b697f692b613784ff365b499081 Merge branch 'mm/config-xdg' * mm/config-xdg: config: fix several access(NULL) calls --- 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(); diff --git a/config.c b/config.c index 40818e872f..2b706ea205 100644 --- a/config.c +++ b/config.c @@ -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; }