home *** CD-ROM | disk | FTP | other *** search
/ Media Share 13 / mediashare_13.zip / mediashare_13 / ZIPPED / PROGRAM / SNPD9404.ZIP / RM_ALL.C < prev    next >
Text File  |  1994-04-03  |  3KB  |  109 lines

  1. .I 18 2
  2.  #include <io.h>
  3.  #define FAR far
  4. .I 26 2
  5.  #include <stdarg.h>
  6.  #define FAR _far
  7. .I 28 21
  8.  
  9.  #ifndef FA_RDONLY
  10.   #define FA_RDONLY _A_RDONLY
  11.  #endif
  12.  
  13.  #ifndef FA_HIDDEN
  14.   #define FA_HIDDEN _A_HIDDEN
  15.  #endif
  16.  
  17.  #ifndef FA_SYSTEM
  18.   #define FA_SYSTEM _A_SYSTEM
  19.  #endif
  20.  
  21.  #if (defined(_MSC_VER) && (_MSC_VER >= 700)) || (defined(__SC__))
  22.   // Make FP_xxx macros lvalues as in older versions
  23.   #undef FP_SEG
  24.   #undef FP_OFF
  25.   #define FP_SEG(fp)    ((unsigned)((unsigned long)(fp) >> 16))
  26.   #define FP_OFF(fp)    ((unsigned)(fp && 0xffff))
  27.  #endif
  28.  
  29. .I 38 1
  30. LOGICAL recurse = FALSE, gobble = FALSE, ignore = FALSE;
  31. .D 39 1
  32. .I 50 1
  33.       unsigned attrib = (ignore) ? 0xff : 0;
  34. .I 56 1
  35.       if (0 == find_1st(rmpath, attrib, &fbuf)) do
  36. .D 57 1
  37. .I 59 19
  38.             if (ignore)
  39.             {
  40.                   union REGS regs;
  41.                   struct SREGS sregs;
  42.  
  43.                   regs.x.ax = 0x4300;
  44.                   regs.x.dx = FP_OFF((char FAR *)rmpath);
  45.                   segread(&sregs);
  46.                   sregs.ds  = FP_SEG((char FAR *)rmpath);
  47.                   intdosx(®s, ®s, &sregs);
  48.                   if (!regs.x.cflag)
  49.                   {
  50.                         regs.x.ax  = 0x4301;
  51.                         regs.x.cx &= ~(FA_RDONLY | FA_HIDDEN | FA_SYSTEM);
  52.                         intdosx(®s, ®s, &sregs);
  53.                         if (regs.x.cflag)
  54.                               printf("unable to delete %s\n", rmpath);
  55.                   }
  56.             }
  57. .I 101 1
  58.       show("Usage: RM_ALL directory [...directory] [-eFNAME.EXT] [-rgi?]\n");
  59. .D 102 1
  60. .I 106 2
  61.       show("          -i           Ignore special file attributes "
  62.             "(CAUTION!)\n");
  63. .I 116 1
  64.       int i, j;
  65. .D 117 2
  66. .I 125 33
  67.             for (j = 1; argv[i][j] ; ++j) /* Traverse nested switches   */
  68.             {
  69.                   switch (toupper(argv[i][j]))
  70.                   {
  71.                   case 'R':
  72.                         clean_func = do_dir;
  73.                         break;
  74.  
  75.                   case 'G':
  76.                         gobble = TRUE;
  77.                         break;
  78.  
  79.                   case 'I':
  80.                         ignore = TRUE;
  81.                         break;
  82.  
  83.                   case '?':
  84.                         puts("***help***");
  85.                         usage(FALSE);
  86.                         break;
  87.  
  88.                   case 'E':
  89.                         if (0 == strlen(&argv[i][++j]))
  90.                         {
  91.                               puts("***no file***");
  92.                               usage(ERROR);                 /* Oops     */
  93.                         }
  94.                         mask = strupr(&argv[i][j]);
  95.                         j += strlen(&argv[i][j]) - 1; /* End of switch  */
  96.                         break;
  97.  
  98.                   default:
  99.                         puts("***default***");
  100. .D 126 16
  101. .I 142 1
  102.                   }
  103. .D 143 5
  104. .I 157 2
  105.       {
  106.             puts("***not found***");
  107. .I 158 1
  108.       }
  109.