home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / s / snip1292.zip / TREEDIR.C < prev    next >
C/C++ Source or Header  |  1991-12-25  |  1KB  |  52 lines

  1. /*
  2. **  TREEDIR.C - simple recursive directory lister
  3. **
  4. **  public domain demo by Bob Stout
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <string.h>
  9.  
  10. #ifdef __ZTC__
  11.  #include <dos.h>
  12.  #define _A_SUBDIR FA_DIREC
  13. #elif defined(__TURBOC__)
  14.  #include <dir.h>
  15.  #include <dos.h>
  16.  #define _dos_findfirst(f,a,b) findfirst(f,b,a)
  17.  #define _dos_findnext(b) findnext(b)
  18.  #define find_t ffblk
  19.  #define _A_SUBDIR FA_DIREC
  20.  #define attrib ff_attrib
  21.  #define name ff_name
  22. #else                   /* assume MSC/QC                                */
  23.  #include <dos.h>
  24.  #include <errno.h>
  25. #endif
  26.  
  27. #ifndef SUCCESS
  28.  #define SUCCESS 0
  29. #endif
  30.  
  31. void do_dir(char *path)
  32. {
  33.         char search[67], new[67];
  34.         struct find_t ff;
  35.  
  36.         strcat(strcpy(search, path), "\\*.*");
  37.         if (SUCCESS == _dos_findfirst(search, 0xff, &ff)) do
  38.         {
  39.                 printf("%s\\%s\n", path, ff.name);
  40.                 if (ff.attrib & _A_SUBDIR && '.' != *ff.name)
  41.                 {
  42.                         strcat(strcat(strcpy(new, path), "\\"), ff.name);
  43.                         do_dir(new);
  44.                 }
  45.         } while (SUCCESS == _dos_findnext(&ff));
  46. }
  47.  
  48. main()                  /* simple resursive current directory lister    */
  49. {
  50.         do_dir(".");
  51. }
  52.