_FD_MAX
};
- int r = 4, n_fds;
+ int r = EXIT_FAILURE, n_fds;
int one = 1;
struct shutdownd_command c;
struct pollfd pollfd[_FD_MAX];
if (getppid() != 1) {
log_error("This program should be invoked by init only.");
- return 1;
+ return EXIT_FAILURE;
}
if (argc > 1) {
log_error("This program does not take arguments.");
- return 1;
+ return EXIT_FAILURE;
}
log_set_target(LOG_TARGET_SYSLOG_OR_KMSG);
if ((n_fds = sd_listen_fds(true)) < 0) {
log_error("Failed to read listening file descriptors from environment: %s", strerror(-r));
- return 1;
+ return EXIT_FAILURE;
}
if (n_fds != 1) {
log_error("Need exactly one file descriptor.");
- return 2;
+ return EXIT_FAILURE;
}
if (setsockopt(SD_LISTEN_FDS_START, SOL_SOCKET, SO_PASSCRED, &one, sizeof(one)) < 0) {
log_error("SO_PASSCRED failed: %m");
- return 3;
+ return EXIT_FAILURE;
}
zero(c);
} while (c.elapse > 0);
- r = 0;
+ r = EXIT_SUCCESS;
log_debug("systemd-shutdownd stopped as pid %lu", (unsigned long) getpid());
if (pollfd[i].fd >= 0)
close_nointr_nofail(pollfd[i].fd);
+ if (unlink_nologin)
+ unlink("/etc/nologin");
+
if (exec_shutdown) {
char sw[3];
log_error("Failed to execute /sbin/shutdown: %m");
}
- if (unlink_nologin)
- unlink("/etc/nologin");
-
sd_notify(false,
"STATUS=Exiting...");