X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=dbus-swap.c;h=e935e09bf212a1e336441e930fe3b3e997f3b67c;hp=6939ae29c72f92c2790adf34a092dd4fcb48dda3;hb=92aa6f363360cbb4e300648e5cbdb6fe4cce1b57;hpb=07b0b134d3076fe223d6e15959b6081a74b56792 diff --git a/dbus-swap.c b/dbus-swap.c index 6939ae29c..e935e09bf 100644 --- a/dbus-swap.c +++ b/dbus-swap.c @@ -20,6 +20,8 @@ along with systemd; If not, see . ***/ +#include + #include "dbus-unit.h" #include "dbus-swap.h" @@ -35,11 +37,35 @@ static const char introspection[] = BUS_INTROSPECTABLE_INTERFACE ""; +static int bus_swap_append_priority(Manager *m, DBusMessageIter *i, const char *property, void *data) { + Swap *s = data; + dbus_int32_t j; + + assert(m); + assert(i); + assert(property); + assert(s); + + if (s->from_proc_swaps) + j = s->parameters_proc_swaps.priority; + else if (s->from_fragment) + j = s->parameters_fragment.priority; + else if (s->from_etc_fstab) + j = s->parameters_etc_fstab.priority; + else + j = -1; + + if (!dbus_message_iter_append_basic(i, DBUS_TYPE_INT32, &j)) + return -ENOMEM; + + return 0; +} + DBusHandlerResult bus_swap_message_handler(Unit *u, DBusMessage *message) { const BusProperty properties[] = { BUS_UNIT_PROPERTIES, - { "org.freedesktop.systemd1.Swap", "What", bus_property_append_string, "s", u->swap.what }, - { "org.freedesktop.systemd1.Swap", "Priority", bus_property_append_int32, "i", &u->swap.priority }, + { "org.freedesktop.systemd1.Swap", "What", bus_property_append_string, "s", u->swap.what }, + { "org.freedesktop.systemd1.Swap", "Priority", bus_swap_append_priority, "i", u }, { NULL, NULL, NULL, NULL, NULL } };