Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-4.1.3)
Apropos / Subsearch:
optional field

GETDIRENTRIES(2)              System Calls Manual             GETDIRENTRIES(2)

       getdirentries - gets directory entries in a filesystem independent for-

       int getdirentries(fd, buf, nbytes, basep)
       int fd;
       char *buf;
       int nbytes;
       long *basep;

       This system call is now obsolete. It is superseded by  the  getdents(2)
       system  call, which returns directory entries in a new format specified
       in <&lt;sys/dirent.h>&gt;.  The file, <&lt;sys/dir.h>&gt;, has also  been  modified  to
       use the new directory entry format.  Programs which currently call get-
       direntries() should be modified to use the new system call and the  new
       include  file dirent.h or, preferably, to use the directory(3V) library
       routines.  The getdirentries() system call is retained in  the  current
       SunOS  release  only for purposes of backwards binary compatibility and
       will be removed in a future major release.

       getdirentries() attempts to put directory entries  from  the  directory
       referenced by the file descriptor fd into the buffer pointed to by buf,
       in a filesystem independent format.  Up to nbytes bytes of data will be
       transferred.   nbytes  must  be greater than or equal to the block size
       associated with the file, see stat(2V).  Sizes less than this may cause
       errors on certain filesystems.

       The  data  in  the buffer is a series of structures each containing the
       following entries:

              unsigned long  d_fileno;
              unsigned short d_reclen;
              unsigned short d_namlen;
              char           d_name[MAXNAMELEN + 1]; /* see below */

       The d_fileno entry is a number which is unique for each  distinct  file
       in  the filesystem.  Files that are linked by hard links (see link(2V))
       have the same d_fileno.  The d_reclen entry is the length, in bytes, of
       the directory record.  The d_name entry contains a null terminated file
       name.  The d_namlen entry specifies the length of the file name.   Thus
       the actual size of d_name may vary from 2 to MAXNAMELEN+1.

       The  structures are not necessarily tightly packed.  The d_reclen entry
       may be used as an offset from the beginning of a  direct  structure  to
       the next structure, if any.

       Upon  return,  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 is not necessarily incremented by the
       number of bytes returned by getdirentries().  If the value returned  is
       zero,  the end of the directory has been reached.  The current position
       pointer may be set and retrieved by lseek(2V).  getdirentries()  writes
       the  position  of the block read into the location pointed to by basep.
       It is not safe to set the current position pointer to any  value  other
       than  a  value  previously  returned by lseek(2V) or a value previously
       returned in the location pointed to by basep or zero.

       getdirentries() returns the number of  bytes  actually  transferred  on
       success.   On  failure,  it  returns  -1 and sets errno to indicate the

       EBADF          fd is not a valid file descriptor open for reading.

       EFAULT         Either buf or basep points outside the allocated address

       EINTR          A  read  from  a  slow device was interrupted before any
                      data arrived by the delivery of a signal.

       EIO            An I/O error occurred while reading from or  writing  to
                      the file system.

       getdents(2), link(2V), lseek(2V), open(2V), stat(2V), directory(3V)

                                21 January 1990               GETDIRENTRIES(2)