summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/login/inhibit.c69
-rw-r--r--src/login/logind-dbus.c31
-rw-r--r--src/login/logind.c47
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;
}