chiark / gitweb /
core: fixate show_status earlier, so that we actually print the welcome message
authorLennart Poettering <lennart@poettering.net>
Mon, 17 Feb 2014 15:17:08 +0000 (16:17 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 17 Feb 2014 15:17:08 +0000 (16:17 +0100)
Previously, we'd fixed show_state only after printing the welcome
message which had the effect that the welcome message was almost always
suppressed.

src/core/main.c
src/shared/exit-status.h
src/shared/util.c
src/shared/util.h

index b5bb3f6805d77285651a852daba58679dac76639..3c1e04c529036170b6092541541917813ca111e3 100644 (file)
@@ -88,7 +88,7 @@ static bool arg_dump_core = true;
 static bool arg_crash_shell = false;
 static int arg_crash_chvt = -1;
 static bool arg_confirm_spawn = false;
-static ShowStatus arg_show_status = SHOW_STATUS_UNSET;
+static ShowStatus arg_show_status = _SHOW_STATUS_UNSET;
 static bool arg_switched_root = false;
 static char ***arg_join_controllers = NULL;
 static ExecOutput arg_default_std_output = EXEC_OUTPUT_JOURNAL;
@@ -408,7 +408,7 @@ static int parse_proc_cmdline_word(const char *word) {
                 }
 
         } else if (streq(word, "quiet")) {
-                if (arg_show_status == SHOW_STATUS_UNSET)
+                if (arg_show_status == _SHOW_STATUS_UNSET)
                         arg_show_status = SHOW_STATUS_AUTO;
         } else if (streq(word, "debug")) {
                 /* Log to kmsg, the journal socket will fill up before the
@@ -1209,6 +1209,24 @@ finish:
 #endif
 }
 
+static int status_welcome(void) {
+        _cleanup_free_ char *pretty_name = NULL, *ansi_color = NULL;
+        int r;
+
+        r = parse_env_file("/etc/os-release", NEWLINE,
+                           "PRETTY_NAME", &pretty_name,
+                           "ANSI_COLOR", &ansi_color,
+                           NULL);
+
+        if (r < 0 && r != -ENOENT)
+                log_warning("Failed to read /etc/os-release: %s", strerror(-r));
+
+        return status_printf(NULL, false, false,
+                             "\nWelcome to \x1B[%sm%s\x1B[0m!\n",
+                             isempty(ansi_color) ? "1" : ansi_color,
+                             isempty(pretty_name) ? "Linux" : pretty_name);
+}
+
 int main(int argc, char *argv[]) {
         Manager *m = NULL;
         int r, retval = EXIT_FAILURE;
@@ -1470,6 +1488,9 @@ int main(int argc, char *argv[]) {
         /* Open the logging devices, if possible and necessary */
         log_open();
 
+        if (arg_show_status == _SHOW_STATUS_UNSET)
+                arg_show_status = SHOW_STATUS_YES;
+
         /* Make sure we leave a core dump without panicing the
          * kernel. */
         if (getpid() == 1) {
@@ -1576,12 +1597,7 @@ int main(int argc, char *argv[]) {
         m->security_finish_timestamp = security_finish_timestamp;
 
         manager_set_default_rlimits(m, arg_default_rlimit);
-
-        if (arg_default_environment)
-                manager_environment_add(m, NULL, arg_default_environment);
-
-        if (arg_show_status == SHOW_STATUS_UNSET)
-                arg_show_status = SHOW_STATUS_YES;
+        manager_environment_add(m, NULL, arg_default_environment);
         manager_set_show_status(m, arg_show_status);
 
         /* Remember whether we should queue the default job */
index e84bfe370464736ba256ae2cfcdafc9212865b09..8f9bddf0690437a9e987fdac5aa6e4affb95d97e 100644 (file)
@@ -91,7 +91,7 @@ bool is_clean_exit_lsb(int code, int status, ExitStatusSet *success_status);
 /* Manager status */
 
 typedef enum ShowStatus {
-        SHOW_STATUS_UNSET = -2,
+        _SHOW_STATUS_UNSET = -2,
         SHOW_STATUS_AUTO = -1,
         SHOW_STATUS_NO = 0,
         SHOW_STATUS_YES = 1,
index d95a4b4ab117ce6d8062b43ec85560dcd7abe8cc..4f3145b2bc493ec1efff7d00afe29e9355e83cec 100644 (file)
@@ -2928,24 +2928,6 @@ int status_printf(const char *status, bool ellipse, bool ephemeral, const char *
         return r;
 }
 
-int status_welcome(void) {
-        _cleanup_free_ char *pretty_name = NULL, *ansi_color = NULL;
-        int r;
-
-        r = parse_env_file("/etc/os-release", NEWLINE,
-                           "PRETTY_NAME", &pretty_name,
-                           "ANSI_COLOR", &ansi_color,
-                           NULL);
-
-        if (r < 0 && r != -ENOENT)
-                log_warning("Failed to read /etc/os-release: %s", strerror(-r));
-
-        return status_printf(NULL, false, false,
-                             "\nWelcome to \x1B[%sm%s\x1B[0m!\n",
-                             isempty(ansi_color) ? "1" : ansi_color,
-                             isempty(pretty_name) ? "Linux" : pretty_name);
-}
-
 char *replace_env(const char *format, char **env) {
         enum {
                 WORD,
index 4bed5b48428294c97b368ec7877c277b339aeba6..7c88dad631d16fe0c705c759754a86a583cb0ea2 100644 (file)
@@ -409,7 +409,6 @@ cpu_set_t* cpu_set_malloc(unsigned *ncpus);
 
 int status_vprintf(const char *status, bool ellipse, bool ephemeral, const char *format, va_list ap) _printf_(4,0);
 int status_printf(const char *status, bool ellipse, bool ephemeral, const char *format, ...) _printf_(4,5);
-int status_welcome(void);
 
 int fd_columns(int fd);
 unsigned columns(void);