From: Kay Sievers Date: Mon, 7 May 2012 11:20:29 +0000 (+0200) Subject: conf_files_list(): split out conf_files_list_strv() X-Git-Tag: v183~151 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0a1a17aa2d9112470124ef5afb9314343777dc29;p=systemd conf_files_list(): split out conf_files_list_strv() --- diff --git a/src/shared/util.c b/src/shared/util.c index d86df175..2bfa2cb4 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -4915,29 +4915,13 @@ static int base_cmp(const void *a, const void *b) { return strcmp(file_name_from_path(s1), file_name_from_path(s2)); } -int conf_files_list(char ***strv, const char *suffix, const char *dir, ...) { +int conf_files_list_strv(char ***strv, const char *suffix, const char **dirs) { Hashmap *fh = NULL; - char **dirs = NULL; char **files = NULL; - char **p; - va_list ap; + const char **p; int r = 0; - va_start(ap, dir); - dirs = strv_new_ap(dir, ap); - va_end(ap); - if (!dirs) { - r = -ENOMEM; - goto finish; - } - if (!strv_path_canonicalize(dirs)) { - r = -ENOMEM; - goto finish; - } - if (!strv_uniq(dirs)) { - r = -ENOMEM; - goto finish; - } + assert(dirs); fh = hashmap_new(string_hash_func, string_compare_func); if (!fh) { @@ -4959,16 +4943,40 @@ int conf_files_list(char ***strv, const char *suffix, const char *dir, ...) { r = -ENOMEM; goto finish; } - qsort(files, hashmap_size(fh), sizeof(char *), base_cmp); finish: - strv_free(dirs); hashmap_free(fh); *strv = files; return r; } +int conf_files_list(char ***strv, const char *suffix, const char *dir, ...) { + char **dirs = NULL; + va_list ap; + int r; + + va_start(ap, dir); + dirs = strv_new_ap(dir, ap); + va_end(ap); + if (!dirs) { + r = -ENOMEM; + goto finish; + } + + if (!strv_path_canonicalize(dirs)) { + r = -ENOMEM; + goto finish; + } + strv_uniq(dirs); + + r = conf_files_list_strv(strv, suffix, (const char **)dirs); + +finish: + strv_free(dirs); + return r; +} + int hwclock_is_localtime(void) { FILE *f; bool local = false; diff --git a/src/shared/util.h b/src/shared/util.h index 0246dfd8..7a2661a0 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -461,6 +461,7 @@ int symlink_or_copy_atomic(const char *from, const char *to); int fchmod_umask(int fd, mode_t mode); int conf_files_list(char ***strv, const char *suffix, const char *dir, ...); +int conf_files_list_strv(char ***strv, const char *suffix, const char **dirs); int hwclock_is_localtime(void); int hwclock_apply_localtime_delta(int *min);