aboutsummaryrefslogtreecommitdiff
path: root/client/acronc/handler_signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'client/acronc/handler_signal.c')
-rw-r--r--client/acronc/handler_signal.c21
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;
}