X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=lockfile.c;h=021c3375c10711027269ee58bb9a201bc69c519a;hb=2d40cadc25b4cfcf93a23777b74ca36bb5b3ad59;hp=8589155532da9eb7f42a1e9c3132fcf42b1b9275;hpb=b61971520738dbdc7ea2e46f8183dffe7fa4f48d;p=git.git diff --git a/lockfile.c b/lockfile.c index 858915553..021c3375c 100644 --- a/lockfile.c +++ b/lockfile.c @@ -2,6 +2,7 @@ * Copyright (c) 2005, Junio C Hamano */ #include "cache.h" +#include "sigchain.h" static struct lock_file *lock_file_list; static const char *alternate_index_output; @@ -24,7 +25,7 @@ static void remove_lock_file(void) static void remove_lock_file_on_signal(int signo) { remove_lock_file(); - signal(signo, SIG_DFL); + sigchain_pop(signo); raise(signo); } @@ -136,11 +137,7 @@ static int lock_file(struct lock_file *lk, const char *path, int flags) lk->fd = open(lk->filename, O_RDWR | O_CREAT | O_EXCL, 0666); if (0 <= lk->fd) { if (!lock_file_list) { - signal(SIGINT, remove_lock_file_on_signal); - signal(SIGHUP, remove_lock_file_on_signal); - signal(SIGTERM, remove_lock_file_on_signal); - signal(SIGQUIT, remove_lock_file_on_signal); - signal(SIGPIPE, remove_lock_file_on_signal); + sigchain_push_common(remove_lock_file_on_signal); atexit(remove_lock_file); } lk->owner = getpid();