]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tmpfiles: Don't fail if file does not exist in item_do()
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 8 May 2024 09:35:21 +0000 (11:35 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 8 May 2024 10:01:37 +0000 (12:01 +0200)
If the file was removed by some other program, we should just go
to the next one without failing. item_do() is only used for recursive
globs instead of fixed paths so skipping on missing files makes sense
(unlike if the path was fixed where we should probably fail).

Fixes #32691 (hopefully)

src/tmpfiles/tmpfiles.c

index ec6d8dcfa164d994bbe046dd0d0cd74719268f39..722dff100a13547eeb54fe507b1bee460d6795c0 100644 (file)
@@ -2512,7 +2512,7 @@ static int item_do(
                 fdaction_t action) {
 
         struct stat st;
-        int r = 0, q;
+        int r = 0, q = 0;
 
         assert(c);
         assert(i);
@@ -2547,9 +2547,10 @@ static int item_do(
                                 continue;
 
                         de_fd = openat(fd, de->d_name, O_NOFOLLOW|O_CLOEXEC|O_PATH);
-                        if (de_fd < 0)
-                                q = log_error_errno(errno, "Failed to open() file '%s': %m", de->d_name);
-                        else {
+                        if (de_fd < 0) {
+                                if (errno != -ENOENT)
+                                        q = log_error_errno(errno, "Failed to open file '%s': %m", de->d_name);
+                        } else {
                                 _cleanup_free_ char *de_path = NULL;
 
                                 de_path = path_join(path, de->d_name);