diff options
Diffstat (limited to 'src/login/elogind.c')
-rw-r--r-- | src/login/elogind.c | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/src/login/elogind.c b/src/login/elogind.c index d5cf63336..58040f353 100644 --- a/src/login/elogind.c +++ b/src/login/elogind.c @@ -398,6 +398,22 @@ int elogind_manager_new(Manager* m) { if (r > -1) r = manager_setup_cgroup(m); + /* Install our signal handler */ + assert_se(sigprocmask_many(SIG_SETMASK, NULL, SIGINT, -1) >= 0); + r = sd_event_add_signal(m->event, NULL, SIGINT, elogind_signal_handler, m); + if (r < 0) + return log_error_errno(r, "Failed to register SIGINT handler: %m"); + + assert_se(sigprocmask_many(SIG_SETMASK, NULL, SIGQUIT, -1) >= 0); + r = sd_event_add_signal(m->event, NULL, SIGQUIT, elogind_signal_handler, m); + if (r < 0) + return log_error_errno(r, "Failed to register SIGQUIT handler: %m"); + + assert_se(sigprocmask_many(SIG_SETMASK, NULL, SIGTERM, -1) >= 0); + r = sd_event_add_signal(m->event, NULL, SIGTERM, elogind_signal_handler, m); + if (r < 0) + return log_error_errno(r, "Failed to register SIGTERM handler: %m"); + return r; } @@ -453,25 +469,3 @@ void elogind_manager_reset_config(Manager* m) { m->hibernate_delay_sec / USEC_PER_MINUTE); #endif // ENABLE_DEBUG_ELOGIND } - - -/// Add-On for manager_startup() -int elogind_manager_startup(Manager *m) { - int r; - - assert(m); - - r = sd_event_add_signal(m->event, NULL, SIGINT, elogind_signal_handler, m); - if (r < 0) - return log_error_errno(r, "Failed to register SIGINT handler: %m"); - - r = sd_event_add_signal(m->event, NULL, SIGQUIT, elogind_signal_handler, m); - if (r < 0) - return log_error_errno(r, "Failed to register SIGQUIT handler: %m"); - - r = sd_event_add_signal(m->event, NULL, SIGTERM, elogind_signal_handler, m); - if (r < 0) - return log_error_errno(r, "Failed to register SIGTERM handler: %m"); - - return 0; -} |