sigaddset(&mask, SIGABRT);
#endif
-#ifdef SIGTERM
- signal(SIGTERM, crash_handler);
- sigaddset(&mask, SIGTERM);
-#endif
-
sigprocmask(SIG_UNBLOCK, &mask, 0);
#endif /* CRASH_DIALOG */
}
static void send_queue (void);
static void initial_processing (FolderItem *item, gpointer data);
+static void quit_signal_handler (int sig);
+static void install_basic_sighandlers (void);
#if 0
/* for gettext */
}
crash_install_handlers();
#endif
+ install_basic_sighandlers();
/* check and create unix domain socket */
lock_socket = prohibit_duplicate_launch();
}
}
}
+
+static void quit_signal_handler(int sig)
+{
+ debug_print("Quitting on signal %d\n", sig);
+ clean_quit();
+}
+
+static void install_basic_sighandlers()
+{
+ sigset_t mask;
+ struct sigaction act;
+
+ sigemptyset(&mask);
+
+#ifdef SIGTERM
+ sigaddset(&mask, SIGTERM);
+#endif
+#ifdef SIGINT
+ sigaddset(&mask, SIGINT);
+#endif
+
+ act.sa_handler = quit_signal_handler;
+ act.sa_mask = mask;
+ act.sa_flags = 0;
+
+#ifdef SIGTERM
+ sigaction(SIGTERM, &act, 0);
+#endif
+#ifdef SIGINT
+ sigaction(SIGINT, &act, 0);
+#endif
+
+ sigprocmask(SIG_UNBLOCK, &mask, 0);
+}