- if (!dbus_connection_add_filter(bus, wait_filter, &d, NULL)) {
- log_error("Failed to add filter.");
- r = -ENOMEM;
- goto finish;
- }
-
- while (!set_isempty(s) &&
- dbus_connection_read_write_dispatch(bus, -1))
- ;
-
- if (!arg_quiet && d.result) {
- if (streq(d.result, "timeout"))
- log_error("Job timed out.");
- else if (streq(d.result, "canceled"))
- log_error("Job canceled.");
- else if (streq(d.result, "dependency"))
- log_error("A dependency job failed. See system journal for details.");
- else if (!streq(d.result, "done") && !streq(d.result, "skipped"))
- log_error("Job failed. See system journal and 'systemctl status' for details.");
- }
-
- if (streq_ptr(d.result, "timeout"))
- r = -ETIME;
- else if (streq_ptr(d.result, "canceled"))
- r = -ECANCELED;
- else if (!streq_ptr(d.result, "done") && !streq_ptr(d.result, "skipped"))
- r = -EIO;
- else
- r = 0;
-
- free(d.result);
-
-finish:
- /* This is slightly dirty, since we don't undo the filter registration. */
-
- return r;
-}
-
-static int get_unit_path(
- DBusConnection *bus,
- const char *name,
- char **unit_path) {
-
- DBusError error;
- DBusMessage *m = NULL, *reply = NULL;
- char *path;
- int r = 0;