summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
authorMichal Schmidt <mschmidt@redhat.com>2012-07-24 23:18:25 +0200
committerMichal Schmidt <mschmidt@redhat.com>2012-07-24 23:33:54 +0200
commit578ac0604e6c10b267f73e114bc2215aa3f6619a (patch)
tree29d1949945106492f8519f2020584e022bf107b3 /src/shared
parentff87b7e7486f954a18536bebbd83a81b7e7749b2 (diff)
conf-files: continue searching if one dir fails
A problem with systemd-tmpfiles has been observed where the service failed just because one of the configuration directories could not be read due to SELinux policy. Complain about the failure, but try to go on. https://bugzilla.redhat.com/show_bug.cgi?id=839736
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/conf-files.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c
index 487c9a5e68..83e4cce156 100644
--- a/src/shared/conf-files.c
+++ b/src/shared/conf-files.c
@@ -93,7 +93,7 @@ int conf_files_list_strv(char ***strv, const char *suffix, const char **dirs) {
Hashmap *fh = NULL;
char **files = NULL;
const char **p;
- int r = 0;
+ int r;
assert(dirs);
@@ -104,11 +104,10 @@ int conf_files_list_strv(char ***strv, const char *suffix, const char **dirs) {
}
STRV_FOREACH(p, dirs) {
- if (files_add(fh, *p, suffix) < 0) {
- log_error("Failed to search for files.");
- r = -EINVAL;
- goto finish;
- }
+ r = files_add(fh, *p, suffix);
+ if (r < 0)
+ log_warning("Failed to search for files in %s: %s",
+ *p, strerror(-r));
}
files = hashmap_get_strv(fh);
@@ -118,6 +117,7 @@ int conf_files_list_strv(char ***strv, const char *suffix, const char **dirs) {
goto finish;
}
qsort(files, hashmap_size(fh), sizeof(char *), base_cmp);
+ r = 0;
finish:
hashmap_free(fh);