|
NAMEgetdirentries , getdents —
get directory entries in a file system independent format
LIBRARYStandard C Library (libc, -lc)SYNOPSIS#include <sys/types.h>
#include <dirent.h>
ssize_t
ssize_t
DESCRIPTIONThegetdirentries () and
getdents () system calls read directory entries from
the directory referenced by the file descriptor fd into
the buffer pointed to by buf, in a file system
independent format. Up to nbytes of data will be
transferred. The nbytes argument must be greater than or
equal to the block size associated with the file, see
stat(2).
Some file systems may not support these system calls with buffers smaller than
this size.
The data in the buffer is a series of dirent structures each containing the following entries: ino_t d_fileno; off_t d_off; uint16_t d_reclen; uint8_t d_type; uint16_t d_namlen; char d_name[MAXNAMLEN + 1]; /* see below */ The d_fileno entry is a number which is
unique for each distinct file in the file system. Files that are linked by
hard links (see
link(2))
have the same d_fileno. The
d_off field returns a cookie which, if non-zero, can
be used with
lseek(2)
to position the directory descriptor to the next entry. The
d_reclen entry is the length, in bytes, of the
directory record. The d_type entry is the type of the
file pointed to by the directory record. The file type values are defined in
<sys/dirent.h>. The d_name
entry contains a null terminated file name. The
d_namlen entry specifies the length of the file name
excluding the null byte. Thus the actual size of
d_name may vary from 1 to
Entries may be separated by extra space. The d_reclen entry may be used as an offset from the start of a dirent structure to the next structure, if any. The actual number of bytes transferred is returned. The current
position pointer associated with fd is set to point to
the next block of entries. The pointer may not advance by the number of
bytes returned by If the basep pointer value is non-NULL, the
IMPLEMENTATION NOTESThe d_off field is currently set to 0 by the NFS client, since the directory offset cookies returned by an NFS server cannot be used by lseek(2) at this time.RETURN VALUESIf successful, the number of bytes actually transferred is returned. Otherwise, -1 is returned and the global variable errno is set to indicate the error.ERRORSThegetdirentries () system call will fail if:
SEE ALSOlseek(2), open(2)HISTORYThegetdirentries () system call first appeared in
4.4BSD. The getdents () system
call first appeared in FreeBSD 3.0.
Visit the GSP FreeBSD Man Page Interface. |