diff options
-rw-r--r-- | src/login/inhibit.c | 69 | ||||
-rw-r--r-- | src/login/logind-dbus.c | 31 | ||||
-rw-r--r-- | src/login/logind.c | 47 |
3 files changed, 42 insertions, 105 deletions
diff --git a/src/login/inhibit.c b/src/login/inhibit.c index 6f24a1b671..029c9549d2 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -42,73 +42,53 @@ static enum { } arg_action = ACTION_INHIBIT; static int inhibit(DBusConnection *bus, DBusError *error) { - DBusMessage *m = NULL, *reply = NULL; + DBusMessage *reply = NULL; int fd; - assert(bus); - - m = dbus_message_new_method_call( + fd = bus_method_call_with_reply ( + bus, "org.freedesktop.login1", "/org/freedesktop/login1", "org.freedesktop.login1.Manager", - "Inhibit"); - if (!m) - return -ENOMEM; - - if (!dbus_message_append_args(m, - DBUS_TYPE_STRING, &arg_what, - DBUS_TYPE_STRING, &arg_who, - DBUS_TYPE_STRING, &arg_why, - DBUS_TYPE_STRING, &arg_mode, - DBUS_TYPE_INVALID)) { - fd = -ENOMEM; - goto finish; - } - - reply = dbus_connection_send_with_reply_and_block(bus, m, -1, error); - if (!reply) { - fd = -EIO; - goto finish; - } + "Inhibit", + &reply, + NULL, + DBUS_TYPE_STRING, &arg_what, + DBUS_TYPE_STRING, &arg_who, + DBUS_TYPE_STRING, &arg_why, + DBUS_TYPE_STRING, &arg_mode, + DBUS_TYPE_INVALID); + if (fd) + return fd; if (!dbus_message_get_args(reply, error, DBUS_TYPE_UNIX_FD, &fd, - DBUS_TYPE_INVALID)){ + DBUS_TYPE_INVALID)) fd = -EIO; - goto finish; - } - -finish: - if (m) - dbus_message_unref(m); - if (reply) - dbus_message_unref(reply); + dbus_message_unref(reply); return fd; } static int print_inhibitors(DBusConnection *bus, DBusError *error) { - DBusMessage *m, *reply; + DBusMessage *reply; unsigned n = 0; DBusMessageIter iter, sub, sub2; int r; - assert(bus); - - m = dbus_message_new_method_call( + r = bus_method_call_with_reply ( + bus, "org.freedesktop.login1", "/org/freedesktop/login1", "org.freedesktop.login1.Manager", - "ListInhibitors"); - if (!m) + "ListInhibitors", + &reply, + NULL, + DBUS_TYPE_INVALID); + if (r) return -ENOMEM; - - reply = dbus_connection_send_with_reply_and_block(bus, m, -1, error); - if (!reply) { - r = -EIO; goto finish; - } if (!dbus_message_iter_init(reply, &iter)) { r = -ENOMEM; @@ -170,9 +150,6 @@ static int print_inhibitors(DBusConnection *bus, DBusError *error) { r = 0; finish: - if (m) - dbus_message_unref(m); - if (reply) dbus_message_unref(reply); diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 86ca654518..ae9671bb1e 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -968,36 +968,21 @@ static int have_multiple_sessions( } static int send_start_unit(DBusConnection *connection, const char *unit_name, DBusError *error) { - DBusMessage *message, *reply; const char *mode = "replace"; - assert(connection); assert(unit_name); - message = dbus_message_new_method_call( + return bus_method_call_with_reply ( + connection, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", - "StartUnit"); - if (!message) - return -ENOMEM; - - if (!dbus_message_append_args(message, - DBUS_TYPE_STRING, &unit_name, - DBUS_TYPE_STRING, &mode, - DBUS_TYPE_INVALID)) { - dbus_message_unref(message); - return -ENOMEM; - } - - reply = dbus_connection_send_with_reply_and_block(connection, message, -1, error); - dbus_message_unref(message); - - if (!reply) - return -EIO; - - dbus_message_unref(reply); - return 0; + "StartUnit", + NULL, + NULL, + DBUS_TYPE_STRING, &unit_name, + DBUS_TYPE_STRING, &mode, + DBUS_TYPE_INVALID); } static int send_prepare_for(Manager *m, InhibitWhat w, bool _active) { diff --git a/src/login/logind.c b/src/login/logind.c index bae9a95f38..229af714f8 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -942,16 +942,12 @@ static int vt_is_busy(int vtnr) { int manager_spawn_autovt(Manager *m, int vtnr) { int r; - DBusMessage *message = NULL, *reply = NULL; char *name = NULL; const char *mode = "fail"; - DBusError error; assert(m); assert(vtnr >= 1); - dbus_error_init(&error); - if ((unsigned) vtnr > m->n_autovts) return 0; @@ -961,47 +957,26 @@ int manager_spawn_autovt(Manager *m, int vtnr) { else if (r > 0) return -EBUSY; - message = dbus_message_new_method_call("org.freedesktop.systemd1", "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "StartUnit"); - if (!message) { - log_error("Could not allocate message."); - r = -ENOMEM; - goto finish; - } - if (asprintf(&name, "autovt@tty%i.service", vtnr) < 0) { log_error("Could not allocate service name."); r = -ENOMEM; goto finish; } - - if (!dbus_message_append_args(message, - DBUS_TYPE_STRING, &name, - DBUS_TYPE_STRING, &mode, - DBUS_TYPE_INVALID)) { - log_error("Could not attach target and flag information to message."); - r = -ENOMEM; - goto finish; - } - - reply = dbus_connection_send_with_reply_and_block(m->bus, message, -1, &error); - if (!reply) { - log_error("Failed to start unit: %s", bus_error_message(&error)); - goto finish; - } - - r = 0; + r = bus_method_call_with_reply ( + m->bus, + "org.freedesktop.systemd1", + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "StartUnit", + NULL, + NULL, + DBUS_TYPE_STRING, &name, + DBUS_TYPE_STRING, &mode, + DBUS_TYPE_INVALID); finish: free(name); - if (message) - dbus_message_unref(message); - - if (reply) - dbus_message_unref(reply); - - dbus_error_free(&error); - return r; } |