GETDENTS
NAME
getdents - get directory entries
SYNOPSIS
#include <unistd.h>
#include <linux/dirent.h>
#include <linux/unistd.h>
_syscall3(int, getdents, uint, fd, struct dirent *, dirp, uint, count);
int getdents(unsigned int fd, struct dirent *dirp, unsigned int count);
DESCRIPTION
getdents
reads several
dirent
structures from the directory
pointed at by
fd
into the memory area pointed to by
dirp.
The parameter
count
is the size of the memory area.
The
dirent
structure is declared as follows:
-
struct dirent
{
long d_ino; /* inode number */
off_t d_off; /* offset to next dirent */
unsigned short d_reclen; /* length of this dirent */
char d_name [NAME_MAX+1]; /* file name (null-terminated) */
}
d_ino
is an inode number.
d_off
is the distance from the start of the directory to the start of the next
dirent.
d_reclen
is the size of this entire
dirent.
d_name
is a null-terminated file name.
This call supersedes
readdir(2).
RETURN VALUE
On success, the number of bytes read 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
SVr4, SVID. SVr4 documents additional ENOLINK, EIO error conditions.
SEE ALSO
readdir(2),
readdir(3)