From 670cf90e11f91e6cc73dfa92cd44c71ec091c488 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 28 Jul 2017 12:41:31 +0100 Subject: [PATCH] ratbagd: handle SIGINT for quitting Signed-off-by: Peter Hutterer --- ratbagd/ratbagd.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ratbagd/ratbagd.c b/ratbagd/ratbagd.c index 61f32dc7..8e834756 100644 --- a/ratbagd/ratbagd.c +++ b/ratbagd/ratbagd.c @@ -662,6 +662,15 @@ exit: return r; } +static int sighandler(sd_event_source *source, + const struct signalfd_siginfo *si, + void *userdata) +{ + sd_event *event = sd_event_source_get_event(source); + sd_event_exit(event, 0); + return 0; +} + static int ratbagd_run(struct ratbagd *ctx) { int r; @@ -682,6 +691,12 @@ static int ratbagd_run(struct ratbagd *ctx) if (r < 0) return r; + sigset_t sigset; + sigemptyset(&sigset); + sigaddset(&sigset, SIGINT); + sigprocmask(SIG_BLOCK, &sigset, NULL); + sd_event_add_signal(ctx->event, NULL, SIGINT, sighandler, NULL); + return sd_event_loop(ctx->event); }