stat-util: make sure dir_is_empty_at() does something useful in all cases

This commit is contained in:
Lennart Poettering
2021-10-23 00:31:33 +02:00
parent a068aceafb
commit d96f21eec2

View File

@@ -80,9 +80,15 @@ int dir_is_empty_at(int dir_fd, const char *path) {
ssize_t n;
if (path) {
assert(dir_fd >= 0 || dir_fd == AT_FDCWD);
fd = openat(dir_fd, path, O_RDONLY|O_DIRECTORY|O_CLOEXEC);
if (fd < 0)
return -errno;
} else if (dir_fd == AT_FDCWD) {
fd = open(".", O_RDONLY|O_DIRECTORY|O_CLOEXEC);
if (fd < 0)
return -errno;
} else {
/* Note that DUPing is not enough, as the internal pointer would still be shared and moved
* getedents64(). */