Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (4.2BSD)
Apropos / Subsearch:
optional field

DIRECTORY(3)               Library Functions Manual               DIRECTORY(3)

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

       #include <&lt;sys/dir.h>&gt;

       DIR *opendir(filename)
       char *filename;

       struct direct *readdir(dirp)
       DIR *dirp;

       long telldir(dirp)
       DIR *dirp;

       seekdir(dirp, loc)
       DIR *dirp;
       long loc;

       DIR *dirp;

       DIR *dirp;

       Opendir opens the directory named by filename and associates  a  direc-
       tory  stream with it.  Opendir returns a pointer to be used to identify
       the directory stream in subsequent operations.   The  pointer  NULL  is
       returned  if  filename  cannot  be  accessed, or if it cannot malloc(3)
       enough memory to hold the whole thing.

       Readdir returns a pointer to the next directory entry.  It returns NULL
       upon  reaching the end of the directory or detecting an invalid seekdir

       Telldir returns the current location associated with the  named  direc-
       tory stream.

       Seekdir  sets  the position of the next readdir operation on the direc-
       tory stream.  The new position reverts to the one associated  with  the
       directory  stream  when  the  telldir  operation was performed.  Values
       returned by telldir are good only for the lifetime of the  DIR  pointer
       from  which  they  are  derived.   If  the directory is closed and then
       reopened, the telldir value may be invalidated due to undetected direc-
       tory  compaction.   It  is safe to use a previous telldir value immedi-
       ately after a call to opendir and before any calls to readdir.

       Rewinddir resets the position of the  named  directory  stream  to  the
       beginning of the directory.

       Closedir  closes  the  named  directory  stream and frees the structure
       associated with the DIR pointer.

       Sample code which searchs a directory for entry ``name'' is:

            len = strlen(name);
            dirp = opendir(".");
            for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp))
                 if (dp->d_namlen == len && !strcmp(dp->d_name, name)) {
                      return FOUND;
            return NOT_FOUND;

       open(2), close(2), read(2), lseek(2), dir(5)

4th Berkeley Distribution      25 February 1983                   DIRECTORY(3)