From 1054af7d04aef64378d69a0496b45cdbf6a0bef2 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 16 Jul 2014 11:01:18 -0700 Subject: [PATCH] wrapper.c: remove/unlink_or_warn: simplify, treat ENOENT as success Simplify the function warn_if_unremovable slightly. Additionally, change behaviour slightly. If we failed to remove the object because the object does not exist, we can still return success back to the caller since none of the callers depend on "fail if the file did not exist". Signed-off-by: Ronnie Sahlberg Signed-off-by: Jonathan Nieder Signed-off-by: Junio C Hamano --- git-compat-util.h | 7 +++++-- refs.c | 2 +- wrapper.c | 14 ++++++-------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/git-compat-util.h b/git-compat-util.h index fb41118c07..d67592fd96 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -777,11 +777,14 @@ void git_qsort(void *base, size_t nmemb, size_t size, /* * Preserves errno, prints a message, but gives no warning for ENOENT. - * Always returns the return value of unlink(2). + * Returns 0 on success, which includes trying to unlink an object that does + * not exist. */ int unlink_or_warn(const char *path); /* - * Likewise for rmdir(2). + * Preserves errno, prints a message, but gives no warning for ENOENT. + * Returns 0 on success, which includes trying to remove a directory that does + * not exist. */ int rmdir_or_warn(const char *path); /* diff --git a/refs.c b/refs.c index a77458f2f6..2dcf6c6e03 100644 --- a/refs.c +++ b/refs.c @@ -2607,7 +2607,7 @@ static int delete_ref_loose(struct ref_lock *lock, int flag) char *loose_filename = get_locked_file_path(lock->lk); int err = unlink_or_warn(loose_filename); free(loose_filename); - if (err && errno != ENOENT) + if (err) return 1; } return 0; diff --git a/wrapper.c b/wrapper.c index 5b77d2a1ae..8d4be66e66 100644 --- a/wrapper.c +++ b/wrapper.c @@ -466,14 +466,12 @@ int xmkstemp_mode(char *template, int mode) static int warn_if_unremovable(const char *op, const char *file, int rc) { - if (rc < 0) { - int err = errno; - if (ENOENT != err) { - warning("unable to %s %s: %s", - op, file, strerror(errno)); - errno = err; - } - } + int err; + if (!rc || errno == ENOENT) + return 0; + err = errno; + warning("unable to %s %s: %s", op, file, strerror(errno)); + errno = err; return rc; }