diff options
author | Denys Nykula <nykula@ukr.net> | 2019-11-12 16:55:35 +0000 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2019-11-12 19:50:51 -0600 |
commit | ae34569fd0e2242ea85ffec193d825dd006d1038 (patch) | |
tree | 1361867a8451b6f793514b6deb1b994ada051468 | |
parent | df6aaa39fbf7baa82e27e7eb83673629284966d0 (diff) | |
download | toybox-ae34569fd0e2242ea85ffec193d825dd006d1038.tar.gz |
Don't rm prompt for nonexistent, just warn.
-rwxr-xr-x | tests/rm.test | 2 | ||||
-rw-r--r-- | toys/posix/rm.c | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/tests/rm.test b/tests/rm.test index 9f2b8012..ab6a97d7 100755 --- a/tests/rm.test +++ b/tests/rm.test @@ -11,6 +11,8 @@ echo "abcdefghijklmnopqrstuvwxyz" > file.txt testing "text-file" "rm file.txt && [ ! -e file.txt ] && echo 'yes'" "yes\n" "" "" rm -f file* +testing "-i nonexistent" "</dev/zero rm -i file.txt 2>/dev/null || echo 'yes'" "yes\n" "" "" + mkdir dir testing "empty directory" "rm -r dir && [ ! -d dir ] && echo 'yes'" "yes\n" "" "" rm -rf dir diff --git a/toys/posix/rm.c b/toys/posix/rm.c index 8874b54f..2a6bc282 100644 --- a/toys/posix/rm.c +++ b/toys/posix/rm.c @@ -37,6 +37,10 @@ static int do_rm(struct dirtree *try) // This is either the posix section 2(b) prompt or the section 3 prompt. if (!FLAG(f) && (!S_ISLNK(try->st.st_mode) && faccessat(fd, try->name, W_OK, 0))) or++; + + // Posix section 1(a), don't prompt for nonexistent. + if (or && errno == ENOENT) goto skip; + if (!(dir && try->again) && ((or && isatty(0)) || FLAG(i))) { char *s = dirtree_path(try, 0); |