Browse Source

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 <sahlberg@google.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Ronnie Sahlberg 11 years ago committed by Junio C Hamano
parent
commit
1054af7d04
  1. 7
      git-compat-util.h
  2. 2
      refs.c
  3. 14
      wrapper.c

7
git-compat-util.h

@ -777,11 +777,14 @@ void git_qsort(void *base, size_t nmemb, size_t size, @@ -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);
/*

2
refs.c

@ -2607,7 +2607,7 @@ static int delete_ref_loose(struct ref_lock *lock, int flag) @@ -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;

14
wrapper.c

@ -466,14 +466,12 @@ int xmkstemp_mode(char *template, int mode) @@ -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;
}


Loading…
Cancel
Save