warn_on_inaccessible(): a helper to warn on inaccessible paths
authorJunio C Hamano <gitster@pobox.com>
Tue, 21 Aug 2012 21:52:07 +0000 (14:52 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 21 Aug 2012 21:52:07 +0000 (14:52 -0700)
The previous series introduced warnings to multiple places, but it
could become tiring to see the warning on the same path over and
over again during a single run of Git.  Making just one function
responsible for issuing this warning, we could later choose to keep
track of which paths we issued a warning (it would involve a hash
table of paths after running them through real_path() or something)
in order to reduce noise.

Right now we do not know if the noise reduction is necessary, but it
still would be a good code reduction/sharing anyway.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
attr.c
dir.c
git-compat-util.h
wrapper.c

diff --git a/attr.c b/attr.c
index cab01b8b57bd4bfa41d59ca344f9e8cf462cfcc3..f12c83f80a0f03b2112c212e46c571ec4074abf3 100644 (file)
--- a/attr.c
+++ b/attr.c
@@ -354,7 +354,7 @@ static struct attr_stack *read_attr_from_file(const char *path, int macro_ok)
 
        if (!fp) {
                if (errno != ENOENT)
-                       warning(_("unable to access '%s': %s"), path, strerror(errno));
+                       warn_on_inaccessible(path);
                return NULL;
        }
        res = xcalloc(1, sizeof(*res));
diff --git a/dir.c b/dir.c
index ea74048ed33b61f1f6cae2be7d3d8037353181dc..486833986ed4b4e7d05d2086d53b15ec63905dd0 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -398,7 +398,7 @@ int add_excludes_from_file_to_list(const char *fname,
        fd = open(fname, O_RDONLY);
        if (fd < 0 || fstat(fd, &st) < 0) {
                if (errno != ENOENT)
-                       warning(_("unable to access '%s': %s"), fname, strerror(errno));
+                       warn_on_inaccessible(fname);
                if (0 <= fd)
                        close(fd);
                if (!check_index ||
index 5a520e2b73ba6e28d38f677d9bb1b585ce9b254a..000042d79352b4a7bb789d60e5324af92f29871a 100644 (file)
@@ -607,6 +607,9 @@ int remove_or_warn(unsigned int mode, const char *path);
 /* Call access(2), but warn for any error besides ENOENT. */
 int access_or_warn(const char *path, int mode);
 
+/* Warn on an inaccessible file that ought to be accessible */
+void warn_on_inaccessible(const char *path);
+
 /* Get the passwd entry for the UID of the current process. */
 struct passwd *xgetpwuid_self(void);
 
index b40c7e73daa239ee3b78b35875b46e57c40e8ede..68739aaa3b9e9e1a1bbbd43c75c9b5c244fb6c3e 100644 (file)
--- a/wrapper.c
+++ b/wrapper.c
@@ -403,11 +403,16 @@ int remove_or_warn(unsigned int mode, const char *file)
        return S_ISGITLINK(mode) ? rmdir_or_warn(file) : unlink_or_warn(file);
 }
 
+void warn_on_inaccessible(const char *path)
+{
+       warning(_("unable to access '%s': %s"), path, strerror(errno));
+}
+
 int access_or_warn(const char *path, int mode)
 {
        int ret = access(path, mode);
        if (ret && errno != ENOENT)
-               warning(_("unable to access '%s': %s"), path, strerror(errno));
+               warn_on_inaccessible(path);
        return ret;
 }