diff options
Diffstat (limited to 'client/acronc/handler_signal.c')
-rw-r--r-- | client/acronc/handler_signal.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/client/acronc/handler_signal.c b/client/acronc/handler_signal.c index d5df9d4..7dafe95 100644 --- a/client/acronc/handler_signal.c +++ b/client/acronc/handler_signal.c @@ -8,8 +8,16 @@ static uv_signal_t sigint; static uv_signal_t sigterm; -static void on_signal(uv_signal_t *handle, int signum) { - LOGDV("on_signal(handle = %p): %d", +static void on_sigint(uv_signal_t *handle, int signum) { + LOGDV("on_int(handle = %p): %d", + handle, + signum); + void (*on_int)(void) = handle->data; + on_int(); +} + +static void on_term(uv_signal_t *handle, int signum) { + LOGDV("on_term(handle = %p): %d", handle, signum); void (*on_quit)(void) = handle->data; @@ -18,14 +26,15 @@ static void on_signal(uv_signal_t *handle, int signum) { on_quit(); } -int h_signal(void (*on_quit)(void)) { +int h_signal(void (*on_int)(void), + void (*on_quit)(void)) { int r; if ((r = uv_signal_init(loop, &sigint))) return r; - sigint.data = on_quit; - if ((r = uv_signal_start(&sigint, on_signal, SIGINT))) return r; + sigint.data = on_int; + if ((r = uv_signal_start(&sigint, on_sigint, SIGINT))) return r; if ((r = uv_signal_init(loop, &sigterm))) return r; sigterm.data = on_quit; - if ((r = uv_signal_start(&sigterm, on_signal, SIGTERM))) return r; + if ((r = uv_signal_start(&sigterm, on_term, SIGTERM))) return r; return 0; } |