home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / POSIX_LS.C < prev    next >
C/C++ Source or Header  |  1997-07-05  |  3KB  |  85 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. /*
  4. **  POSIX_LS.C - Directory lister using POSIX style processing
  5. **
  6. **  Original Copyright 1988-1991 by Bob Stout as part of
  7. **  the MicroFirm Function Library (MFL)
  8. **
  9. **  This subset version is functionally identical to the
  10. **  version originally published by the author in Tech Specialist
  11. **  magazine and is hereby donated to the public domain.
  12. */
  13.  
  14. #include <stdio.h>
  15. #include "dirent.h"
  16. #include "sniptype.h"
  17.  
  18. void dumpdir(char *dirname, char *mask)
  19. {
  20.       DIR *dirp;
  21.       DOSFileData *dstruct;
  22.  
  23.       dirp = opendir(dirname);
  24.       if (!dirp)
  25.       {
  26.             printf("Opening %s returned NULL\n\n", dirname);
  27.             return;
  28.       }
  29.       printf("Dir %s has %d entries\n", dirname, dirp->dd_size);
  30.       do
  31.       {
  32.             if (NULL != (dstruct = readdir(dirp)))
  33.             {
  34.                   if (Success_ == dirmask(dstruct, mask, NULL, _A_ANY, 0))
  35.                         printf("%3d - %s\n", dirp->dd_loc, ff_name(dstruct));
  36.             }
  37.             else  puts("EOF\n");
  38.       } while (dstruct);
  39.       printf("seekdir( -1) returned %p\n", seekdir(dirp, -1, SEEK_SET));
  40.       printf("seekdir(999) returned %p\n", seekdir(dirp, 999, SEEK_SET));
  41.       printf("seekdir(0, SEEK_SET) returned %p\n", dstruct = seekdir(dirp,
  42.             0, SEEK_SET));
  43.       printf("%3d - %s\n", dirp->dd_loc, ff_name(dstruct));
  44.       printf("seekdir(1, SEEK_SET) returned %p\n", dstruct = seekdir(dirp,
  45.             1, SEEK_SET));
  46.       printf("%3d - %s\n", dirp->dd_loc, ff_name(dstruct));
  47.       printf("seekdir(4, SEEK_SET) returned %p\n", dstruct = seekdir(dirp,
  48.             4, SEEK_SET));
  49.       printf("%3d - %s\n", dirp->dd_loc, ff_name(dstruct));
  50.       printf("seekdir(4, SEEK_CUR) returned %p\n", dstruct = seekdir(dirp,
  51.             4, SEEK_CUR));
  52.       printf("%3d - %s\n", dirp->dd_loc, ff_name(dstruct));
  53.       printf("seekdir(-1, SEEK_CUR) returned %p\n", dstruct = seekdir(dirp,
  54.             -1, SEEK_CUR));
  55.       printf("%3d - %s\n", dirp->dd_loc, ff_name(dstruct));
  56.       printf("seekdir(1, SEEK_CUR) returned %p\n", dstruct = seekdir(dirp,
  57.             1, SEEK_CUR));
  58.       printf("%3d - %s\n", dirp->dd_loc, ff_name(dstruct));
  59.       printf("seekdir(0, SEEK_END) returned %p\n", dstruct = seekdir(dirp,
  60.             0, SEEK_END));
  61.       printf("%3d - %s\n", dirp->dd_loc, ff_name(dstruct));
  62.       printf("seekdir(-1, SEEK_END) returned %p\n", dstruct = seekdir(dirp,
  63.             -1, SEEK_END));
  64.       printf("%3d - %s\n", dirp->dd_loc, ff_name(dstruct));
  65.       printf("seekdir(-4, SEEK_END) returned %p\n", dstruct = seekdir(dirp,
  66.             -4, SEEK_END));
  67.       printf("%3d - %s\n", dirp->dd_loc, ff_name(dstruct));
  68.       closedir(dirp);
  69. }
  70.  
  71. main(int argc, char *argv[])
  72. {
  73.       char *mask = NULL, *dirname;
  74.  
  75.       if (1 < argc)
  76.             dirname = argv[1];
  77.       else  dirname = ".";
  78.  
  79.       if (2 < argc)
  80.             mask = argv[2];
  81.       printf("Calling dumpdir(%s, %s)\n\n", dirname, mask);
  82.       dumpdir(dirname, mask);
  83.       return 0;
  84. }
  85.