X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Finitctl%2Finitctl.c;h=7a6a383b32560509704f421e340d29fbf6b9b754;hb=d27efd93841a2ac2127fd53321368cc3f975c564;hp=284319f9affa96f161f5b8d5f41958988fa93a18;hpb=f5f6d0e25574dd63fb605b81fa7767dd71c454db;p=elogind.git diff --git a/src/initctl/initctl.c b/src/initctl/initctl.c index 284319f9a..7a6a383b3 100644 --- a/src/initctl/initctl.c +++ b/src/initctl/initctl.c @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include #include #include @@ -114,7 +114,7 @@ static void change_runlevel(Server *s, int runlevel) { assert(s); target = translate_runlevel(runlevel, &isolate); - if(!target) { + if (!target) { log_warning("Got request for unknown runlevel %c, ignoring.", runlevel); return; } @@ -162,7 +162,7 @@ static void request_process(Server *s, const struct init_request *req) { case 'u': case 'U': if (kill(1, SIGTERM) < 0) - log_error("kill() failed: %m"); + log_error_errno(errno, "kill() failed: %m"); /* The bus connection will be * terminated if PID 1 is reexecuted, @@ -175,7 +175,7 @@ static void request_process(Server *s, const struct init_request *req) { case 'q': case 'Q': if (kill(1, SIGHUP) < 0) - log_error("kill() failed: %m"); + log_error_errno(errno, "kill() failed: %m"); break; default: @@ -217,8 +217,8 @@ static int fifo_process(Fifo *f) { if (errno == EAGAIN) return 0; - log_warning("Failed to read from fifo: %m"); - return -1; + log_warning_errno(errno, "Failed to read from fifo: %m"); + return -errno; } f->bytes_read += l; @@ -245,7 +245,7 @@ static void fifo_free(Fifo *f) { if (f->server) epoll_ctl(f->server->epoll_fd, EPOLL_CTL_DEL, f->fd, NULL); - close_nointr_nofail(f->fd); + safe_close(f->fd); } free(f); @@ -257,8 +257,7 @@ static void server_done(Server *s) { while (s->fifos) fifo_free(s->fifos); - if (s->epoll_fd >= 0) - close_nointr_nofail(s->epoll_fd); + safe_close(s->epoll_fd); if (s->bus) { sd_bus_flush(s->bus); @@ -278,7 +277,7 @@ static int server_init(Server *s, unsigned n_sockets) { s->epoll_fd = epoll_create1(EPOLL_CLOEXEC); if (s->epoll_fd < 0) { r = -errno; - log_error("Failed to create epoll object: %m"); + log_error_errno(errno, "Failed to create epoll object: %m"); goto fail; } @@ -291,8 +290,7 @@ static int server_init(Server *s, unsigned n_sockets) { r = sd_is_fifo(fd, NULL); if (r < 0) { - log_error("Failed to determine file descriptor type: %s", - strerror(-r)); + log_error_errno(r, "Failed to determine file descriptor type: %m"); goto fail; } @@ -305,7 +303,7 @@ static int server_init(Server *s, unsigned n_sockets) { f = new0(Fifo, 1); if (!f) { r = -ENOMEM; - log_error("Failed to create fifo object: %m"); + log_error_errno(errno, "Failed to create fifo object: %m"); goto fail; } @@ -317,7 +315,7 @@ static int server_init(Server *s, unsigned n_sockets) { if (epoll_ctl(s->epoll_fd, EPOLL_CTL_ADD, fd, &ev) < 0) { r = -errno; fifo_free(f); - log_error("Failed to add fifo fd to epoll object: %m"); + log_error_errno(errno, "Failed to add fifo fd to epoll object: %m"); goto fail; } @@ -329,7 +327,7 @@ static int server_init(Server *s, unsigned n_sockets) { r = bus_open_system_systemd(&s->bus); if (r < 0) { - log_error("Failed to get D-Bus connection: %s", strerror(-r)); + log_error_errno(r, "Failed to get D-Bus connection: %m"); r = -EIO; goto fail; } @@ -356,7 +354,7 @@ static int process_event(Server *s, struct epoll_event *ev) { f = (Fifo*) ev->data.ptr; r = fifo_process(f); if (r < 0) { - log_info("Got error on fifo: %s", strerror(-r)); + log_info_errno(r, "Got error on fifo: %m"); fifo_free(f); return r; } @@ -384,8 +382,9 @@ int main(int argc, char *argv[]) { umask(0022); - if ((n = sd_listen_fds(true)) < 0) { - log_error("Failed to read listening file descriptors from environment: %s", strerror(-r)); + n = sd_listen_fds(true); + if (n < 0) { + log_error_errno(r, "Failed to read listening file descriptors from environment: %m"); return EXIT_FAILURE; } @@ -397,7 +396,7 @@ int main(int argc, char *argv[]) { if (server_init(&server, (unsigned) n) < 0) return EXIT_FAILURE; - log_debug("systemd-initctl running as pid %lu", (unsigned long) getpid()); + log_debug("systemd-initctl running as pid "PID_FMT, getpid()); sd_notify(false, "READY=1\n" @@ -414,7 +413,7 @@ int main(int argc, char *argv[]) { if (errno == EINTR) continue; - log_error("epoll_wait() failed: %m"); + log_error_errno(errno, "epoll_wait() failed: %m"); goto fail; } @@ -427,10 +426,11 @@ int main(int argc, char *argv[]) { r = EXIT_SUCCESS; - log_debug("systemd-initctl stopped as pid %lu", (unsigned long) getpid()); + log_debug("systemd-initctl stopped as pid "PID_FMT, getpid()); fail: sd_notify(false, + "STOPPING=1\n" "STATUS=Shutting down..."); server_done(&server);