git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/2] config, gitignore: failure to access with ENOTDIR is ok

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Oct 14, 2012, 00:03 UTC
Message-ID
<20121014000307.GA11399@elie.Belkin>
In-Reply-To
<20121014000210.GA19094@elie.Belkin>

The access_or_warn() function is used to check for optional configuration files like .gitconfig and .gitignore and warn when they are not accessible due to a configuration issue (e.g., bad permissions). It is not supposed to complain when a file is simply missing.

Noticed on a system where ~/.config/git was a file --- when the new XDG_CONFIG_HOME support looks for ~/.config/git/config it should ignore ~/.config/git instead of printing irritating warnings:

 $ git status -s
 warning: unable to access '/home/jrn/.config/git/config': Not a directory
 warning: unable to access '/home/jrn/.config/git/config': Not a directory
 warning: unable to access '/home/jrn/.config/git/config': Not a directory
 warning: unable to access '/home/jrn/.config/git/config': Not a directory

Compare v1.7.12.1~2^2 (attr:failure to open a .gitattributes file is OK with ENOTDIR, 2012-09-13).

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 git-compat-util.h | 5 ++++-
 wrapper.c         | 2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/git-compat-util.h b/git-compat-util.h
index 2fbf1fd8..f567767f 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -635,7 +635,10 @@ int rmdir_or_warn(const char *path);
  */
 int remove_or_warn(unsigned int mode, const char *path);
 
-/* Call access(2), but warn for any error besides ENOENT. */
+/*
+ * Call access(2), but warn for any error except "missing file"
+ * (ENOENT or ENOTDIR).
+ */
 int access_or_warn(const char *path, int mode);
 
 /* Warn on an inaccessible file that ought to be accessible */
diff --git a/wrapper.c b/wrapper.c
index 68739aaa..c1b919f3 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -411,7 +411,7 @@ void warn_on_inaccessible(const char *path)
 int access_or_warn(const char *path, int mode)
 {
 	int ret = access(path, mode);
-	if (ret && errno != ENOENT)
+	if (ret && errno != ENOENT && errno != ENOTDIR)
 		warn_on_inaccessible(path);
 	return ret;
 }
-- 
1.8.0.rc2
Previous: Jonathan NiederNext: Jonathan Nieder
Message 2 of 13 in “Re: [PATCH] config: warn on inaccessible files”
  1. 0/2 Re: [PATCH] config: warn on inaccessible filesJonathan Nieder, Oct 14, 2012
  2. 1/2 config, gitignore: failure to access with ENOTDIR is okJonathan Nieder, Oct 14, 2012
  3. 2/2 config: treat user and xdg config permission problems as errorsJonathan Nieder, Oct 14, 2012
  4. Jeff KingOct 14, 2012
  5. Jonathan NiederOct 14, 2012
  6. 3/2 config doc: advertise GIT_CONFIG_NOSYSTEMJonathan Nieder, Oct 14, 2012
  7. 3/2 doc: advertise GIT_CONFIG_NOSYSTEMJonathan Nieder, Oct 14, 2012
  8. 4/2 config: exit on error accessing any config fileJonathan Nieder, Oct 14, 2012
  9. Jeff KingOct 14, 2012
  10. Junio C HamanoOct 14, 2012
  11. Jeff KingOct 14, 2012
  12. Jonathan NiederOct 14, 2012
  13. Jeff KingOct 14, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.