#include "strv.h"
#include "def.h"
#include "virt.h"
+#include "architecture.h"
#include "watchdog.h"
#include "path-util.h"
#include "switch-root.h"
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;
}
} 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
#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;
/* 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) {
if (virtualization)
log_info("Detected virtualization '%s'.", virtualization);
+ log_info("Detected architecture '%s'.", architecture_to_string(uname_architecture()));
+
if (in_initrd())
log_info("Running in initial RAM disk.");
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 */
"--log-target",
};
unsigned pos = 5;
- assert(command_line[pos] == NULL);
-
_cleanup_strv_free_ char **env_block = NULL;
+
+ assert(command_line[pos] == NULL);
env_block = strv_copy(environ);
snprintf(log_level, sizeof(log_level), "%d", log_get_max_level());