readdir (2) Linux Manual Page
readdir – read directory entry
Synopsis
int readdir(unsigned int fd, struct old_linux_dirent *dirp,Note: There is no glibc wrapper for this system call; see NOTES.
unsigned int count);
Description
This is not the function you are interested in. Look at readdir(3) for the POSIX conforming C library interface. This page documents the bare kernel system call interface, which is superseded by getdents(2).readdir() reads one old_linux_dirent structure from the directory referred to by the file descriptor fd into the buffer pointed to by dirp. The argument count is ignored; at most one old_linux_dirent structure is read.
The old_linux_dirent structure is declared (privately in Linux kernel file fs/readdir.c) as follows:
struct old_linux_dirent {
d_ino is an inode number. d_offset is the distance from the start of the directory to this old_linux_dirent. d_reclen is the size of d_name, not counting the terminating null byte (‘\0’). d_name is a null-terminated filename.
Return Value
On success, 1 is returned. On end of directory, 0 is returned. On error, -1 is returned, and errno is set appropriately.Errors
- EBADF
- Invalid file descriptor fd.
- EFAULT
- Argument points outside the calling process’s address space.
- EINVAL
- Result buffer is too small.
- ENOENT
- No such directory.
- ENOTDIR
- File descriptor does not refer to a directory.
Conforming To
This system call is Linux-specific.Notes
Glibc does not provide a wrapper for this system call; call it using syscall(2). You will need to define the old_linux_dirent structure yourself. However, probably you should use readdir(3) instead. This system call does not exist on x86-64.
