diff options
author | Bernhard Voelker <mail@bernhard-voelker.de> | 2012-12-08 19:09:19 +0100 |
---|---|---|
committer | Bernhard Voelker <mail@bernhard-voelker.de> | 2012-12-08 19:09:19 +0100 |
commit | 62543570d72b756a3b04ca9d1ebec6f4dd2eea4b (patch) | |
tree | 2260d931c4e39872e29175f3c75d3517b7a187bc /tests/cp/link-preserve.sh | |
parent | 10d35b438e731f6f0c1528d4855cdb9cf8b88349 (diff) | |
download | coreutils-62543570d72b756a3b04ca9d1ebec6f4dd2eea4b.tar.xz |
cp: fix --no-preserve=mode to not exit 1
cp --no-preserve=mode exited 1 unconditionally. Furthermore,
the tests which would have detected this error - namely
link-preserve.sh and reserve-mode.sh - failed to test
cp's exit code.
* src/copy.c (copy_reg): In the case x->explicit_no_preserve_mode,
do only set return_val to false iff the previous set_acl ()
failed.
* tests/cp/link-preserve.sh: Check cp's exit code.
* tests/cp/link-symlink.sh: Likewise.
* tests/cp/preserve-mode.sh: Likewise.
* NEWS: Mention the fix.
Bug introduced in commit v8.19-145-g24ebca6.
Reported by Florian Pritz in http://bugs.gnu.org/13119.
Diffstat (limited to 'tests/cp/link-preserve.sh')
-rwxr-xr-x | tests/cp/link-preserve.sh | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/tests/cp/link-preserve.sh b/tests/cp/link-preserve.sh index bb3b2447e..44768e470 100755 --- a/tests/cp/link-preserve.sh +++ b/tests/cp/link-preserve.sh @@ -37,7 +37,7 @@ rm -rf a b c touch a ln -s a b mkdir c -cp --preserve=links -R -H a b c +cp --preserve=links -R -H a b c || fail=1 a_inode=$(ls -i c/a|sed 's,c/.*,,') b_inode=$(ls -i c/b|sed 's,c/.*,,') test "$a_inode" = "$b_inode" || fail=1 @@ -46,7 +46,7 @@ test "$a_inode" = "$b_inode" || fail=1 # Ensure that -L makes cp follow the b->a symlink # and translates to hard-linked a and b in the destination dir. rm -rf a b c d; mkdir d; (cd d; touch a; ln -s a b) -cp --preserve=links -R -L d c +cp --preserve=links -R -L d c || fail=1 a_inode=$(ls -i c/a|sed 's,c/.*,,') b_inode=$(ls -i c/b|sed 's,c/.*,,') test "$a_inode" = "$b_inode" || fail=1 @@ -54,7 +54,7 @@ test "$a_inode" = "$b_inode" || fail=1 # Same as above, but starting with a/b hard linked. rm -rf a b c d; mkdir d; (cd d; touch a; ln a b) -cp --preserve=links -R -L d c +cp --preserve=links -R -L d c || fail=1 a_inode=$(ls -i c/a|sed 's,c/.*,,') b_inode=$(ls -i c/b|sed 's,c/.*,,') test "$a_inode" = "$b_inode" || fail=1 @@ -62,7 +62,7 @@ test "$a_inode" = "$b_inode" || fail=1 # Ensure that --no-preserve=links works. rm -rf a b c d; mkdir d; (cd d; touch a; ln a b) -cp -dR --no-preserve=links d c +cp -dR --no-preserve=links d c || fail=1 a_inode=$(ls -i c/a|sed 's,c/.*,,') b_inode=$(ls -i c/b|sed 's,c/.*,,') test "$a_inode" = "$b_inode" && fail=1 @@ -72,7 +72,7 @@ test "$a_inode" = "$b_inode" && fail=1 rm -rf a b c d touch a; ln a b mkdir c -cp -d a b c +cp -d a b c || fail=1 a_inode=$(ls -i c/a|sed 's,c/.*,,') b_inode=$(ls -i c/b|sed 's,c/.*,,') test "$a_inode" = "$b_inode" || fail=1 @@ -82,7 +82,7 @@ test "$a_inode" = "$b_inode" || fail=1 rm -rf a b c d touch a; chmod 731 a umask 077 -cp -a --no-preserve=mode a b +cp -a --no-preserve=mode a b || fail=1 mode=$(ls -l b|cut -b-10) test "$mode" = "-rw-------" || fail=1 umask 022 |