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.
for (;;) {
int k;
- char *p, *f;
+ char *p;
k = readdir_r(dir, &buffer, &de);
if (k != 0) {
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: