diff options
author | Rob Landley <rob@landley.net> | 2021-03-20 00:09:51 -0500 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2021-03-20 00:09:51 -0500 |
commit | 855eca3eaf8ea849599662900a3de18f6ebab9ef (patch) | |
tree | bc925fd31fa0e54c7b94d607e6bcc95bc8e9259e | |
parent | 3aaf63f6d908eea164111791ec90fd608000dfe1 (diff) | |
download | toybox-855eca3eaf8ea849599662900a3de18f6ebab9ef.tar.gz |
Nir Lichtman pointed out that rm -p shouldn't try to rmdir / at the end.
-rwxr-xr-x | tests/rmdir.test | 4 | ||||
-rw-r--r-- | toys/posix/rmdir.c | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/tests/rmdir.test b/tests/rmdir.test index 5b36bbc1..1731ecc2 100755 --- a/tests/rmdir.test +++ b/tests/rmdir.test @@ -40,6 +40,10 @@ testing "-p part of path" \ "yes\n" "" "" rm -rf temp +skipnot [ $UID -eq 0 ] +testing '-p abspath' \ + 'mkdir -p /test/2/3 && rmdir -p /test/2/3 && [ ! -e /test ] && echo yes' \ + 'yes\n' '' '' mkdir -p one/two/three testing "-p one/two/three" \ diff --git a/toys/posix/rmdir.c b/toys/posix/rmdir.c index c25fd839..3714f334 100644 --- a/toys/posix/rmdir.c +++ b/toys/posix/rmdir.c @@ -25,7 +25,7 @@ static void do_rmdir(char *name) { char *temp; - for (;;) { + do { if (rmdir(name)) { if (!FLAG(ignore_fail_on_non_empty) || errno != ENOTEMPTY) perror_msg_raw(name); @@ -39,7 +39,7 @@ static void do_rmdir(char *name) if (!(temp = strrchr(name, '/'))) return; *temp = 0; } while (!temp[1]); - } + } while (*name); } void rmdir_main(void) |