diff options
Diffstat (limited to 'man2/getdents.2')
-rw-r--r-- | man2/getdents.2 | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/man2/getdents.2 b/man2/getdents.2 index 5dfc5353c..604a6ef6d 100644 --- a/man2/getdents.2 +++ b/man2/getdents.2 @@ -8,7 +8,7 @@ .\" Derived from 'readdir.2'. .\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com> .\" -.TH getdents 2 2023-02-05 "Linux man-pages 6.03" +.TH getdents 2 2023-05-03 "Linux man-pages 6.05.01" .SH NAME getdents, getdents64 \- get directory entries .SH LIBRARY @@ -198,19 +198,19 @@ No such directory. .B ENOTDIR File descriptor does not refer to a directory. .SH STANDARDS +None. +.SH HISTORY SVr4. .\" SVr4 documents additional ENOLINK, EIO error conditions. -.SH NOTES -Library support for +.TP .BR getdents64 () -was added in glibc 2.30; +glibc 2.30. +.SH NOTES glibc does not provide a wrapper for .BR getdents (); call .BR getdents () -(or -.BR getdents64 () -on earlier glibc versions) using +using .BR syscall (2). In that case you will need to define the .I linux_dirent @@ -259,16 +259,16 @@ inode# file type d_reclen d_off d_name #include <stdlib.h> #include <sys/syscall.h> #include <unistd.h> - +\& struct linux_dirent { unsigned long d_ino; off_t d_off; unsigned short d_reclen; char d_name[]; }; - +\& #define BUF_SIZE 1024 - +\& int main(int argc, char *argv[]) { @@ -277,19 +277,19 @@ main(int argc, char *argv[]) char buf[BUF_SIZE]; long nread; struct linux_dirent *d; - +\& fd = open(argc > 1 ? argv[1] : ".", O_RDONLY | O_DIRECTORY); if (fd == \-1) err(EXIT_FAILURE, "open"); - +\& for (;;) { nread = syscall(SYS_getdents, fd, buf, BUF_SIZE); if (nread == \-1) err(EXIT_FAILURE, "getdents"); - +\& if (nread == 0) break; - +\& printf("\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- nread=%ld \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\en", nread); printf("inode# file type d_reclen d_off d_name\en"); for (size_t bpos = 0; bpos < nread;) { @@ -308,7 +308,7 @@ main(int argc, char *argv[]) bpos += d\->d_reclen; } } - +\& exit(EXIT_SUCCESS); } .EE |