union shutdown_buffer b; /* We maintain our own copy here, in
* order not to corrupt the last message */
struct iovec iovec = {
- iovec.iov_base = &b,
- iovec.iov_len = sizeof(b) - 1,
+ .iov_base = &b,
+ .iov_len = sizeof(b) - 1,
};
union {
struct cmsghdr cmsghdr;
if (errno == EAGAIN || errno == EINTR)
return 0;
- log_error("recvmsg(): %m");
+ log_error_errno(errno, "recvmsg(): %m");
return -errno;
}
assert(c);
r = mkdir_safe_label("/run/systemd/shutdown", 0755, 0, 0);
- if (r < 0) {
- log_error("Failed to create shutdown subdirectory: %s", strerror(-r));
- return r;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to create shutdown subdirectory: %m");
t = cescape(c->wall_message);
if (!t)
return log_oom();
r = fopen_temporary("/run/systemd/shutdown/scheduled", &f, &temp_path);
- if (r < 0) {
- log_error("Failed to save information about scheduled shutdowns: %s", strerror(-r));
- return r;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to save information about scheduled shutdowns: %m");
fchmod(fileno(f), 0644);
fflush(f);
if (ferror(f) || rename(temp_path, "/run/systemd/shutdown/scheduled") < 0) {
- log_error("Failed to write information about scheduled shutdowns: %m");
+ log_error_errno(errno, "Failed to write information about scheduled shutdowns: %m");
r = -errno;
unlink(temp_path);
n_fds = sd_listen_fds(true);
if (n_fds < 0) {
- log_error("Failed to read listening file descriptors from environment: %s", strerror(-r));
+ log_error_errno(r, "Failed to read listening file descriptors from environment: %m");
return EXIT_FAILURE;
}
pollfd[i].events = POLLIN;
pollfd[i].fd = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK|TFD_CLOEXEC);
if (pollfd[i].fd < 0) {
- log_error("timerfd_create(): %m");
+ log_error_errno(errno, "timerfd_create(): %m");
goto finish;
}
}
if (errno == EAGAIN || errno == EINTR)
continue;
- log_error("poll(): %m");
+ log_error_errno(errno, "poll(): %m");
goto finish;
}
warn_wall(n, &b.command);
}
if (timerfd_settime(pollfd[FD_WALL_TIMER].fd, TFD_TIMER_ABSTIME, &its, NULL) < 0) {
- log_error("timerfd_settime(): %m");
+ log_error_errno(errno, "timerfd_settime(): %m");
goto finish;
}
zero(its);
timespec_store(&its.it_value, when_nologin(b.command.usec));
if (timerfd_settime(pollfd[FD_NOLOGIN_TIMER].fd, TFD_TIMER_ABSTIME, &its, NULL) < 0) {
- log_error("timerfd_settime(): %m");
+ log_error_errno(errno, "timerfd_settime(): %m");
goto finish;
}
zero(its);
timespec_store(&its.it_value, b.command.usec);
if (timerfd_settime(pollfd[FD_SHUTDOWN_TIMER].fd, TFD_TIMER_ABSTIME, &its, NULL) < 0) {
- log_error("timerfd_settime(): %m");
+ log_error_errno(errno, "timerfd_settime(): %m");
goto finish;
}
/* Restart timer */
timespec_store(&its.it_value, when_wall(n, b.command.usec));
if (timerfd_settime(pollfd[FD_WALL_TIMER].fd, TFD_TIMER_ABSTIME, &its, NULL) < 0) {
- log_error("timerfd_settime(): %m");
+ log_error_errno(errno, "timerfd_settime(): %m");
goto finish;
}
}
e = write_string_file_atomic("/run/nologin", "System is going down.");
if (e < 0)
- log_error("Failed to create /run/nologin: %s", strerror(-e));
+ log_error_errno(e, "Failed to create /run/nologin: %m");
else
unlink_nologin = true;
(b.command.warn_wall ? NULL : "--no-wall"),
NULL);
- log_error("Failed to execute /sbin/shutdown: %m");
+ log_error_errno(errno, "Failed to execute /sbin/shutdown: %m");
}
sd_notify(false,
+ "STOPPING=\n"
"STATUS=Exiting...");
return r;