static int property_get_xkb( sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error) { Context *c = userdata; int r; r = x11_read_data(c, reply); if (r < 0) return r; if (streq(property, "X11Layout")) return sd_bus_message_append_basic(reply, 's', c->x11_layout); else if (streq(property, "X11Model")) return sd_bus_message_append_basic(reply, 's', c->x11_model); else if (streq(property, "X11Variant")) return sd_bus_message_append_basic(reply, 's', c->x11_variant); else if (streq(property, "X11Options")) return sd_bus_message_append_basic(reply, 's', c->x11_options); return -EINVAL; }
static int vconsole_convert_to_x11_and_emit(Context *c, sd_bus_message *m) { int r; assert(m); r = x11_read_data(c, m); if (r < 0) return r; r = vconsole_convert_to_x11(c); if (r <= 0) return r; /* modified */ r = x11_write_data(c); if (r < 0) return log_error_errno(r, "Failed to write X11 keyboard layout: %m"); sd_bus_emit_properties_changed(sd_bus_message_get_bus(m), "/org/freedesktop/locale1", "org.freedesktop.locale1", "X11Layout", "X11Model", "X11Variant", "X11Options", NULL); return 1; }
static int context_read_data(Context *c) { int r, q, p; r = locale_read_data(c); q = vconsole_read_data(c); p = x11_read_data(c); return r < 0 ? r : q < 0 ? q : p; }