From 4dcc0653b57a6930bcd88d0f91df47b996308112 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 7 Oct 2020 21:56:41 +0200 Subject: [PATCH] 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). --- src/shared/bus-unit-util.c | 17 +++++++++++++++++ src/shared/bus-unit-util.h | 2 ++ src/systemctl/systemctl.c | 21 ++------------------- 3 files changed, 21 insertions(+), 19 deletions(-) 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; -- 2.25.1