]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
logind: fix internal types used for EnableWallMessages
authorLennart Poettering <lennart@poettering.net>
Wed, 16 Feb 2022 21:56:47 +0000 (22:56 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 16 Feb 2022 21:56:47 +0000 (22:56 +0100)
The value is used as a boolean, but stored in an unsigned. It's exposed
with sd-bus default boolean handling which however expects a (signed)
int. Let's clear this up, and use "bool" for this everywhere in
non-local scope, and make sure that when we pass it to sd-bus we
properly pass an "int".

src/login/logind-dbus.c
src/login/logind.h

index 5ba0b1748e366c71ff2014b943bfc6b3546862d1..30bddb5402d7f799d6cd33c6c90d34997c829d7a 100644 (file)
@@ -2058,10 +2058,10 @@ static int update_schedule_file(Manager *m) {
 
         fprintf(f,
                 "USEC="USEC_FMT"\n"
-                "WARN_WALL=%i\n"
+                "WARN_WALL=%s\n"
                 "MODE=%s\n",
                 m->scheduled_shutdown_timeout,
-                m->enable_wall_messages,
+                one_zero(m->enable_wall_messages),
                 handle_action_to_string(m->scheduled_shutdown_type->handle));
 
         if (!isempty(m->wall_message)) {
@@ -3116,7 +3116,7 @@ static int method_set_wall_message(
         int r;
         Manager *m = userdata;
         char *wall_message;
-        unsigned enable_wall_messages;
+        int enable_wall_messages;
 
         assert(message);
         assert(m);
@@ -3277,7 +3277,7 @@ static int method_inhibit(sd_bus_message *message, void *userdata, sd_bus_error
 static const sd_bus_vtable manager_vtable[] = {
         SD_BUS_VTABLE_START(0),
 
-        SD_BUS_WRITABLE_PROPERTY("EnableWallMessages", "b", NULL, NULL, offsetof(Manager, enable_wall_messages), 0),
+        SD_BUS_WRITABLE_PROPERTY("EnableWallMessages", "b", bus_property_get_bool, bus_property_set_bool, offsetof(Manager, enable_wall_messages), 0),
         SD_BUS_WRITABLE_PROPERTY("WallMessage", "s", NULL, NULL, offsetof(Manager, wall_message), 0),
 
         SD_BUS_PROPERTY("NAutoVTs", "u", NULL, offsetof(Manager, n_autovts), SD_BUS_VTABLE_PROPERTY_CONST),
index 5647e5069c154757c516a9a2d3898adf8a45428b..af9af9e4578e14fff7e9f68adde72fdf80bc8bc1 100644 (file)
@@ -87,7 +87,7 @@ struct Manager {
         bool unlink_nologin;
 
         char *wall_message;
-        unsigned enable_wall_messages;
+        bool enable_wall_messages;
         sd_event_source *wall_message_timeout_source;
 
         bool shutdown_dry_run;