]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
localed: print a custom message if libxkbcommon.so is unvailable
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 8 Mar 2023 17:59:14 +0000 (18:59 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 9 Mar 2023 02:16:13 +0000 (11:16 +0900)
Follow-up for 82c2095a5e407bcf041dc7bde84791deec95ff9c.

> I feel like the logging here may be a bit confusing on the new path.
> Previously you did get a message that explained what was going on. Now you get
> an info message that the layout could not be compiled, and … that's all. I can
> imagine this being a confusing red herring if someone was trying to debug a
> problem and saw this message. Perhaps we should log something else instead/as
> well, on the case where libxkbcommon isn't present, to say that's what we're
> logging about and it just means we can't validate the configuration, not that
> it's definitely invalid?

src/locale/localed.c

index 0e1680d72ac928625b20f016199448f3e0d9bdf5..841e5e3e91a56cf6511c5f600cb3fc4f16ef09d9 100644 (file)
@@ -613,14 +613,13 @@ static int method_set_x11_keyboard(sd_bus_message *m, void *userdata, sd_bus_err
                 return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Received invalid keyboard data");
 
         r = verify_xkb_rmlvo(in.model, in.layout, in.variant, in.options);
-        if (r < 0) {
-                log_full_errno(r == -EOPNOTSUPP ? LOG_NOTICE : LOG_ERR, r,
-                               "Cannot compile XKB keymap for new x11 keyboard layout ('%s' / '%s' / '%s' / '%s'): %m",
+        if (r == -EOPNOTSUPP)
+                log_notice_errno(r, "Cannot verify if new keymap is correct, libxkbcommon.so unavailable.");
+        else if (r < 0) {
+                log_error_errno(r, "Cannot compile XKB keymap for new x11 keyboard layout ('%s' / '%s' / '%s' / '%s'): %m",
                                strempty(in.model), strempty(in.layout), strempty(in.variant), strempty(in.options));
-
-                if (r != -EOPNOTSUPP)
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
-                                                 "Specified keymap cannot be compiled, refusing as invalid.");
+                return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS,
+                                        "Specified keymap cannot be compiled, refusing as invalid.");
         }
 
         r = vconsole_read_data(c, m);