From 0c69a67294b3d96714fd7deb29e5b51df23086c1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 13 Feb 2025 18:15:52 +0100 Subject: [PATCH 1/2] varlink: fix IDL for errno error --- src/libsystemd/sd-varlink/varlink-io.systemd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsystemd/sd-varlink/varlink-io.systemd.c b/src/libsystemd/sd-varlink/varlink-io.systemd.c index 30c9495d40..cab64ef988 100644 --- a/src/libsystemd/sd-varlink/varlink-io.systemd.c +++ b/src/libsystemd/sd-varlink/varlink-io.systemd.c @@ -15,7 +15,7 @@ static SD_VARLINK_DEFINE_ERROR( SD_VARLINK_FIELD_COMMENT("The Linux error name, i.e. ENOENT, EHWPOISON or similar."), SD_VARLINK_DEFINE_FIELD(errnoName, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), SD_VARLINK_FIELD_COMMENT("The numeric Linux error number. Typically the name is preferable, if specified."), - SD_VARLINK_DEFINE_FIELD(errno, SD_VARLINK_STRING, SD_VARLINK_NULLABLE)); + SD_VARLINK_DEFINE_FIELD(errno, SD_VARLINK_INT, SD_VARLINK_NULLABLE)); SD_VARLINK_DEFINE_INTERFACE( io_systemd, From 2d790b225d40d85a35319b71230f9a6a6c8b5db1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 13 Feb 2025 18:16:18 +0100 Subject: [PATCH 2/2] logind: map enum strings to underscores in logind Varlink doesn't know dashes in enums, we use them all the time. Convert dashes to underscores hence before we pass them through varlink. --- src/login/logind-varlink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/login/logind-varlink.c b/src/login/logind-varlink.c index a757033a55..23262fb9a5 100644 --- a/src/login/logind-varlink.c +++ b/src/login/logind-varlink.c @@ -133,8 +133,8 @@ int session_send_create_reply_varlink(Session *s, const sd_bus_error *error) { SD_JSON_BUILD_PAIR_UNSIGNED("UID", s->user->user_record->uid), SD_JSON_BUILD_PAIR_CONDITION(!!s->seat, "Seat", SD_JSON_BUILD_STRING(s->seat ? s->seat->id : NULL)), SD_JSON_BUILD_PAIR_CONDITION(s->vtnr > 0, "VTNr", SD_JSON_BUILD_UNSIGNED(s->vtnr)), - SD_JSON_BUILD_PAIR_STRING("Class", session_class_to_string(s->class)), - SD_JSON_BUILD_PAIR_STRING("Type", session_type_to_string(s->type))); + SD_JSON_BUILD_PAIR("Class", JSON_BUILD_STRING_UNDERSCORIFY(session_class_to_string(s->class))), + SD_JSON_BUILD_PAIR("Type", JSON_BUILD_STRING_UNDERSCORIFY(session_type_to_string(s->type)))); } static JSON_DISPATCH_ENUM_DEFINE(json_dispatch_session_class, SessionClass, session_class_from_string);