X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dbus-unit.c;h=e3e1be12ade2be09393e0198ca85ac57eda43096;hb=bf024b022d9f53d2bb8d26107b4878cede3167b7;hp=cbc2812e315ca71ed0ddbb1583fee3e7de1f0972;hpb=4139c1b2729f88991159b9affa2ebf3e4eb904a0;p=elogind.git diff --git a/dbus-unit.c b/dbus-unit.c index cbc2812e3..e3e1be12a 100644 --- a/dbus-unit.c +++ b/dbus-unit.c @@ -44,6 +44,25 @@ int bus_unit_append_names(Manager *m, DBusMessageIter *i, const char *property, return 0; } +int bus_unit_append_dependencies(Manager *m, DBusMessageIter *i, const char *property, void *data) { + Unit *u; + Iterator j; + DBusMessageIter sub; + Set *s = data; + + if (!dbus_message_iter_open_container(i, DBUS_TYPE_ARRAY, "s", &sub)) + return -ENOMEM; + + SET_FOREACH(u, s, j) + if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &u->meta.id)) + return -ENOMEM; + + if (!dbus_message_iter_close_container(i, &sub)) + return -ENOMEM; + + return 0; +} + int bus_unit_append_description(Manager *m, DBusMessageIter *i, const char *property, void *data) { Unit *u = data; const char *d; @@ -348,8 +367,10 @@ void bus_unit_send_change_signal(Unit *u) { LIST_REMOVE(Meta, dbus_queue, u->meta.manager->dbus_unit_queue, &u->meta); u->meta.in_dbus_queue = false; - if (set_isempty(u->meta.manager->subscribed)) + if (set_isempty(u->meta.manager->subscribed)) { + u->meta.sent_dbus_new_signal = true; return; + } if (!(p = unit_dbus_path(u))) goto oom; @@ -362,7 +383,7 @@ void bus_unit_send_change_signal(Unit *u) { } else { /* Send a new signal */ - if (!(m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1", "UnitNew"))) + if (!(m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "UnitNew"))) goto oom; if (!dbus_message_append_args(m, @@ -403,7 +424,7 @@ void bus_unit_send_removed_signal(Unit *u) { if (!(p = unit_dbus_path(u))) goto oom; - if (!(m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1", "UnitRemoved"))) + if (!(m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "UnitRemoved"))) goto oom; if (!dbus_message_append_args(m,