From d05f1cae2f2ff2828f482f943f86125dbada3f25 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Mon, 12 Aug 2013 00:57:16 +0200 Subject: [PATCH] cgroup-agent: port to sd-bus --- Makefile.am | 2 +- src/cgroups-agent/cgroups-agent.c | 68 +++++++++---------------------- 2 files changed, 21 insertions(+), 49 deletions(-) diff --git a/Makefile.am b/Makefile.am index d2ed1dc1d..ad9c60a56 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1801,7 +1801,7 @@ systemd_cgroups_agent_CFLAGS = \ systemd_cgroups_agent_LDADD = \ libsystemd-shared.la \ - libsystemd-dbus.la + libsystemd-bus.la # ------------------------------------------------------------------------------ systemctl_SOURCES = \ diff --git a/src/cgroups-agent/cgroups-agent.c b/src/cgroups-agent/cgroups-agent.c index a47949a18..256de1f50 100644 --- a/src/cgroups-agent/cgroups-agent.c +++ b/src/cgroups-agent/cgroups-agent.c @@ -19,24 +19,20 @@ along with systemd; If not, see . ***/ -#include - #include +#include "sd-bus.h" + #include "log.h" -#include "dbus-common.h" +#include "bus-util.h" int main(int argc, char *argv[]) { - DBusError error; - DBusConnection *bus = NULL; - DBusMessage *m = NULL; - int r = EXIT_FAILURE; - - dbus_error_init(&error); + _cleanup_bus_unref_ sd_bus *bus = NULL; + int r; if (argc != 2) { log_error("Incorrect number of arguments."); - goto finish; + return EXIT_FAILURE; } log_set_target(LOG_TARGET_AUTO); @@ -48,47 +44,23 @@ int main(int argc, char *argv[]) { * this to avoid an activation loop when we start dbus when we * are called when the dbus service is shut down. */ - bus = dbus_connection_open_private("unix:path=/run/systemd/private", &error); - if (!bus) { - log_warning("Failed to get D-Bus connection: %s", bus_error_message(&error)); - goto finish; - } - - if (bus_check_peercred(bus) < 0) { - log_error("Bus owner not root."); - goto finish; - } - - m = dbus_message_new_signal("/org/freedesktop/systemd1/agent", "org.freedesktop.systemd1.Agent", "Released"); - if (!m) { - log_error("Could not allocate signal message."); - goto finish; - } - - if (!dbus_message_append_args(m, - DBUS_TYPE_STRING, &argv[1], - DBUS_TYPE_INVALID)) { - log_error("Could not attach group information to signal message."); - goto finish; + r = bus_connect_system(&bus); + if (r < 0) { + log_warning("Failed to get D-Bus connection: %s", strerror(-r)); + return EXIT_FAILURE; } - if (!dbus_connection_send(bus, m, NULL)) { - log_error("Failed to send signal message on private connection."); - goto finish; - } - - r = EXIT_SUCCESS; - -finish: - if (bus) { - dbus_connection_flush(bus); - dbus_connection_close(bus); - dbus_connection_unref(bus); + r = sd_bus_emit_signal(bus, + "/org/freedesktop/systemd1/agent", + "org.freedesktop.systemd1.Agent", + "Released", + "s", argv[1]); + if (r < 0) { + log_error("Failed to send signal message on private connection: %s", strerror(-r)); + return EXIT_FAILURE; } - if (m) - dbus_message_unref(m); + sd_bus_flush(bus); - dbus_error_free(&error); - return r; + return EXIT_SUCCESS; } -- 2.30.2