From c072c18d6effc5ab0a73bbc1836dedb437555c6f Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Mon, 17 Apr 2017 15:54:24 +0300 Subject: [PATCH] close database on SIGINT cleans up procfs mount --- src/apk.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/apk.c b/src/apk.c index 0cf018e..c990102 100644 --- a/src/apk.c +++ b/src/apk.c @@ -441,6 +441,14 @@ static void apk_applet_register_builtin(void) (*p)(); } +static struct apk_database db; + +static void on_sigint(int s) +{ + apk_db_close(&db); + exit(128 + s); +} + int main(int argc, char **argv) { struct apk_applet *applet; @@ -448,7 +456,6 @@ int main(int argc, char **argv) struct option *opt, *all_options; int i, p, r, num_options; void *ctx = NULL; - struct apk_database db; struct apk_db_options dbopts; const struct apk_option_group **optgroups = default_optgroups; struct apk_string_array *args; @@ -517,6 +524,7 @@ int main(int argc, char **argv) } apk_db_init(&db); + signal(SIGINT, on_sigint); #ifdef TEST_MODE dbopts.open_flags &= ~(APK_OPENF_WRITE | APK_OPENF_CACHE_WRITE | APK_OPENF_CREATE);