From 5891d28edebe229f1a6057275e281b10c1f2247b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1draig=20Brady?= Date: Mon, 3 Apr 2023 18:12:33 +0100 Subject: 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 --- NEWS | 7 ++++++- gnulib | 2 +- tests/cp/backup-dir.sh | 8 +++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index f53adab6f..8f947faed 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 f17d39777..94496522f 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 6573d58e0..5c17498cf 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 -- cgit v1.2.1