summaryrefslogtreecommitdiff
path: root/libc/src/__support/File/linux_dir.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libc/src/__support/File/linux_dir.cpp')
-rw-r--r--libc/src/__support/File/linux_dir.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/libc/src/__support/File/linux_dir.cpp b/libc/src/__support/File/linux_dir.cpp
index 86aaaae907d2..aae565ffb337 100644
--- a/libc/src/__support/File/linux_dir.cpp
+++ b/libc/src/__support/File/linux_dir.cpp
@@ -34,8 +34,13 @@ ErrorOr<int> platform_opendir(const char *name) {
}
ErrorOr<size_t> platform_fetch_dirents(int fd, cpp::span<uint8_t> buffer) {
- long size =
- __llvm_libc::syscall_impl(SYS_getdents, fd, buffer.data(), buffer.size());
+#ifdef SYS_getdents64
+ long size = __llvm_libc::syscall_impl(SYS_getdents64, fd, buffer.data(),
+ buffer.size());
+#else
+#error "getdents64 syscalls not available to perform a fetch dirents operation."
+#endif
+
if (size < 0) {
return __llvm_libc::Error(static_cast<int>(-size));
}