X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Finitctl%2Finitctl.c;h=8b632e88aeaf64870c92f9614f8c557c157431a2;hp=f3f6f7304073f44cc9660f35d9d6fef4c9de977d;hb=d5d8429a12c4b1ef0dcd226c0904f00f4fa4898a;hpb=82d252404a7ee6bd5f24482a0b50a8e91aa93257;ds=sidebyside diff --git a/src/initctl/initctl.c b/src/initctl/initctl.c index f3f6f7304..8b632e88a 100644 --- a/src/initctl/initctl.c +++ b/src/initctl/initctl.c @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include #include #include @@ -78,15 +78,15 @@ static const char *translate_runlevel(int runlevel, bool *isolate) { const char *special; bool isolate; } table[] = { - { '0', SPECIAL_POWEROFF_TARGET, false }, - { '1', SPECIAL_RESCUE_TARGET, true }, - { 's', SPECIAL_RESCUE_TARGET, true }, - { 'S', SPECIAL_RESCUE_TARGET, true }, - { '2', SPECIAL_RUNLEVEL2_TARGET, true }, - { '3', SPECIAL_RUNLEVEL3_TARGET, true }, - { '4', SPECIAL_RUNLEVEL4_TARGET, true }, - { '5', SPECIAL_RUNLEVEL5_TARGET, true }, - { '6', SPECIAL_REBOOT_TARGET, false }, + { '0', SPECIAL_POWEROFF_TARGET, false }, + { '1', SPECIAL_RESCUE_TARGET, true }, + { 's', SPECIAL_RESCUE_TARGET, true }, + { 'S', SPECIAL_RESCUE_TARGET, true }, + { '2', SPECIAL_MULTI_USER_TARGET, true }, + { '3', SPECIAL_MULTI_USER_TARGET, true }, + { '4', SPECIAL_MULTI_USER_TARGET, true }, + { '5', SPECIAL_GRAPHICAL_TARGET, true }, + { '6', SPECIAL_REBOOT_TARGET, false }, }; unsigned i; @@ -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; @@ -277,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; } @@ -290,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; } @@ -304,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; } @@ -316,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; } @@ -328,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; } @@ -355,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; } @@ -385,7 +384,7 @@ int main(int argc, char *argv[]) { n = sd_listen_fds(true); if (n < 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; } @@ -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; } @@ -431,6 +430,7 @@ int main(int argc, char *argv[]) { fail: sd_notify(false, + "STOPPING=1\n" "STATUS=Shutting down..."); server_done(&server);