diff options
Diffstat (limited to 'third_party/git/sigchain.c')
-rw-r--r-- | third_party/git/sigchain.c | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/third_party/git/sigchain.c b/third_party/git/sigchain.c deleted file mode 100644 index 022677b6abaf..000000000000 --- a/third_party/git/sigchain.c +++ /dev/null @@ -1,61 +0,0 @@ -#include "cache.h" -#include "sigchain.h" - -#define SIGCHAIN_MAX_SIGNALS 32 - -struct sigchain_signal { - sigchain_fun *old; - int n; - int alloc; -}; -static struct sigchain_signal signals[SIGCHAIN_MAX_SIGNALS]; - -static void check_signum(int sig) -{ - if (sig < 1 || sig >= SIGCHAIN_MAX_SIGNALS) - BUG("signal out of range: %d", sig); -} - -int sigchain_push(int sig, sigchain_fun f) -{ - struct sigchain_signal *s = signals + sig; - check_signum(sig); - - ALLOC_GROW(s->old, s->n + 1, s->alloc); - s->old[s->n] = signal(sig, f); - if (s->old[s->n] == SIG_ERR) - return -1; - s->n++; - return 0; -} - -int sigchain_pop(int sig) -{ - struct sigchain_signal *s = signals + sig; - check_signum(sig); - if (s->n < 1) - return 0; - - if (signal(sig, s->old[s->n - 1]) == SIG_ERR) - return -1; - s->n--; - return 0; -} - -void sigchain_push_common(sigchain_fun f) -{ - sigchain_push(SIGINT, f); - sigchain_push(SIGHUP, f); - sigchain_push(SIGTERM, f); - sigchain_push(SIGQUIT, f); - sigchain_push(SIGPIPE, f); -} - -void sigchain_pop_common(void) -{ - sigchain_pop(SIGPIPE); - sigchain_pop(SIGQUIT); - sigchain_pop(SIGTERM); - sigchain_pop(SIGHUP); - sigchain_pop(SIGINT); -} |