chiark / gitweb /
main: show welcome message on boot
authorLennart Poettering <lennart@poettering.net>
Tue, 6 Jul 2010 22:25:41 +0000 (00:25 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 6 Jul 2010 22:25:41 +0000 (00:25 +0200)
src/main.c
src/util.c
src/util.h

index 99bea75..df0da0b 100644 (file)
@@ -764,7 +764,8 @@ int main(int argc, char *argv[]) {
 
         log_debug(PACKAGE_STRING " running in %s mode.", manager_running_as_to_string(arg_running_as));
 
-        if (arg_running_as == MANAGER_SYSTEM) {
+        if (arg_running_as == MANAGER_SYSTEM && !serialization) {
+                status_welcome();
                 modprobe_setup(arg_nomodules);
                 kmod_setup();
                 hostname_setup();
index 4795dbc..774f061 100644 (file)
@@ -2651,6 +2651,53 @@ finish:
                 close_nointr_nofail(fd);
 }
 
+void status_printf(const char *format, ...) {
+        va_list ap;
+
+        assert(format);
+
+        va_start(ap, format);
+        status_vprintf(format, ap);
+        va_end(ap);
+}
+
+void status_welcome(void) {
+
+#if defined(TARGET_FEDORA)
+        char *r;
+
+        if (read_one_line_file("/etc/system-release", &r) < 0)
+                return;
+
+        truncate_nl(r);
+
+        /* This tries to mimic the color magic the old Red Hat sysinit
+         * script did. */
+
+        if (startswith(r, "Red Hat"))
+                status_printf("\tWelcome to \x1B[0;31m%s\x1B[0m!\n", r); /* Red for RHEL */
+        else if (startswith(r, "Fedora"))
+                status_printf("\tWelcome to \x1B[0;34m%s\x1B[0m!\n", r); /* Blue for Fedora */
+        else
+                status_printf("\tWelcome to %s!\n", r);
+
+        free(r);
+
+#elif defined(TARGET_SUSE)
+        char *r;
+
+        if (read_one_line_file("/etc/SuSE-release", &r) < 0)
+                return;
+
+        truncate_nl(r);
+
+        status_printf("\tWelcome to \x1B[0;32m%s\x1B[0m!\n", r); /* Green for SUSE */
+        free(r);
+#else
+#warning "You probably should add a welcome text logic here."
+#endif
+}
+
 static const char *const ioprio_class_table[] = {
         [IOPRIO_CLASS_NONE] = "none",
         [IOPRIO_CLASS_RT] = "realtime",
index 0465915..65a5e66 100644 (file)
@@ -292,6 +292,8 @@ int rm_rf(const char *path, bool only_dirs, bool delete_root);
 cpu_set_t* cpu_set_malloc(unsigned *ncpus);
 
 void status_vprintf(const char *format, va_list ap);
+void status_printf(const char *format, ...);
+void status_welcome(void);
 
 const char *ioprio_class_to_string(int i);
 int ioprio_class_from_string(const char *s);