set: introduce strv_sort()
This commit is contained in:
parent
9590dfe771
commit
857a493d55
|
@ -735,3 +735,18 @@ bool strv_overlap(char **a, char **b) {
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int str_compare(const void *_a, const void *_b) {
|
||||
const char **a = (const char**) _a, **b = (const char**) _b;
|
||||
|
||||
return strcmp(*a, *b);
|
||||
}
|
||||
|
||||
char **strv_sort(char **l) {
|
||||
|
||||
if (strv_isempty(l))
|
||||
return l;
|
||||
|
||||
qsort(l, strv_length(l), sizeof(char*), str_compare);
|
||||
return l;
|
||||
}
|
||||
|
|
|
@ -80,3 +80,5 @@ bool strv_overlap(char **a, char **b);
|
|||
|
||||
#define STRV_FOREACH_BACKWARDS(s, l) \
|
||||
for (; (l) && ((s) >= (l)); (s)--)
|
||||
|
||||
char **strv_sort(char **l);
|
||||
|
|
|
@ -349,12 +349,6 @@ static int set_ntp(DBusConnection *bus, char **args, unsigned n) {
|
|||
DBUS_TYPE_INVALID);
|
||||
}
|
||||
|
||||
static int zone_compare(const void *_a, const void *_b) {
|
||||
const char **a = (const char**) _a, **b = (const char**) _b;
|
||||
|
||||
return strcmp(*a, *b);
|
||||
}
|
||||
|
||||
static int list_timezones(DBusConnection *bus, char **args, unsigned n) {
|
||||
_cleanup_fclose_ FILE *f = NULL;
|
||||
_cleanup_strv_free_ char **zones = NULL;
|
||||
|
@ -416,12 +410,11 @@ static int list_timezones(DBusConnection *bus, char **args, unsigned n) {
|
|||
}
|
||||
|
||||
if (zones)
|
||||
zones[n_zones] = 0;
|
||||
|
||||
qsort(zones, n_zones, sizeof(char*), zone_compare);
|
||||
zones[n_zones] = NULL;
|
||||
|
||||
pager_open_if_enabled();
|
||||
|
||||
strv_sort(zones);
|
||||
STRV_FOREACH(i, zones)
|
||||
puts(*i);
|
||||
|
||||
|
|
Loading…
Reference in New Issue