static bool arg_sysv_console = true;
static bool arg_mount_auto = true;
static bool arg_swap_auto = true;
+static char *arg_console = NULL;
static FILE* serialization = NULL;
"systemd.log_color=0|1 Highlight important log messages\n"
"systemd.log_location=0|1 Include code location in log messages\n");
+ } else if (startswith(word, "console=")) {
+ const char *k;
+ size_t l;
+ char *w = NULL;
+
+ k = word + 8;
+ l = strcspn(k, ",");
+
+ /* Ignore the console setting if set to a VT */
+ 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")) {
arg_show_status = false;
arg_sysv_console = false;
int main(int argc, char *argv[]) {
Manager *m = NULL;
- int r, retval = 1;
+ int r, retval = EXIT_FAILURE;
FDSet *fds = NULL;
bool reexecute = false;
goto finish;
} else if (arg_action == ACTION_DUMP_CONFIGURATION_ITEMS) {
unit_dump_config_items(stdout);
- retval = 0;
+ retval = EXIT_SUCCESS;
goto finish;
} else if (arg_action == ACTION_DONE) {
- retval = 0;
+ retval = EXIT_SUCCESS;
goto finish;
}
install_crash_handler();
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));
+ PACKAGE_STRING " running in %s mode. (" SYSTEMD_FEATURES "; " DISTRIBUTION ")", manager_running_as_to_string(arg_running_as));
if (arg_running_as == MANAGER_SYSTEM && !serialization) {
if (arg_show_status)
m->mount_auto = arg_mount_auto;
m->swap_auto = arg_swap_auto;
+ if (arg_console)
+ manager_set_console(m, arg_console);
+
if ((r = manager_startup(m, serialization, fds)) < 0)
log_error("Failed to fully start up daemon: %s", strerror(-r));
if (arg_action == ACTION_TEST) {
printf("-> By jobs:\n");
manager_dump_jobs(m, stdout, "\t");
- retval = 0;
+ retval = EXIT_SUCCESS;
goto finish;
}
}
switch (m->exit_code) {
case MANAGER_EXIT:
- retval = 0;
+ retval = EXIT_SUCCESS;
log_debug("Exit.");
goto finish;
manager_free(m);
free(arg_default_unit);
+ free(arg_console);
dbus_shutdown();
+ label_finish();
+
if (reexecute) {
const char *args[15];
unsigned i = 0;
if (getpid() == 1)
freeze();
- label_finish();
-
return retval;
}