diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c index 3ae3c12f92..6fe6131292 100644 --- a/src/shared/bus-unit-util.c +++ b/src/shared/bus-unit-util.c @@ -2407,3 +2407,20 @@ int unit_load_state(sd_bus *bus, const char *name, char **load_state) { return 0; } + +int unit_info_compare(const UnitInfo *a, const UnitInfo *b) { + int r; + + /* First, order by machine */ + r = strcasecmp_ptr(a->machine, b->machine); + if (r != 0) + return r; + + /* Second, order by unit type */ + r = strcasecmp_ptr(strrchr(a->id, '.'), strrchr(b->id, '.')); + if (r != 0) + return r; + + /* Third, order by name */ + return strcasecmp(a->id, b->id); +} diff --git a/src/shared/bus-unit-util.h b/src/shared/bus-unit-util.h index a0b496f62c..544767b033 100644 --- a/src/shared/bus-unit-util.h +++ b/src/shared/bus-unit-util.h @@ -28,3 +28,5 @@ int bus_append_unit_property_assignment_many(sd_bus_message *m, UnitType t, char int bus_deserialize_and_dump_unit_file_changes(sd_bus_message *m, bool quiet, UnitFileChange **changes, size_t *n_changes); int unit_load_state(sd_bus *bus, const char *name, char **load_state); + +int unit_info_compare(const UnitInfo *a, const UnitInfo *b); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index ec06243ab3..1a283f64c9 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -323,23 +323,6 @@ static bool install_client_side(void) { return false; } -static int compare_unit_info(const UnitInfo *a, const UnitInfo *b) { - int r; - - /* First, order by machine */ - r = strcasecmp_ptr(a->machine, b->machine); - if (r != 0) - return r; - - /* Second, order by unit type */ - r = strcasecmp_ptr(strrchr(a->id, '.'), strrchr(b->id, '.')); - if (r != 0) - return r; - - /* Third, order by name */ - return strcasecmp(a->id, b->id); -} - static const char* unit_type_suffix(const char *name) { const char *dot; @@ -865,7 +848,7 @@ static int list_units(int argc, char *argv[], void *userdata) { return r; } - typesafe_qsort(unit_infos, r, compare_unit_info); + typesafe_qsort(unit_infos, r, unit_info_compare); return output_units_list(unit_infos, r); } @@ -5724,7 +5707,7 @@ static int show_all( c = (unsigned) r; - typesafe_qsort(unit_infos, c, compare_unit_info); + typesafe_qsort(unit_infos, c, unit_info_compare); for (u = unit_infos; u < unit_infos + c; u++) { _cleanup_free_ char *p = NULL;