[systemd-commits] src/vconsole-setup.c

Lennart Poettering lennart at kemper.freedesktop.org
Tue Apr 19 19:31:13 PDT 2011


 src/vconsole-setup.c |   34 ++++++++++++++++++++++++----------
 1 file changed, 24 insertions(+), 10 deletions(-)

New commits:
commit 944d4c91e68508d997409008ab7acd8d6e162965
Author: Lennart Poettering <lennart at poettering.net>
Date:   Wed Apr 20 04:30:08 2011 +0200

    vconsole: don't set console font/keymap if settings are empty
    
    https://bugs.freedesktop.org/show_bug.cgi?id=36052
    
    If KEYMAP= is set to the empty string in /etc/vconsole leave the kernel
    keymap loaded.
    
    Similar for FONT=.

diff --git a/src/vconsole-setup.c b/src/vconsole-setup.c
index 86e290b..1be260b 100644
--- a/src/vconsole-setup.c
+++ b/src/vconsole-setup.c
@@ -83,6 +83,12 @@ static int load_keymap(const char *vc, const char *map, const char *map_toggle,
         int i = 0;
         pid_t pid;
 
+        if (isempty(map)) {
+                /* An empty map means kernel map */
+                *_pid = 0;
+                return 0;
+        }
+
         args[i++] = KBD_LOADKEYS;
         args[i++] = "-q";
         args[i++] = "-C";
@@ -111,6 +117,12 @@ static int load_font(const char *vc, const char *font, const char *map, const ch
         int i = 0;
         pid_t pid;
 
+        if (isempty(font)) {
+                /* An empty font means kernel font */
+                *_pid = 0;
+                return 0;
+        }
+
         args[i++] = KBD_SETFONT;
         args[i++] = "-C";
         args[i++] = vc;
@@ -155,7 +167,7 @@ int main(int argc, char **argv) {
         int r = EXIT_FAILURE;
         pid_t font_pid = 0, keymap_pid = 0;
 
-        log_set_target(LOG_TARGET_SYSLOG_OR_KMSG);
+        log_set_target(LOG_TARGET_AUTO);
         log_parse_environment();
         log_open();
 
@@ -176,6 +188,16 @@ int main(int argc, char **argv) {
 
         utf8 = is_locale_utf8();
 
+        vc_keymap = strdup("us");
+        vc_font = strdup(DEFAULT_FONT);
+
+        if (!vc_keymap || !vc_font) {
+                log_error("Failed to allocate strings.");
+                goto finish;
+        }
+
+        r = 0;
+
         if (detect_container(NULL) <= 0)
                 if ((r = parse_env_file("/proc/cmdline", WHITESPACE,
 #if defined(TARGET_FEDORA) || defined(TARGET_MEEGO)
@@ -410,15 +432,7 @@ int main(int argc, char **argv) {
 #endif
         }
 
-        if (!vc_keymap)
-                vc_keymap = strdup("us");
-        if (!vc_font)
-                vc_font = strdup(DEFAULT_FONT);
-
-        if (!vc_keymap || !vc_font) {
-                log_error("Failed to allocate strings.");
-                goto finish;
-        }
+        r = EXIT_FAILURE;
 
         if (!utf8)
                 disable_utf8(fd);



More information about the systemd-commits mailing list