static char *sccsid
= "@(#)rm.c 4.6 (Berkeley) %G%";
while(argc
>1 && argv
[1][0]=='-') {
* all files following a null option are considered file names
if (*(arg
+1) == '\0') break;
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("remove directory %s? ", arg
);
if((dirp
= opendir(arg
)) == NULL
) {
printf("rm: cannot read %s?\n", arg
);
while((dp
= readdir(dirp
)) != NULL
) {
if(dp
->d_ino
!= 0 && !dotname(dp
->d_name
)) {
sprintf(name
, "%s/%s", arg
, dp
->d_name
);
rm(name
, fflg
, rflg
, iflg
, level
+1);
errcode
+= rmdir(arg
, iflg
);
printf("rm: %s directory\n", arg
);
printf("rm: remove %s? ", arg
);
printf("rm: override protection %o for %s? ", buf
.st_mode
&0777, arg
);
if(unlink(arg
) && (fflg
==0 || iflg
)) {
printf("rm: %s not removed\n", arg
);
printf("rm: 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
)