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;
|
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) \
|
#define STRV_FOREACH_BACKWARDS(s, l) \
|
||||||
for (; (l) && ((s) >= (l)); (s)--)
|
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);
|
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) {
|
static int list_timezones(DBusConnection *bus, char **args, unsigned n) {
|
||||||
_cleanup_fclose_ FILE *f = NULL;
|
_cleanup_fclose_ FILE *f = NULL;
|
||||||
_cleanup_strv_free_ char **zones = NULL;
|
_cleanup_strv_free_ char **zones = NULL;
|
||||||
|
@ -416,12 +410,11 @@ static int list_timezones(DBusConnection *bus, char **args, unsigned n) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zones)
|
if (zones)
|
||||||
zones[n_zones] = 0;
|
zones[n_zones] = NULL;
|
||||||
|
|
||||||
qsort(zones, n_zones, sizeof(char*), zone_compare);
|
|
||||||
|
|
||||||
pager_open_if_enabled();
|
pager_open_if_enabled();
|
||||||
|
|
||||||
|
strv_sort(zones);
|
||||||
STRV_FOREACH(i, zones)
|
STRV_FOREACH(i, zones)
|
||||||
puts(*i);
|
puts(*i);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue