static gboolean term_or_int_signal_cb (gpointer data) { GsmManager *manager = (GsmManager *)data; /* let the fatal signals interrupt us */ g_debug ("Caught SIGINT/SIGTERM, shutting down normally."); gsm_manager_logout (manager, GSM_MANAGER_LOGOUT_MODE_FORCE, NULL); return FALSE; }
static gboolean signal_cb(int signo, gpointer data) { int ret; GsmManager* manager; g_debug("Got callback for signal %d", signo); ret = TRUE; switch (signo) { case SIGFPE: case SIGPIPE: /* let the fatal signals interrupt us */ g_debug ("Caught signal %d, shutting down abnormally.", signo); ret = FALSE; break; case SIGINT: case SIGTERM: manager = (GsmManager*) data; gsm_manager_logout(manager, GSM_MANAGER_LOGOUT_MODE_FORCE, NULL); /* let the fatal signals interrupt us */ g_debug("Caught signal %d, shutting down normally.", signo); ret = TRUE; break; case SIGHUP: g_debug("Got HUP signal"); ret = TRUE; break; case SIGUSR1: g_debug("Got USR1 signal"); ret = TRUE; mdm_log_toggle_debug(); break; default: g_debug("Caught unhandled signal %d", signo); ret = TRUE; break; } return ret; }