X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Flogind.c;h=229af714f808fe97e6d98e232356114808b237ba;hb=490d99e9bf949a855ff9183465f2c265777a3272;hp=bae9a95f38066868e3960d9b3ab412fcf1a60b72;hpb=0d0f0c50d3a1d90f03972a6abb82e6413daaa583;p=elogind.git diff --git a/src/login/logind.c b/src/login/logind.c index bae9a95f3..229af714f 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; }