123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- .TH DIRREAD 2
- .SH NAME
- dirread, dirreadall \- read directory
- .SH SYNOPSIS
- .B #include <u.h>
- .br
- .B #include <libc.h>
- .PP
- .B
- long dirread(int fd, Dir **buf)
- .PP
- .B
- long dirreadall(int fd, Dir **buf)
- .PP
- .B
- #define STATMAX 65535U
- .PP
- .B
- #define DIRMAX (sizeof(Dir)+STATMAX)
- .SH DESCRIPTION
- The data returned by a
- .IR read (2)
- on a directory is a set of complete directory entries
- in a machine-independent format, exactly equivalent to
- the result of a
- .IR stat (2)
- on each file or subdirectory in the directory.
- .I Dirread
- decodes the directory entries into a machine-dependent form.
- It reads from
- .IR fd
- and unpacks the data into an array of
- .B Dir
- structures
- whose address is returned in
- .B *buf
- (see
- .IR stat (2)
- for the layout of a
- .BR Dir ).
- The array is allocated with
- .IR malloc (2)
- each time
- .I dirread
- is called.
- .PP
- .I Dirreadall
- is like
- .IR dirread ,
- but reads in the entire directory; by contrast,
- .I dirread
- steps through a directory one
- .IR read (2)
- at a time.
- .PP
- Directory entries have variable length.
- A successful
- .I read
- of a directory always returns an integral number of complete directory entries;
- .I dirread
- always returns complete
- .B Dir
- structures.
- See
- .IR read (5)
- for more information.
- .PP
- The constant
- .B STATMAX
- is the maximum size that a directory entry can occupy.
- The constant
- .B DIRMAX
- is an upper limit on the size necessary to hold a
- .B Dir
- structure and all the associated data.
- .PP
- .I Dirread
- and
- .I dirreadall
- return the number of
- .B Dir
- structures filled in
- .BR buf .
- The file offset is advanced by the number of bytes actually read.
- .SH SOURCE
- .B /sys/src/libc/9sys/dirread.c
- .SH SEE ALSO
- .IR intro (2),
- .IR open (2),
- .IR read (2)
- .SH DIAGNOSTICS
- .I Dirread
- and
- .I Dirreadall
- return zero for end of file and a negative value for error.
- In either case,
- .B *buf
- is set to
- .B nil
- so the pointer can always be freed with impunity.
- .PP
- These functions set
- .IR errstr .
|