directory(3)


NAME
     directory, opendir, readdir,  rewinddir,  closedir,  telldir,  seekdir  -
     directory routines

SYNOPSIS
     #include <sys/types.h>
     #include <dirent.h>

     DIR *opendir(const char *dirname)
     struct dirent *readdir(DIR *dirp)
     void rewinddir(DIR *dirp)
     int closedir(DIR *dirp)

     #define _MINIX  1
     #include <sys/types.h>
     #include <dirent.h>

     long telldir(DIR *dirp)
     int seekdir(DIR *dirp, long pos)

DESCRIPTION
     These routines form a system independent interface to access directories.

     Opendir() opens the directory dirname and returns a pointer to this  open
     directory stream.

     Readdir() reads one entry from the directory as a pointer to a  structure
     containing  the  field  d_name,  a  character  array containing the null-
     terminated name of the entry.

     Rewinddir() allows the directory to be read again from the beginning.

     Closedir() closes the directory and releases administrative data.

     The Minix specific functions telldir() and seekdir() allow one to get the
     current  position  in  the  directory  file  and  to  return there later.
     Seekdir() may only be called with a position returned by telldir()  or  0
     (rewind).  These functions should not be used in portable programs.

SEE ALSO
     dir(5).

DIAGNOSTICS
     Opendir() returns a null pointer if dirname can't be  opened,  or  if  it
     can't allocate enough memory for the DIR structure.

     Readdir() returns null if there are  no  more  directory  entries  or  on
     error.


     Closedir() and seekdir() returns 0 on success, -1 on error.

     Telldir() returns -1 on error.

     All of them set errno appropriately.  Readdir() will only  set  errno  on
     error, not on end-of-dir, so you should set errno to zero beforehand, and
     check its value if readdir() returns null.

NOTES
     The return value  of  readdir()  needs  to  be  copied  before  the  next
     operation on the same directory if it is to be saved.

AUTHOR
     Kees J. Bot (kjb@cs.vu.nl)