From 52d2566ac73e33193259390483799064c2d070bf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 22 May 2018 14:48:33 +0200 Subject: [PATCH] pid1: fix ShowStatus property It is not const, because a) systemd can bump it on its own if errors occur, and b) the user can change it using signals. Also it's not boolean. $ busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager ShowStatus b true $ sudo kill -SIGRTMIN+21 1 $ busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager ShowStatus b false Fixes #4503. --- src/core/dbus-manager.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 4024292ec48..13d7bd476f8 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -197,6 +197,26 @@ static int property_get_progress( return sd_bus_message_append(reply, "d", d); } +static int property_get_show_status( + sd_bus *bus, + const char *path, + const char *interface, + const char *property, + sd_bus_message *reply, + void *userdata, + sd_bus_error *error) { + + Manager *m = userdata; + int b; + + assert(bus); + assert(reply); + assert(m); + + b = m->show_status > 0; + return sd_bus_message_append_basic(reply, 'b', &b); +} + static int property_set_runtime_watchdog( sd_bus *bus, const char *path, @@ -2389,7 +2409,7 @@ const sd_bus_vtable bus_manager_vtable[] = { SD_BUS_PROPERTY("Progress", "d", property_get_progress, 0, 0), SD_BUS_PROPERTY("Environment", "as", NULL, offsetof(Manager, environment), 0), SD_BUS_PROPERTY("ConfirmSpawn", "b", bus_property_get_bool, offsetof(Manager, confirm_spawn), SD_BUS_VTABLE_PROPERTY_CONST), - SD_BUS_PROPERTY("ShowStatus", "b", bus_property_get_bool, offsetof(Manager, show_status), SD_BUS_VTABLE_PROPERTY_CONST), + SD_BUS_PROPERTY("ShowStatus", "b", property_get_show_status, 0, 0), SD_BUS_PROPERTY("UnitPath", "as", NULL, offsetof(Manager, lookup_paths.search_path), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("DefaultStandardOutput", "s", bus_property_get_exec_output, offsetof(Manager, default_std_output), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("DefaultStandardError", "s", bus_property_get_exec_output, offsetof(Manager, default_std_output), SD_BUS_VTABLE_PROPERTY_CONST), -- 2.47.3