X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fdbus.c;h=2c2a9cd6c292f69711e38949e3ad83b9d5b65af6;hp=a34c7dc17bdabecc45c8195cfb199991026bb7be;hb=4fd5948e74b776b6d68ba55f558da5f354179e52;hpb=5e8d1c9a9f15b7453474dc4879bdb4021c3f50a1 diff --git a/src/dbus.c b/src/dbus.c index a34c7dc17..2c2a9cd6c 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -761,7 +761,7 @@ static int bus_init_system(Manager *m) { if (m->system_bus) return 0; - if (m->running_as != MANAGER_SESSION && m->api_bus) + if (m->running_as == MANAGER_SYSTEM && m->api_bus) m->system_bus = m->api_bus; else { if (!(m->system_bus = dbus_bus_get_private(DBUS_BUS_SYSTEM, &error))) { @@ -819,7 +819,7 @@ static int bus_init_api(Manager *m) { if (m->api_bus) return 0; - if (m->running_as != MANAGER_SESSION && m->system_bus) + if (m->running_as == MANAGER_SYSTEM && m->system_bus) m->api_bus = m->system_bus; else { if (!(m->api_bus = dbus_bus_get_private(m->running_as == MANAGER_SESSION ? DBUS_BUS_SESSION : DBUS_BUS_SYSTEM, &error))) { @@ -914,7 +914,7 @@ static int bus_init_private(Manager *m) { return 0; /* We want the private bus only when running as init */ - if (m->running_as != MANAGER_INIT) + if (m->running_as != MANAGER_SYSTEM) return 0; if (!(m->private_bus = dbus_server_listen("unix:abstract=/org/freedesktop/systemd1/private", &error))) { @@ -1348,11 +1348,11 @@ int bus_broadcast(Manager *m, DBusMessage *message) { assert(message); SET_FOREACH(c, m->bus_connections_for_dispatch, i) - if (c != m->system_bus || m->running_as != MANAGER_SESSION) + if (c != m->system_bus || m->running_as == MANAGER_SYSTEM) oom = !dbus_connection_send(c, message, NULL); SET_FOREACH(c, m->bus_connections, i) - if (c != m->system_bus || m->running_as != MANAGER_SESSION) + if (c != m->system_bus || m->running_as == MANAGER_SYSTEM) oom = !dbus_connection_send(c, message, NULL); return oom ? -ENOMEM : 0; @@ -1460,6 +1460,22 @@ int bus_property_append_int32(Manager *m, DBusMessageIter *i, const char *proper return 0; } +int bus_property_append_size(Manager *m, DBusMessageIter *i, const char *property, void *data) { + uint64_t u; + + assert(m); + assert(i); + assert(property); + assert(data); + + u = (uint64_t) *(size_t*) data; + + if (!dbus_message_iter_append_basic(i, DBUS_TYPE_UINT64, &u)) + return -ENOMEM; + + return 0; +} + int bus_parse_strv(DBusMessage *m, char ***_l) { DBusMessageIter iter, sub; unsigned n = 0, i = 0;