home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
PROG_C
/
SNPD9404.ZIP
/
RM_ALL.C
< prev
next >
Wrap
Text File
|
1994-04-03
|
3KB
|
109 lines
.I 18 2
#include <io.h>
#define FAR far
.I 26 2
#include <stdarg.h>
#define FAR _far
.I 28 21
#ifndef FA_RDONLY
#define FA_RDONLY _A_RDONLY
#endif
#ifndef FA_HIDDEN
#define FA_HIDDEN _A_HIDDEN
#endif
#ifndef FA_SYSTEM
#define FA_SYSTEM _A_SYSTEM
#endif
#if (defined(_MSC_VER) && (_MSC_VER >= 700)) || (defined(__SC__))
// Make FP_xxx macros lvalues as in older versions
#undef FP_SEG
#undef FP_OFF
#define FP_SEG(fp) ((unsigned)((unsigned long)(fp) >> 16))
#define FP_OFF(fp) ((unsigned)(fp && 0xffff))
#endif
.I 38 1
LOGICAL recurse = FALSE, gobble = FALSE, ignore = FALSE;
.D 39 1
.I 50 1
unsigned attrib = (ignore) ? 0xff : 0;
.I 56 1
if (0 == find_1st(rmpath, attrib, &fbuf)) do
.D 57 1
.I 59 19
if (ignore)
{
union REGS regs;
struct SREGS sregs;
regs.x.ax = 0x4300;
regs.x.dx = FP_OFF((char FAR *)rmpath);
segread(&sregs);
sregs.ds = FP_SEG((char FAR *)rmpath);
intdosx(®s, ®s, &sregs);
if (!regs.x.cflag)
{
regs.x.ax = 0x4301;
regs.x.cx &= ~(FA_RDONLY | FA_HIDDEN | FA_SYSTEM);
intdosx(®s, ®s, &sregs);
if (regs.x.cflag)
printf("unable to delete %s\n", rmpath);
}
}
.I 101 1
show("Usage: RM_ALL directory [...directory] [-eFNAME.EXT] [-rgi?]\n");
.D 102 1
.I 106 2
show(" -i Ignore special file attributes "
"(CAUTION!)\n");
.I 116 1
int i, j;
.D 117 2
.I 125 33
for (j = 1; argv[i][j] ; ++j) /* Traverse nested switches */
{
switch (toupper(argv[i][j]))
{
case 'R':
clean_func = do_dir;
break;
case 'G':
gobble = TRUE;
break;
case 'I':
ignore = TRUE;
break;
case '?':
puts("***help***");
usage(FALSE);
break;
case 'E':
if (0 == strlen(&argv[i][++j]))
{
puts("***no file***");
usage(ERROR); /* Oops */
}
mask = strupr(&argv[i][j]);
j += strlen(&argv[i][j]) - 1; /* End of switch */
break;
default:
puts("***default***");
.D 126 16
.I 142 1
}
.D 143 5
.I 157 2
{
puts("***not found***");
.I 158 1
}