Done. Thanks. On Tue, Jun 10, 2014 at 3:49 PM, Jonathan Nieder <jrnieder@xxxxxxxxx> wrote: > Ronnie Sahlberg wrote: > >> --- a/refs.c >> +++ b/refs.c >> @@ -2510,16 +2510,38 @@ static int repack_without_ref(const char *refname) > [...] >> +static int unlink_or_err(const char *file, struct strbuf *err) >> +{ >> + if (err) >> + return add_err_if_unremovable("unlink", file, err, >> + unlink(file)); >> + else >> + return unlink_or_warn(file); >> +} > > This has two different return value conventions (my fault, I know): it > returns -1 for ENOENT when err == NULL but 0 for ENOENT when not. The > usual reason to call unlink_or_warn / remove_or_warn is to be silent > about ENOENT so it seems simplest to fix them at the same time, as > below. The only callers that could mind: > > * unpack-trees.c::unlink_entry, where this would be fixing a minor bug > * builtin/apply.c::remove_file, likewise > * delete_ref_loose, which checks errno so this should have no effect there > > refs.c | 2 +- > wrapper.c | 14 ++++++-------- > 2 files changed, 7 insertions(+), 9 deletions(-) > > diff --git i/refs.c w/refs.c > index dd498cf..e32aa97 100644 > --- i/refs.c > +++ w/refs.c > @@ -2541,7 +2541,7 @@ static int delete_ref_loose(struct ref_lock *lock, int flag, struct strbuf *err) > lock->lk->filename[i] = 0; > res = unlink_or_err(lock->lk->filename, err); > lock->lk->filename[i] = '.'; > - if (res && errno != ENOENT) > + if (res) > return 1; > } > return 0; > diff --git i/wrapper.c w/wrapper.c > index bc1bfb8..c9605cd 100644 > --- i/wrapper.c > +++ w/wrapper.c > @@ -429,14 +429,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; > } > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html