From: Lennart Poettering Date: Wed, 7 Oct 2020 19:56:41 +0000 (+0200) Subject: systemctl: move compare_unit_info() to bus-unit-util.[ch] X-Git-Tag: v247-rc1~109^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4dcc0653b57a6930bcd88d0f91df47b996308112;p=thirdparty%2Fsystemd.git systemctl: move compare_unit_info() to bus-unit-util.[ch] It's an auxiliary function to the UnitInfo structures, and very generic. Let's hence move it over to the other code operating with UnitInfo, even if it's not used by code outside of systemctl (yet). --- diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c index 3ae3c12f921..6fe6131292d 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 a0b496f62c8..544767b0336 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 ec06243ab3f..1a283f64c96 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;