aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-09-06 11:46:45 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2011-09-06 11:46:45 +0200
commit852fd592b073281162627ef4570d75d96e1263fb (patch)
treebe0158cabc2e311792e69f1d3695ede117131913
parent9e4c8217d3f2c7490eb6a26a49e67aeac96ca7c2 (diff)
downloadpingu-852fd592b073281162627ef4570d75d96e1263fb.tar.bz2
pingu-852fd592b073281162627ef4570d75d96e1263fb.tar.xz
pingu: catch SIGINT so we can cleanup at exit
-rw-r--r--pingu.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/pingu.c b/pingu.c
index 16f6570..04859b0 100644
--- a/pingu.c
+++ b/pingu.c
@@ -110,12 +110,18 @@ static int daemonize(void)
return 0;
}
+static void sigint_cb(struct ev_loop *loop, ev_signal *w, int revents)
+{
+ ev_break(loop, EVBREAK_ALL);
+}
+
int main(int argc, char *argv[])
{
int c;
const char *config_file = DEFAULT_CONFIG;
int verbose = 0;
static struct ev_loop *loop;
+ static struct ev_signal signal_watcher;
while ((c = getopt(argc, argv, "c:dhp:Vv")) != -1) {
switch (c) {
@@ -161,6 +167,10 @@ int main(int argc, char *argv[])
return 1;
}
+ ev_signal_init(&signal_watcher, sigint_cb, SIGINT);
+ ev_signal_start(loop, &signal_watcher);
+
ev_run(loop, 0);
return 0;
}
+