diff options
author | Eric Andersen | 1999-11-15 17:33:30 +0000 |
---|---|---|
committer | Eric Andersen | 1999-11-15 17:33:30 +0000 |
commit | a9c95ea6551eb3d894fcc56822c8aa394972b699 (patch) | |
tree | 59359f25ba4bd356c2dfce79735fb66db4bb4151 /coreutils | |
parent | 80974fad03689b4344888820d89b514d4e4d166b (diff) | |
download | busybox-a9c95ea6551eb3d894fcc56822c8aa394972b699.zip busybox-a9c95ea6551eb3d894fcc56822c8aa394972b699.tar.gz |
Updates
Diffstat (limited to 'coreutils')
-rw-r--r-- | coreutils/rm.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/coreutils/rm.c b/coreutils/rm.c index e6132ab..ba5d30e 100644 --- a/coreutils/rm.c +++ b/coreutils/rm.c @@ -26,6 +26,7 @@ #include <time.h> #include <utime.h> #include <dirent.h> +#include <errno.h> static const char* rm_usage = "rm [OPTION]... FILE...\n\n" "Remove (unlink) the FILE(s).\n\n" @@ -59,6 +60,7 @@ static int dirAction(const char *fileName, struct stat* statbuf) extern int rm_main(int argc, char **argv) { + struct stat statbuf; if (argc < 2) { usage( rm_usage); @@ -85,9 +87,14 @@ extern int rm_main(int argc, char **argv) while (argc-- > 0) { srcName = *(argv++); - if (recursiveAction( srcName, recursiveFlag, FALSE, TRUE, - fileAction, dirAction) == FALSE) { - exit( FALSE); + if (forceFlag == TRUE && lstat(srcName, &statbuf) != 0 && errno == ENOENT) { + /* do not reports errors for non-existent files if -f, just skip them */ + } + else { + if (recursiveAction( srcName, recursiveFlag, FALSE, + TRUE, fileAction, dirAction) == FALSE) { + exit( FALSE); + } } } exit( TRUE); |