From: Pádraig Brady Date: Mon, 3 Apr 2023 17:12:33 +0000 (+0100) Subject: cp: fix --backup with subdirectories X-Git-Tag: v9.3~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5891d28edebe229f1a6057275e281b10c1f2247b;p=thirdparty%2Fcoreutils.git cp: fix --backup with subdirectories * gnulib: Reference the latest gnulib including the fix to the backupfile module in commit 94496522. * tests/cp/backup-dir.sh: Add a test to ensure we rename appropriately when backing up through subdirs. * NEWS: Mention the bug fix. Fixes https://bugs.gnu.org/62607 --- diff --git a/NEWS b/NEWS index f53adab6fc..8f947faed4 100644 --- a/NEWS +++ b/NEWS @@ -4,12 +4,17 @@ GNU coreutils NEWS -*- outline -*- ** Bug fixes - cp --relink=auto (the default), mv, and install + cp --reflink=auto (the default), mv, and install will again fall back to a standard copy in more cases. Previously copies could fail with permission errors on more restricted systems like android or containers etc. [bug introduced in coreutils-9.2] + cp --recursive --backup will again operate correctly. + Previousy it may have issued "File exists" errors when + it failed to appropriately rename files being replaced. + [bug introduced in coreutils-9.2] + date --file and dircolors will now diagnose a failure to read a file. Previously they would have silently ignored the failure. [This bug was present in "the beginning".] diff --git a/gnulib b/gnulib index f17d397771..94496522f2 160000 --- a/gnulib +++ b/gnulib @@ -1 +1 @@ -Subproject commit f17d397771164c1b0f77fea8fb0abdc99cf4a3e1 +Subproject commit 94496522f25f19673acb759409d4cdcc6038daee diff --git a/tests/cp/backup-dir.sh b/tests/cp/backup-dir.sh index 6573d58e07..5c17498cf4 100755 --- a/tests/cp/backup-dir.sh +++ b/tests/cp/backup-dir.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Ensure that cp -b doesn't back up directories. +# Ensure that cp -b handles directories appropriately # Copyright (C) 2006-2023 Free Software Foundation, Inc. @@ -29,4 +29,10 @@ cp -ab x y || fail=1 test -d y/x || fail=1 test -d y/x~ && fail=1 +# Bug 62607. +# This would fail to backup using rename, and thus fail to replace the file +mkdir -p {src,dst}/foo || framework_failure_ +touch {src,dst}/foo/bar || framework_failure_ +cp --recursive --backup src/* dst || fail=1 + Exit $fail