X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Fconf-files.c;h=92204a6a09eb92aebeea87954267dad392538c7c;hp=7ba4bee43bbc2efd091c405c6716f2335548eb53;hb=fa28bc2df724e4aff46d19cb7aa732cc64c71061;hpb=250a918dc4c8a15d927deecc3b3f6a0604657ae4 diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c index 7ba4bee43..92204a6a0 100644 --- a/src/shared/conf-files.c +++ b/src/shared/conf-files.c @@ -71,7 +71,7 @@ static int files_add(Hashmap *h, const char *root, const char *path, const char if (!p) return -ENOMEM; - r = hashmap_put(h, path_get_file_name(p), p); + r = hashmap_put(h, basename(p), p); if (r == -EEXIST) { log_debug("Skipping overridden file: %s.", p); free(p); @@ -92,7 +92,7 @@ static int base_cmp(const void *a, const void *b) { s1 = *(char * const *)a; s2 = *(char * const *)b; - return strcmp(path_get_file_name(s1), path_get_file_name(s2)); + return strcmp(basename(s1), basename(s2)); } static int conf_files_list_strv_internal(char ***strv, const char *suffix, const char *root, char **dirs) { @@ -148,12 +148,18 @@ int conf_files_list_strv(char ***strv, const char *suffix, const char *root, con } int conf_files_list(char ***strv, const char *suffix, const char *root, const char *dir, ...) { - char **dirs; + _cleanup_strv_free_ char **dirs = NULL; + va_list ap; assert(strv); assert(suffix); - dirs = strv_from_stdarg_alloca(dir); + va_start(ap, dir); + dirs = strv_new_ap(dir, ap); + va_end(ap); + + if (!dirs) + return -ENOMEM; return conf_files_list_strv_internal(strv, suffix, root, dirs); }