From: Junio C Hamano Date: Tue, 18 Sep 2012 21:24:06 +0000 (-0700) Subject: Merge branch 'jk/config-warn-on-inaccessible-paths' into maint X-Git-Tag: v1.7.12.1~2 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/8ffc33135268aaac55d08f4261d63b01b1004fb4?ds=inline;hp=-c Merge branch 'jk/config-warn-on-inaccessible-paths' into maint The attribute system may be asked for a path that itself or its leading directories no longer exists in the working tree, and it is fine if we cannot open .gitattribute file in such a case. Failure to open per-directory .gitattributes with error status other than ENOENT and ENOTDIR should be diagnosed. * jk/config-warn-on-inaccessible-paths: attr: failure to open a .gitattributes file is OK with ENOTDIR warn_on_inaccessible(): a helper to warn on inaccessible paths attr: warn on inaccessible attribute files gitignore: report access errors of exclude files config: warn on inaccessible files --- 8ffc33135268aaac55d08f4261d63b01b1004fb4 diff --combined builtin/config.c index ada6e12114,b0394efac9..442ccc2497 --- a/builtin/config.c +++ b/builtin/config.c @@@ -160,7 -160,7 +160,7 @@@ static int show_config(const char *key_ static int get_value(const char *key_, const char *regex_) { - int ret = -1; + int ret = CONFIG_GENERIC_ERROR; char *global = NULL, *xdg = NULL, *repo_config = NULL; const char *system_wide = NULL, *local; struct config_include_data inc = CONFIG_INCLUDE_INIT; @@@ -196,14 -196,11 +196,14 @@@ if (regcomp(key_regexp, key, REG_EXTENDED)) { fprintf(stderr, "Invalid key pattern: %s\n", key_); free(key); + ret = CONFIG_INVALID_PATTERN; goto free_strings; } } else { - if (git_config_parse_key(key_, &key, NULL)) + if (git_config_parse_key(key_, &key, NULL)) { + ret = CONFIG_INVALID_KEY; goto free_strings; + } } if (regex_) { @@@ -215,7 -212,6 +215,7 @@@ regexp = (regex_t*)xmalloc(sizeof(regex_t)); if (regcomp(regexp, regex_, REG_EXTENDED)) { fprintf(stderr, "Invalid pattern: %s\n", regex_); + ret = CONFIG_INVALID_PATTERN; goto free_strings; } } @@@ -400,8 -396,8 +400,8 @@@ int cmd_config(int argc, const char **a */ die("$HOME not set"); - if (access(user_config, R_OK) && - xdg_config && !access(xdg_config, R_OK)) + if (access_or_warn(user_config, R_OK) && + xdg_config && !access_or_warn(xdg_config, R_OK)) given_config_file = xdg_config; else given_config_file = user_config;