X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Finitctl.c;h=12b0e894fe6cc33e5d0f56cd9c5e50e9d22f1841;hp=7241acb8dfe59771c9d5c930eeb1aeaecbaccc2e;hb=dd6c17b1595ff8a78ebae6cf571fd222c80bfd17;hpb=a822056bca49a63cb832230af22f789c5ab5b856 diff --git a/src/initctl.c b/src/initctl.c index 7241acb8d..12b0e894f 100644 --- a/src/initctl.c +++ b/src/initctl.c @@ -1,4 +1,4 @@ -/*-*- Mode: C; c-basic-offset: 8 -*-*/ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ /*** This file is part of systemd. @@ -119,12 +119,12 @@ static void change_runlevel(Server *s, int runlevel) { DBUS_TYPE_STRING, &target, DBUS_TYPE_STRING, &replace, DBUS_TYPE_INVALID)) { - log_error("Could not attach target and flag information to signal message."); + log_error("Could not attach target and flag information to message."); goto finish; } if (!(reply = dbus_connection_send_with_reply_and_block(s->bus, m, -1, &error))) { - log_error("Failed to start unit: %s", error.message); + log_error("Failed to start unit: %s", bus_error_message(&error)); goto finish; } @@ -232,7 +232,7 @@ static void server_done(Server *s) { close_nointr_nofail(s->epoll_fd); if (s->bus) { - dbus_connection_set_exit_on_disconnect(s->bus, FALSE); + dbus_connection_close(s->bus); dbus_connection_unref(s->bus); } } @@ -297,12 +297,8 @@ static int server_init(Server *s, unsigned n_sockets) { s->n_fifos ++; } - if (!(s->bus = dbus_connection_open("unix:abstract=/org/freedesktop/systemd1/private", &error))) { - log_error("Failed to get D-Bus connection: %s", error.message); - goto fail; - } - if ((r = bus_check_peercred(s->bus)) < 0) { - log_error("Bus connection failed peer credential check: %s", strerror(-r)); + if (bus_connect(DBUS_BUS_SYSTEM, &s->bus, NULL, &error) < 0) { + log_error("Failed to get D-Bus connection: %s", bus_error_message(&error)); goto fail; } @@ -353,8 +349,7 @@ int main(int argc, char *argv[]) { log_set_target(LOG_TARGET_SYSLOG_OR_KMSG); log_parse_environment(); - - log_info("systemd-initctl running as pid %lu", (unsigned long) getpid()); + log_open(); if ((n = sd_listen_fds(true)) < 0) { log_error("Failed to read listening file descriptors from environment: %s", strerror(-r)); @@ -369,6 +364,8 @@ int main(int argc, char *argv[]) { if (server_init(&server, (unsigned) n) < 0) return 2; + log_debug("systemd-initctl running as pid %lu", (unsigned long) getpid()); + sd_notify(false, "READY=1\n" "STATUS=Processing requests..."); @@ -391,19 +388,20 @@ int main(int argc, char *argv[]) { if (k <= 0) break; - if ((k = process_event(&server, &event)) < 0) + if (process_event(&server, &event) < 0) goto fail; } + r = 0; + log_debug("systemd-initctl stopped as pid %lu", (unsigned long) getpid()); + fail: sd_notify(false, "STATUS=Shutting down..."); server_done(&server); - log_info("systemd-initctl stopped as pid %lu", (unsigned long) getpid()); - dbus_shutdown(); return r;