diff --git a/meson.build b/meson.build index 7d97ba2fe9..6c5d4bb34c 100644 --- a/meson.build +++ b/meson.build @@ -546,6 +546,7 @@ foreach ident : [ ['mount_setattr', '''#include '''], ['move_mount', '''#include '''], ['open_tree', '''#include '''], + ['getdents64', '''#include '''], ] have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE') diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h index 57dae77b53..5e80fa79fd 100644 --- a/src/basic/missing_syscall.h +++ b/src/basic/missing_syscall.h @@ -540,3 +540,19 @@ static inline int missing_move_mount( # define move_mount missing_move_mount #endif + +/* ======================================================================= */ + +#if !HAVE_GETDENTS64 + +static inline ssize_t missing_getdents64(int fd, void *buffer, size_t length) { +# if defined __NR_getdents64 && __NR_getdents64 >= 0 + return syscall(__NR_getdents64, fd, buffer, length); +# else + errno = ENOSYS; + return -1; +# endif +} + +# define getdents64 missing_getdents64 +#endif