static char *sccsid
= "@(#)rm.c 4.1 (Berkeley) 10/1/80";
while(argc
>1 && argv
[1][0]=='-') {
printf("rm: unknown option %s\n", *argv
);
if(!strcmp(*++argv
, "..")) {
fprintf(stderr
, "rm: cannot remove `..'\n");
rm(*argv
, fflg
, rflg
, iflg
, 0);
rm(arg
, fflg
, rflg
, iflg
, level
)
printf("rm: %s nonexistent\n", arg
);
if ((buf
.st_mode
&S_IFMT
) == S_IFDIR
) {
if (access(arg
, 02) < 0) {
printf("%s not changed\n", arg
);
printf("directory %s, remove? ", arg
);
if((d
=open(arg
, 0)) < 0) {
printf("rm: %s: cannot read\n", arg
);
while(read(d
, (char *)&direct
, sizeof(direct
)) == sizeof(direct
)) {
if(direct
.d_ino
!= 0 && !dotname(direct
.d_name
)) {
sprintf(name
, "%s/%.14s", arg
, direct
.d_name
);
rm(name
, fflg
, rflg
, iflg
, level
+1);
errcode
+= rmdir(arg
, iflg
);
printf("rm: %s directory\n", arg
);
printf("remove %s? ", arg
);
printf("%s unwritable (mode %o), remove? ", arg
, buf
.st_mode
&0777);
if(unlink(arg
) && (fflg
==0 || iflg
)) {
printf("rm: %s not removed\n", arg
);
printf("remove %s? ", f
);
execl("/bin/rmdir", "rmdir", f
, 0);
execl("/usr/bin/rmdir", "rmdir", f
, 0);
printf("rm: can't find rmdir\n");
while(b
!= '\n' && b
!= EOF
)