From: Yu Watanabe Date: Sat, 18 Mar 2023 14:35:04 +0000 (+0900) Subject: rm-rf: fix errno handling X-Git-Tag: v254-rc1~860^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cd2cd095db6f26bf9889ef26f1b105843220b803;p=thirdparty%2Fsystemd.git rm-rf: fix errno handling --- diff --git a/src/shared/rm-rf.c b/src/shared/rm-rf.c index 6cc4265737b..1695e1555a2 100644 --- a/src/shared/rm-rf.c +++ b/src/shared/rm-rf.c @@ -287,8 +287,8 @@ int rm_rf_children( if (!newdirname) return log_oom(); - int newfd = openat(fd, de->d_name, - O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW|O_NOATIME); + int newfd = RET_NERRNO(openat(fd, de->d_name, + O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW|O_NOATIME)); if (newfd >= 0) { todos[n_todo++] = (TodoEntry) { TAKE_PTR(d), TAKE_PTR(dirname) }; fd = newfd; @@ -296,8 +296,8 @@ int rm_rf_children( goto next_fd; - } else if (errno != -ENOENT && ret == 0) - ret = -errno; + } else if (newfd != -ENOENT && ret == 0) + ret = newfd; } else if (r < 0 && r != -ENOENT && ret == 0) ret = r;