X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fbus-driverd%2Fbus-driverd.c;h=de2344503fe56720cf57712e88d159863a6d9346;hb=76252ffbde7e8163c67d847db2445d8c49e32457;hp=d4126a99b6a7d9cafe333c33335af9e8fa2f99b9;hpb=53461b74df0576ec091275d1a5dbee00611df1ee;p=elogind.git diff --git a/src/bus-driverd/bus-driverd.c b/src/bus-driverd/bus-driverd.c index d4126a99b..de2344503 100644 --- a/src/bus-driverd/bus-driverd.c +++ b/src/bus-driverd/bus-driverd.c @@ -484,6 +484,9 @@ static int driver_list_names(sd_bus *bus, sd_bus_message *m, void *userdata, sd_ if (r < 0) return r; + /* Let's sort the names list to make it stable */ + strv_sort(names); + return return_strv(bus, m, names); } @@ -495,6 +498,9 @@ static int driver_list_activatable_names(sd_bus *bus, sd_bus_message *m, void *u if (r < 0) return r; + /* Let's sort the names list to make it stable */ + strv_sort(names); + return return_strv(bus, m, names); } @@ -772,6 +778,13 @@ static int connect_bus(Context *c) { return 0; } +static bool check_idle(void *userdata) { + Context *c = userdata; + assert(c); + + return hashmap_isempty(c->clients); +} + int main(int argc, char *argv[]) { Context context = {}; Client *c; @@ -799,7 +812,7 @@ int main(int argc, char *argv[]) { if (r < 0) goto finish; - r = bus_event_loop_with_idle(context.event, context.bus, "org.freedesktop.DBus", DEFAULT_EXIT_USEC); + r = bus_event_loop_with_idle(context.event, context.bus, "org.freedesktop.DBus", DEFAULT_EXIT_USEC, check_idle, &context); if (r < 0) { log_error("Failed to run event loop: %s", strerror(-r)); goto finish;