diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c index c7293db6989..a7812714aa9 100644 --- a/src/basic/stat-util.c +++ b/src/basic/stat-util.c @@ -106,7 +106,7 @@ int dir_is_empty_at(int dir_fd, const char *path) { msan_unpoison(&buffer, n); FOREACH_DIRENT_IN_BUFFER(de, &buffer.de, n) - if (!dot_or_dot_dot(de->d_name)) + if (!hidden_or_backup_file(de->d_name)) return 0; return 1; diff --git a/src/test/test-stat-util.c b/src/test/test-stat-util.c index c5afde02d0c..a8fdbb7c183 100644 --- a/src/test/test-stat-util.c +++ b/src/test/test-stat-util.c @@ -151,7 +151,7 @@ TEST(fd_is_ns) { TEST(dir_is_empty) { _cleanup_(rm_rf_physical_and_freep) char *empty_dir = NULL; - _cleanup_free_ char *j = NULL, *jj = NULL; + _cleanup_free_ char *j = NULL, *jj = NULL, *jjj = NULL; assert_se(dir_is_empty_at(AT_FDCWD, "/proc") == 0); assert_se(dir_is_empty_at(AT_FDCWD, "/icertainlydontexistdoi") == -ENOENT); @@ -169,11 +169,17 @@ TEST(dir_is_empty) { assert_se(jj); assert_se(touch(jj) >= 0); + jjj = path_join(empty_dir, ".qqq"); + assert_se(jjj); + assert_se(touch(jjj) >= 0); + assert_se(dir_is_empty_at(AT_FDCWD, empty_dir) == 0); assert_se(unlink(j) >= 0); assert_se(dir_is_empty_at(AT_FDCWD, empty_dir) == 0); assert_se(unlink(jj) >= 0); assert_se(dir_is_empty_at(AT_FDCWD, empty_dir) > 0); + assert_se(unlink(jjj) >= 0); + assert_se(dir_is_empty_at(AT_FDCWD, empty_dir) > 0); } static int intro(void) {