diff options
-rw-r--r-- | config/fdclosedir.c | 8 | ||||
-rw-r--r-- | config/header.mk | 1 | ||||
-rw-r--r-- | src/dir.c | 2 | ||||
-rw-r--r-- | src/dir.h | 2 |
4 files changed, 11 insertions, 2 deletions
diff --git a/config/fdclosedir.c b/config/fdclosedir.c new file mode 100644 index 0000000..f4ad1f5 --- /dev/null +++ b/config/fdclosedir.c @@ -0,0 +1,8 @@ +// Copyright © Tavian Barnes <tavianator@tavianator.com> +// SPDX-License-Identifier: 0BSD + +#include <dirent.h> + +int main(void) { + return fdclosedir(opendir(".")); +} diff --git a/config/header.mk b/config/header.mk index 36ad98e..04fbdec 100644 --- a/config/header.mk +++ b/config/header.mk @@ -11,6 +11,7 @@ include config/exports.mk HEADERS := \ ${GEN}/acl-is-trivial-np.h \ ${GEN}/confstr.h \ + ${GEN}/fdclosedir.h \ ${GEN}/getdents.h \ ${GEN}/getdents64.h \ ${GEN}/getdents64-syscall.h \ @@ -353,7 +353,7 @@ int bfs_closedir(struct bfs_dir *dir) { int bfs_unwrapdir(struct bfs_dir *dir) { #if BFS_USE_GETDENTS int ret = dir->fd; -#elif __FreeBSD__ +#elif BFS_HAS_FDCLOSEDIR int ret = fdclosedir(dir->dir); #endif @@ -152,7 +152,7 @@ int bfs_closedir(struct bfs_dir *dir); * Whether the bfs_unwrapdir() function is supported. */ #ifndef BFS_USE_UNWRAPDIR -# define BFS_USE_UNWRAPDIR (BFS_USE_GETDENTS || __FreeBSD__) +# define BFS_USE_UNWRAPDIR (BFS_USE_GETDENTS || BFS_HAS_FDCLOSEDIR) #endif #if BFS_USE_UNWRAPDIR |