From: Yu Watanabe Date: Fri, 17 Feb 2023 06:33:13 +0000 (+0900) Subject: core/dbus-util: introduce bus_set_transient_tristate() X-Git-Tag: v254-rc1~1179^2~6 X-Git-Url: http://git-history.diyao.me/?a=commitdiff_plain;h=faac56d5d2bd078ddff81cd999874477e8e373ce;p=systemd%2F.git core/dbus-util: introduce bus_set_transient_tristate() This will be used in later commits. --- diff --git a/src/core/dbus-util.c b/src/core/dbus-util.c index edfa0eb69a..461f6aafb2 100644 --- a/src/core/dbus-util.c +++ b/src/core/dbus-util.c @@ -93,6 +93,30 @@ int bus_set_transient_bool( return 1; } +int bus_set_transient_tristate( + Unit *u, + const char *name, + int *p, + sd_bus_message *message, + UnitWriteFlags flags, + sd_bus_error *error) { + + int v, r; + + assert(p); + + r = sd_bus_message_read(message, "b", &v); + if (r < 0) + return r; + + if (!UNIT_WRITE_FLAGS_NOOP(flags)) { + *p = v; + unit_write_settingf(u, flags, name, "%s=%s", name, yes_no(v)); + } + + return 1; +} + int bus_set_transient_usec_internal( Unit *u, const char *name, diff --git a/src/core/dbus-util.h b/src/core/dbus-util.h index e12631a0e2..9464b25516 100644 --- a/src/core/dbus-util.h +++ b/src/core/dbus-util.h @@ -241,6 +241,7 @@ int bus_set_transient_user_relaxed(Unit *u, const char *name, char **p, sd_bus_m int bus_set_transient_path(Unit *u, const char *name, char **p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error); int bus_set_transient_string(Unit *u, const char *name, char **p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error); int bus_set_transient_bool(Unit *u, const char *name, bool *p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error); +int bus_set_transient_tristate(Unit *u, const char *name, int *p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error); int bus_set_transient_usec_internal(Unit *u, const char *name, usec_t *p, bool fix_0, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error); static inline int bus_set_transient_usec(Unit *u, const char *name, usec_t *p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error) { return bus_set_transient_usec_internal(u, name, p, false, message, flags, error);