replace direct calls to unlink(2) with unlink_or_warn

This helps to notice when something's going wrong, especially on
systems which lock open files.

I used the following criteria when selecting the code for replacement:
- it was already printing a warning for the unlink failures
- it is in a function which already printing something or is
  called from such a function
- it is in a static function, returning void and the function is only
  called from a builtin main function (cmd_)
- it is in a function which handles emergency exit (signal handlers)
- it is in a function which is obvously cleaning up the lockfiles

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Alex Riesen
2009-04-29 23:22:56 +02:00
committed by Junio C Hamano
parent fc71db39e0
commit 691f1a28bf
23 changed files with 44 additions and 49 deletions

15
refs.c
View File

@ -1002,12 +1002,10 @@ int delete_ref(const char *refname, const unsigned char *sha1, int delopt)
} else {
path = git_path("%s", refname);
}
err = unlink(path);
if (err && errno != ENOENT) {
err = unlink_or_warn(path);
if (err && errno != ENOENT)
ret = 1;
error("unlink(%s) failed: %s",
path, strerror(errno));
}
if (!(delopt & REF_NODEREF))
lock->lk->filename[i] = '.';
}
@ -1017,10 +1015,7 @@ int delete_ref(const char *refname, const unsigned char *sha1, int delopt)
*/
ret |= repack_without_ref(refname);
err = unlink(git_path("logs/%s", lock->ref_name));
if (err && errno != ENOENT)
warning("unlink(%s) failed: %s",
git_path("logs/%s", lock->ref_name), strerror(errno));
unlink_or_warn(git_path("logs/%s", lock->ref_name));
invalidate_cached_refs();
unlock_ref(lock);
return ret;
@ -1381,7 +1376,7 @@ int create_symref(const char *ref_target, const char *refs_heads_master,
if (adjust_shared_perm(git_HEAD)) {
error("Unable to fix permissions on %s", lockpath);
error_unlink_return:
unlink(lockpath);
unlink_or_warn(lockpath);
error_free_return:
free(git_HEAD);
return -1;