home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / OS2UTIL.ZIP / RMD.C < prev    next >
Text File  |  1990-05-21  |  1KB  |  56 lines

  1. #define INCL_SUB 1
  2. #define DIRECTORY 0x10
  3. #include "os2.h"
  4. #include "stdio.h"
  5. #include "stdlib.h"
  6. #include "string.h"
  7. int main(int, char**);
  8. int dd(char*);
  9.  
  10. main(argc, argv)
  11. int argc;
  12. char *argv[];
  13. {
  14.     if (argc != 2) {
  15.        puts("format: rmd <directory path>");
  16.        exit(-2);
  17.     }
  18.     return(dd(argv[1]));
  19. }
  20. dd(directory)
  21. char *directory;
  22. {
  23.     HDIR hdir            = 0xFFFF;
  24.     USHORT usSearchCount = 1, retcode, ret = 0;
  25.     FILEFINDBUF findbuf;
  26.     char path[20], flname[30];
  27.  
  28.     strcpy(path, directory);
  29.     strcat(path, "\\");
  30.  
  31.     strcpy(flname, path);
  32.     strcat(flname, "*.*");
  33.  
  34.     if (!DosFindFirst(flname, &hdir, 0x37, &findbuf,
  35.         sizeof(findbuf), &usSearchCount, 0L))
  36.         do {
  37.  
  38.              strcpy(flname, path);
  39.              strcat(flname, findbuf.achName);
  40.  
  41.              if (findbuf.attrFile == DIRECTORY) {
  42.                 if (findbuf.achName[0] != '.')
  43.                    ret += dd(flname);
  44.              }
  45.              else {
  46.                 DosSetFileMode(flname, 0x00, 0L);
  47.                 if (DosDelete(flname, 0L)) {
  48.                    printf("Cannot delete %s\n", flname);
  49.                    exit(-1);
  50.                 }
  51.              }
  52.         } while (!DosFindNext(hdir, &findbuf, sizeof(findbuf), &usSearchCount));
  53.     if (retcode = DosRmdir(directory, 0L))
  54.        printf("Cannot delete subdirectory: %s\n", directory);
  55.     return(retcode+ret);
  56. }