home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 January / PCWorld_2000-01_cd.bin / Software / Servis / Devc / _SETUP.4 / Group4 / test.c
C/C++ Source or Header  |  1998-01-17  |  1KB  |  92 lines

  1. /*
  2.  * A test which demonstrates the use of opendir and related functions
  3.  * declared in dirent.h.
  4.  */
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <errno.h>
  9.  
  10. #include <dirent.h>
  11.  
  12. int
  13. main (int argc, char* argv[])
  14. {
  15.     int         i;
  16.     struct dirent*    de;
  17.     DIR*        dir;
  18.     long        lPos;
  19.  
  20.     if (argc == 2)
  21.     {
  22.         printf ("Opening directory \"%s\"\n", argv[1]);
  23.         dir = opendir(argv[1]);
  24.     }
  25.     else
  26.     {
  27.         printf ("Opening \".\"\n");
  28.         dir = opendir(".");
  29.     }
  30.  
  31.     if (!dir)
  32.     {
  33.         printf ("Directory open failed!\n");
  34.         if (errno)
  35.         {
  36.             printf ("Error : %s\n", strerror(errno));
  37.         }
  38.         return 1;
  39.     }
  40.  
  41.     i = 0;
  42.     lPos = -1;
  43.  
  44.     while (de = readdir (dir))
  45.     {
  46.         i++;
  47.         printf ("%d : \"%s\" (tell %ld)\n", i, de->d_name,
  48.             telldir(dir));
  49.  
  50.         if (i == 3)
  51.         {
  52.             printf ("We will seek here later.\n");
  53.             lPos = telldir (dir);
  54.         }
  55.     }
  56.  
  57.     printf ("Rewind directory.\n");
  58.     rewinddir (dir);
  59.  
  60.     if (de = readdir (dir))
  61.     {
  62.         printf ("First entry : \"%s\"\n", de->d_name);
  63.     }
  64.     else
  65.     {
  66.         printf ("Empty directory.\n");
  67.     }
  68.  
  69.     if (lPos != -1)
  70.     {
  71.         printf ("Seeking to fourth entry.\n");
  72.         seekdir (dir, lPos);
  73.  
  74.         if (de = readdir (dir))
  75.         {
  76.             printf ("Fourth entry : \"%s\"\n", de->d_name);
  77.         }
  78.         else
  79.         {
  80.             printf ("No fourth entry.\n");
  81.         }
  82.     }
  83.     else
  84.     {
  85.         printf ("Seek position is past end of directory.\n");
  86.     }
  87.  
  88.     printf ("Closing directory.\n");
  89.     closedir (dir);
  90. }
  91.  
  92.