home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_01_04 / 1n04024a < prev    next >
Text File  |  1990-07-18  |  3KB  |  79 lines

  1. /*
  2. **  Figure 6 - Directory lister using POSIX style processing
  3. */
  4.  
  5. #include <stdio.h>
  6. #include "dirent.h"
  7.  
  8. #define SUCCESS 0
  9.  
  10. void dumpdir(char *dirname, char *mask)
  11. {
  12.         DOS_DIR *dirp;
  13.         struct DSTRUCT *dstruct;
  14.  
  15.         dirp = opendir(dirname);
  16.         if (!dirp)
  17.         {
  18.                 printf("Opening %s returned NULL\n\n", dirname);
  19.                 return;
  20.         }
  21.         printf("Dir %s has %d entries\n", dirname, dirp->dd_size);
  22.         do
  23.         {
  24.                 if (dstruct = readdir(dirp))
  25.                 {
  26.                         if (SUCCESS == dirmask(dstruct, mask, NULL,
  27.                                 FA_ANY, 0))
  28.                                         printf("%3d - %s\n", dirp->dd_loc,
  29.                                                 dstruct->NAME);
  30.                 }
  31.                 else    puts("EOF\n");
  32.         } while (dstruct);
  33.         printf("seekdir( -1) returned %p\n", seekdir(dirp, -1, SEEK_SET));
  34.         printf("seekdir(999) returned %p\n", seekdir(dirp, 999, SEEK_SET));
  35.         printf("seekdir(0, SEEK_SET) returned %p\n", dstruct = seekdir(dirp,
  36.                 0, SEEK_SET));
  37.         printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  38.         printf("seekdir(1, SEEK_SET) returned %p\n", dstruct = seekdir(dirp,
  39.                 1, SEEK_SET));
  40.         printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  41.         printf("seekdir(4, SEEK_SET) returned %p\n", dstruct = seekdir(dirp,
  42.                 4, SEEK_SET));
  43.         printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  44.         printf("seekdir(4, SEEK_CUR) returned %p\n", dstruct = seekdir(dirp,
  45.                 4, SEEK_CUR));
  46.         printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  47.         printf("seekdir(-1, SEEK_CUR) returned %p\n", dstruct = seekdir(dirp,
  48.                 -1, SEEK_CUR));
  49.         printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  50.         printf("seekdir(1, SEEK_CUR) returned %p\n", dstruct = seekdir(dirp,
  51.                 1, SEEK_CUR));
  52.         printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  53.         printf("seekdir(0, SEEK_END) returned %p\n", dstruct = seekdir(dirp,
  54.                 0, SEEK_END));
  55.         printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  56.         printf("seekdir(-1, SEEK_END) returned %p\n", dstruct = seekdir(dirp,
  57.                 -1, SEEK_END));
  58.         printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  59.         printf("seekdir(-4, SEEK_END) returned %p\n", dstruct = seekdir(dirp,
  60.                 -4, SEEK_END));
  61.         printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  62.         closedir(dirp);
  63. }
  64.  
  65. main(int argc, char *argv[])
  66. {
  67.         int i;
  68.         char *mask = NULL, *dirname;
  69.  
  70.         if (1 < argc)
  71.                 dirname = argv[1];
  72.         else    dirname = ".";
  73.  
  74.         if (2 < argc)
  75.                 mask = argv[2];
  76.         printf("Calling dumpdir(%s, %s)\n\n", dirname, mask);
  77.                 dumpdir(dirname, mask);
  78. }
  79.