summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-08-21 14:52:07 -0700
committerJunio C Hamano <gitster@pobox.com>2012-08-21 14:52:07 -0700
commit55b38a48e2a7ccfaaa7897a5fccb98327fa0e3c0 (patch)
tree54ba6e46f12bccd1af9faf258d9826a8001b22e6
parent11e50b2736f374f1608e0c5690405be1a74aa16d (diff)
downloadgit-55b38a48e2a7ccfaaa7897a5fccb98327fa0e3c0.tar.gz
warn_on_inaccessible(): a helper to warn on inaccessible paths
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>
-rw-r--r--attr.c2
-rw-r--r--dir.c2
-rw-r--r--git-compat-util.h3
-rw-r--r--wrapper.c7
4 files changed, 11 insertions, 3 deletions
diff --git a/attr.c b/attr.c
index cab01b8b57..f12c83f80a 100644
--- 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 ea74048ed3..486833986e 100644
--- 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 ||
diff --git a/git-compat-util.h b/git-compat-util.h
index 5a520e2b73..000042d793 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -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);
diff --git a/wrapper.c b/wrapper.c
index b40c7e73da..68739aaa3b 100644
--- 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;
}