conf_files_list(): files-add() - do not canonicalize file names

File names in /etc, /run, /usr/lib are sorted/overridden by basename.
Sorting things like "/dev/null" with the basename "null" in the hash
of config files breaks the ordering and the overriding logic.
This commit is contained in:
Kay Sievers 2012-05-07 13:15:25 +02:00
parent eecd1362f7
commit cd9556cc84

View file

@ -4877,7 +4877,7 @@ static int files_add(Hashmap *h, const char *path, const char *suffix) {
for (;;) {
int k;
char *p, *f;
char *p;
k = readdir_r(dir, &buffer, &de);
if (k != 0) {
@ -4896,17 +4896,10 @@ static int files_add(Hashmap *h, const char *path, const char *suffix) {
goto finish;
}
f = canonicalize_file_name(p);
if (!f) {
log_error("Failed to canonicalize file name '%s': %m", p);
if (hashmap_put(h, file_name_from_path(p), p) <= 0) {
log_debug("Skip overridden file: %s.", p);
free(p);
continue;
}
free(p);
log_debug("found: %s\n", f);
if (hashmap_put(h, file_name_from_path(f), f) <= 0)
free(f);
}
finish: