chiark / gitweb /
systemctl: minor output fixes
[elogind.git] / manager.c
index 200bbfa006e38c6e0e1632713d3fe2b8e9ace24e..c6555d40bc9438f459e977434530605a824bd0c4 100644 (file)
--- a/manager.c
+++ b/manager.c
@@ -1765,9 +1765,15 @@ static int manager_process_signal_fd(Manager *m) {
                         sigchld = true;
                         break;
 
-                case SIGINT:
                 case SIGTERM:
+                        if (m->running_as == MANAGER_INIT)
+                                m->exit_code = MANAGER_REEXECUTE;
+                        else
+                                m->exit_code = MANAGER_EXIT;
+
+                        return 0;
 
+                case SIGINT:
                         if (m->running_as == MANAGER_INIT) {
                                 manager_start_target(m, SPECIAL_CTRL_ALT_DEL_TARGET);
                                 break;
@@ -1777,7 +1783,6 @@ static int manager_process_signal_fd(Manager *m) {
                         return 0;
 
                 case SIGWINCH:
-
                         if (m->running_as == MANAGER_INIT)
                                 manager_start_target(m, SPECIAL_KBREQUEST_TARGET);
 
@@ -1938,7 +1943,7 @@ int manager_loop(Manager *m) {
 
                 if ((n = epoll_wait(m->epoll_fd, &event, 1, -1)) < 0) {
 
-                        if (errno == -EINTR)
+                        if (errno == EINTR)
                                 continue;
 
                         return -errno;