summaryrefslogtreecommitdiffstats
path: root/man2/readdir.2
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--man2/readdir.2116
1 files changed, 116 insertions, 0 deletions
diff --git a/man2/readdir.2 b/man2/readdir.2
new file mode 100644
index 0000000..6b06ff4
--- /dev/null
+++ b/man2/readdir.2
@@ -0,0 +1,116 @@
+.\" Copyright (C) 1995 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\" Written 11 June 1995 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified 22 July 1995 by Michael Chastain <mec@duracef.shout.net>:
+.\" In 1.3.X, returns only one entry each time; return value is different.
+.\" Modified 2004-12-01, mtk, fixed headers listed in SYNOPSIS
+.\"
+.TH readdir 2 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+readdir \- read directory entry
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
+.B #include <unistd.h>
+.PP
+.BI "int syscall(SYS_readdir, unsigned int " fd ,
+.BI " struct old_linux_dirent *" dirp ", unsigned int " count );
+.fi
+.PP
+.IR Note :
+There is no definition of
+.BR "struct old_linux_dirent" ;
+see NOTES.
+.SH DESCRIPTION
+This is not the function you are interested in.
+Look at
+.BR readdir (3)
+for the POSIX conforming C library interface.
+This page documents the bare kernel system call interface,
+which is superseded by
+.BR getdents (2).
+.PP
+.BR readdir ()
+reads one
+.I old_linux_dirent
+structure from the directory
+referred to by the file descriptor
+.I fd
+into the buffer pointed to by
+.IR dirp .
+The argument
+.I count
+is ignored; at most one
+.I old_linux_dirent
+structure is read.
+.PP
+The
+.I old_linux_dirent
+structure is declared (privately in Linux kernel file
+.BR fs/readdir.c )
+as follows:
+.PP
+.in +4n
+.EX
+struct old_linux_dirent {
+ unsigned long d_ino; /* inode number */
+ unsigned long d_offset; /* offset to this \fIold_linux_dirent\fP */
+ unsigned short d_namlen; /* length of this \fId_name\fP */
+ char d_name[1]; /* filename (null\-terminated) */
+}
+.EE
+.in
+.PP
+.I d_ino
+is an inode number.
+.I d_offset
+is the distance from the start of the directory to this
+.IR old_linux_dirent .
+.I d_reclen
+is the size of
+.IR d_name ,
+not counting the terminating null byte (\[aq]\e0\[aq]).
+.I d_name
+is a null-terminated filename.
+.SH RETURN VALUE
+On success, 1 is returned.
+On end of directory, 0 is returned.
+On error, \-1 is returned, and
+.I errno
+is set to indicate the error.
+.SH ERRORS
+.TP
+.B EBADF
+Invalid file descriptor
+.IR fd .
+.TP
+.B EFAULT
+Argument points outside the calling process's address space.
+.TP
+.B EINVAL
+Result buffer is too small.
+.TP
+.B ENOENT
+No such directory.
+.TP
+.B ENOTDIR
+File descriptor does not refer to a directory.
+.SH VERSIONS
+You will need to define the
+.I old_linux_dirent
+structure yourself.
+However, probably you should use
+.BR readdir (3)
+instead.
+.PP
+This system call does not exist on x86-64.
+.SH STANDARDS
+Linux.
+.SH SEE ALSO
+.BR getdents (2),
+.BR readdir (3)