chiark / gitweb /
tmpfiles: nicer message when two or more conflicting lines are configured for the...
[elogind.git] / src / tmpfiles.c
index 120236c5cc07490f03724b694e77e831f9987f92..984eaf0de192538f0209fa3880a8b03ab8f3f86d 100644 (file)
@@ -149,7 +149,7 @@ static int dir_cleanup(
                                 DIR *sub_dir;
                                 int q;
 
-                                sub_dir = xopendirat(dirfd(d), dent->d_name);
+                                sub_dir = xopendirat(dirfd(d), dent->d_name, O_NOFOLLOW);
                                 if (sub_dir == NULL) {
                                         if (errno != ENOENT) {
                                                 log_error("opendir(%s/%s) failed: %m", p, dent->d_name);
@@ -591,6 +591,12 @@ static int parse_line(const char *fname, unsigned line, const char *buffer, cons
         }
 
         if ((r = hashmap_put(items, i->path, i)) < 0) {
+                if (r == -EEXIST) {
+                        log_warning("Two or more conflicting lines for %s configured, ignoring.", i->path);
+                        r = 0;
+                        goto finish;
+                }
+
                 log_error("Failed to insert item %s: %s", i->path, strerror(-r));
                 goto finish;
         }