Copyright Digital Equipment Corp. All rights reserved.

Example

     The following example shows how to search a directory for the
     entry name, using the opendir, readdir, and closedir functions:

       #include <dirent.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       #define FOUND     1
       #define NOT_FOUND 0

       static int dir_example(const char *name, unsigned int unix_style)
       {
           DIR *dir_pointer;
           struct dirent *dp;

           if ( unix_style )
               dir_pointer = opendir(".");
           else
               dir_pointer = opendir(getenv("PATH"));

           if ( !dir_pointer ) {
               perror("opendir");
               return NOT_FOUND;
           }

           /* Note, that if opendir() was called with UNIX style file  */
           /* spec like ".", readdir() will return only a single       */
           /* version of each file in the directory. In this case the  */
           /* name returned in d_name member of the dirent structure   */
           /* will contain only file name and file extension fields,   */
           /* both lowercased like "foo.bar".                          */

           /* If opendir() was called with OpenVMS style file spec,    */
           /* readdir() will return every version of each file in the  */
           /* directory. In this case the name returned in d_name      */
           /* member of the dirent structure will contain file name,   */
           /* file extension and file version fields. All in upper     */
           /* case, like "FOO.BAR;1".                                  */

           for ( dp = readdir(dir_pointer);
                 dp && strcmp(dp->d_name, name);
                 dp = readdir(dir_pointer) )
               ;

           closedir(dir_pointer);

           if ( dp != NULL )
               return FOUND;
           else
               return NOT_FOUND;
       }

       int main(void)
       {
          char *filename = "foo.bar";
          FILE *fp;

          remove(filename);

          if ( !(fp = fopen(filename, "w")) ) {
               perror("fopen");
               return (EXIT_FAILURE);
          }

          if ( dir_example( "FOO.BAR;1", 0 ) == FOUND )
               puts("OpenVMS style: found");
          else
               puts("OpenVMS style: not found");

          if ( dir_example( "foo.bar", 1 ) == FOUND )
               puts("UNIX style: found");
          else
               puts("UNIX style: not found");

          fclose(fp);
          remove(filename);
          return( EXIT_SUCCESS );
       }