Merge pull request #33376 from yuwata/strv_sort_uniq

strv: introduce strv_sort_uniq()
This commit is contained in:
Luca Boccassi
2024-06-18 00:22:19 +01:00
committed by GitHub
13 changed files with 106 additions and 26 deletions
+2 -2
View File
@@ -941,11 +941,11 @@ int replace_env_argv(
}
if (ret_unset_variables) {
strv_uniq(strv_sort(unset_variables));
strv_sort_uniq(unset_variables);
*ret_unset_variables = TAKE_PTR(unset_variables);
}
if (ret_bad_variables) {
strv_uniq(strv_sort(bad_variables));
strv_sort_uniq(bad_variables);
*ret_bad_variables = TAKE_PTR(bad_variables);
}
+15
View File
@@ -706,6 +706,21 @@ char** strv_sort(char **l) {
return l;
}
char** strv_sort_uniq(char **l) {
if (strv_isempty(l))
return l;
char **tail = strv_sort(l), *prev = NULL;
STRV_FOREACH(i, l)
if (streq_ptr(*i, prev))
free(*i);
else
*(tail++) = prev = *i;
*tail = NULL;
return l;
}
int strv_compare(char * const *a, char * const *b) {
int r;
+1
View File
@@ -161,6 +161,7 @@ bool strv_overlap(char * const *a, char * const *b) _pure_;
_STRV_FOREACH_PAIR(x, y, l, UNIQ_T(i, UNIQ))
char** strv_sort(char **l);
char** strv_sort_uniq(char **l);
void strv_print_full(char * const *l, const char *prefix);
static inline void strv_print(char * const *l) {
strv_print_full(l, NULL);
+1 -2
View File
@@ -1519,8 +1519,7 @@ int get_timezones(char ***ret) {
if (r < 0)
return r;
strv_sort(zones);
strv_uniq(zones);
strv_sort_uniq(zones);
*ret = TAKE_PTR(zones);
return 0;