]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
localed: be more verbose when keymap conversion to X11 fails
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 23 May 2016 02:25:09 +0000 (22:25 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 6 Jun 2016 13:22:33 +0000 (09:22 -0400)
I was puzzled why "localectl set-keymap pl" does not change the X11 keymap.
Output a message at notice level, becuase not converting the X11 keymap
is most likely an error. We usually do not output non-debug messages
from "library" code, but this isn't really library code, it's split out
to a separate file only to allow it to be called from tests.

(pl is not converted because we only have a mapping for pl2. This is
intentional, even though we might want to change this. In any case, the
conversion code works correctly.)

src/locale/keymap-util.c

index 68b80a48010cad02b9d0564440bd3b82ebe3d90c..b6cbf12c7e2dc47f859ddfb31f8e9a6443f7d919 100644 (file)
@@ -425,10 +425,9 @@ static int read_next_mapping(const char* filename,
 }
 
 int vconsole_convert_to_x11(Context *c) {
-        bool modified = false;
+        int modified = -1;
 
         if (isempty(c->vc_keymap)) {
-
                 modified =
                         !isempty(c->x11_layout) ||
                         !isempty(c->x11_model) ||
@@ -475,17 +474,19 @@ int vconsole_convert_to_x11(Context *c) {
                 }
         }
 
-        if (modified)
+        if (modified > 0)
                 log_info("Changing X11 keyboard layout to '%s' model '%s' variant '%s' options '%s'",
                          strempty(c->x11_layout),
                          strempty(c->x11_model),
                          strempty(c->x11_variant),
                          strempty(c->x11_options));
-
+        else if (modified < 0)
+                log_notice("X11 keyboard layout was not modified: no conversion found for \"%s\".",
+                           c->vc_keymap);
         else
-                log_debug("X11 keyboard layout was not modified.");
+                log_debug("X11 keyboard layout did not need to be modified.");
 
-        return modified;
+        return modified > 0;
 }
 
 int find_converted_keymap(const char *x11_layout, const char *x11_variant, char **new_keymap) {