.Ft int
.Fn getdirentries "int fd" "char *buf" "int nbytes" "long *basep"
.Sh DESCRIPTION
-.Fn Getdirentries
+.Fn getdirentries
reads directory entries from the directory
referenced by the file descriptor
.Fa fd
.Pp
The data in the buffer is a series of
.Em dirent
-structures each containing the following entries:
-.Bd -literal -offset indent
-u_int32_t d_fileno; /* file number of entry */
-u_int16_t d_reclen; /* length of this record */
-u_int8_t d_type; /* file type, see below */
-u_int8_t d_namlen; /* length of string in d_name */
-char d_name[MAXNAMELEN + 1]; /* see below */
-.Ed
+structures (see
+.Xr dir 5)
+The order of the directory entries vended out via
+.Fn getdirentries
+is not specified. Some filesystems may return entries in lexicographic sort order
+and others may not.
.Pp
The
.Fa d_fileno
A value of zero is returned when
the end of the directory has been reached.
.Pp
-.Fn Getdirentries
+.Fn getdirentries
writes the position of the block read into the location pointed to by
.Fa basep .
Alternatively, the current position pointer may be set and retrieved by
with 64-bit inodes; in order to use
.Fn getdirentries ,
.Dv _DARWIN_NO_64_BIT_INODE
-must be defined.
+must be defined. See
+.Xr stat 2
+for more information on
+.Dv _DARWIN_NO_64_BIT_INODE
+and its other effects.
.Sh RETURN VALUES
If successful, the number of bytes actually transferred is returned.
Otherwise, -1 is returned and the global variable
.Va errno
is set to indicate the error.
.Sh ERRORS
-.Fn Getdirentries
+.Fn getdirentries
will fail if:
.Bl -tag -width Er
.It Bq Er EBADF
.Sh SEE ALSO
.Xr lseek 2 ,
.Xr open 2 ,
+.Xr stat 2 ,
.Xr opendir 3 ,
-.Xr readdir 3
+.Xr readdir 3 ,
+.Xr dir 5
.Sh HISTORY
The
.Fn getdirentries