X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fdbus-target.c;h=c109d9accb6c293379f180d2b9ebe1527c5018ae;hp=fb84430b21445a6f996ecbb268cd7392bffedf99;hb=ed4c1cc672560b72aa1c5a74cd692a65811dd589;hpb=5e8d1c9a9f15b7453474dc4879bdb4021c3f50a1 diff --git a/src/dbus-target.c b/src/dbus-target.c index fb84430b2..c109d9acc 100644 --- a/src/dbus-target.c +++ b/src/dbus-target.c @@ -19,11 +19,14 @@ along with systemd; If not, see . ***/ +#include + #include "dbus-unit.h" #include "dbus-target.h" #define BUS_TARGET_INTERFACE \ " \n" \ + " \n" \ " \n" #define INTROSPECTION \ @@ -37,9 +40,31 @@ const char bus_target_interface[] = BUS_TARGET_INTERFACE; +static int bus_target_append_runlevel(Manager *n, DBusMessageIter *i, const char *property, void *data) { + Target *t = data; + const char *d; + char buf[2]; + + assert(n); + assert(i); + assert(property); + assert(t); + + buf[0] = (char) target_get_runlevel(t); + buf[1] = 0; + + d = buf; + + if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &d)) + return -ENOMEM; + + return 0; +} + DBusHandlerResult bus_target_message_handler(Unit *u, DBusConnection *c, DBusMessage *message) { const BusProperty properties[] = { BUS_UNIT_PROPERTIES, + { "org.freedesktop.systemd1.Target", "SysVRunLevel", bus_target_append_runlevel, "s", u }, { NULL, NULL, NULL, NULL, NULL } };