X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fmain.c;h=51253c66c878a09273660f473793d092333d27d3;hp=79a46b8cd50324f24fdd8e76231677ae0f38b074;hb=5192bd1945f59254b3d260ded15dd9f2b8cc2de7;hpb=6e98720f14dc25ee1d43f951d5c4d79b04ad7506 diff --git a/src/main.c b/src/main.c index 79a46b8cd..51253c66c 100644 --- a/src/main.c +++ b/src/main.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. @@ -45,6 +45,8 @@ #include "conf-parser.h" #include "bus-errors.h" #include "missing.h" +#include "label.h" +#include "build.h" static enum { ACTION_RUN, @@ -55,7 +57,6 @@ static enum { } arg_action = ACTION_RUN; static char *arg_default_unit = NULL; -static char *arg_console = NULL; static ManagerRunningAs arg_running_as = _MANAGER_RUNNING_AS_INVALID; static bool arg_dump_core = true; @@ -117,10 +118,10 @@ _noreturn_ static void crash(int sig) { _exit(1); } else { - int status, r; + int status; /* Order things nicely. */ - if ((r = waitpid(pid, &status, 0)) < 0) + if (waitpid(pid, &status, 0) < 0) log_error("Caught <%s>, waitpid() failed: %s", signal_to_string(sig), strerror(errno)); else if (!WCOREDUMP(status)) log_error("Caught <%s>, core dump failed.", signal_to_string(sig)); @@ -243,6 +244,8 @@ static int parse_proc_cmdline_word(const char *word) { "5", SPECIAL_RUNLEVEL5_TARGET }; + assert(word); + if (startswith(word, "systemd.unit=")) return set_default_unit(word + 13); @@ -334,26 +337,8 @@ static int parse_proc_cmdline_word(const char *word) { } else if (streq(word, "nomodules")) arg_nomodules = true; - else if (startswith(word, "console=")) { - const char *k; - size_t l; - char *w = NULL; - - k = word + 8; - l = strcspn(k, ","); - - if (l < 4 || - !startswith(k, "tty") || - k[3+strspn(k+3, "0123456789")] != 0) { - - if (!(w = strndup(k, l))) - return -ENOMEM; - } - - free(arg_console); - arg_console = w; - } else if (streq(word, "quiet")) { + else if (streq(word, "quiet")) { arg_show_status = false; arg_sysv_console = false; } else { @@ -540,7 +525,7 @@ static int parse_proc_cmdline(void) { char *state; if ((r = read_one_line_file("/proc/cmdline", &line)) < 0) { - log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(errno)); + log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r)); return 0; } @@ -987,17 +972,14 @@ int main(int argc, char *argv[]) { if (getpid() == 1) install_crash_handler(); - log_info(PACKAGE_STRING " running in %s mode.", manager_running_as_to_string(arg_running_as)); + log_full(arg_running_as == MANAGER_SYSTEM ? LOG_INFO : LOG_DEBUG, + PACKAGE_STRING " running in %s mode. (" SYSTEMD_FEATURES ")", manager_running_as_to_string(arg_running_as)); if (arg_running_as == MANAGER_SYSTEM) { /* Disable nscd, to avoid deadlocks when systemd uses * NSS and the nscd socket is maintained by us. */ - /* if (nss_disable_nscd) { */ - /* log_debug("Disabling nscd"); */ - /* nss_disable_nscd(); */ - /* } else */ - /* log_debug("Hmm, can't disable nscd."); */ + nss_disable_nscd(); if (!serialization) { if (arg_show_status) @@ -1062,21 +1044,6 @@ int main(int argc, char *argv[]) { goto finish; } - if (arg_console && arg_running_as == MANAGER_SYSTEM) { - char *name; - - if (asprintf(&name, "getty@%s.service", arg_console) < 0) - log_error("Out of memory while generating console getty service name."); - else { - if ((r = manager_add_job_by_name(m, JOB_START, name, JOB_FAIL, false, &error, NULL)) < 0) { - log_error("Failed to start console getty target: %s", bus_error(&error, r)); - dbus_error_free(&error); - } - - free(name); - } - } - if (arg_action == ACTION_TEST) { printf("-> By jobs:\n"); manager_dump_jobs(m, stdout, "\t"); @@ -1122,7 +1089,6 @@ finish: manager_free(m); free(arg_default_unit); - free(arg_console); dbus_shutdown();