|
From: | Pádraig Brady |
Subject: | bug#62607: cp --recursive --backup broken in 9.2 |
Date: | Sun, 2 Apr 2023 13:40:44 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Thunderbird/109.0 |
On 01/04/2023 23:40, Kristian Klausen via GNU coreutils Bug Reports wrote:
Hi After upgrading to coreutils 9.2-2 on Arch Linux the following: mkdir -p src dst touch {src,dst}/bar cp --recursive --backup src/* dst fails with: cp: cannot create regular file 'dst/foo/bar': File exists Running strace on cp I noticed: renameat2(4, "foo/bar", 4, "foo/bar~", 0) = -1 ENOENT (No such file or directory) In coreutils 9.1-3 the syscall succeeds: renameat2(4, "bar", 4, "bar~", 0) = 0 I assume renameat2 is called with the wrong oldpath and newpath in 9.2 and that it should just be the basename and not the full relative path. Cheers Kristian Klausen
Your analysis is correct wrt the wrong paths being given to the renameat2(). This is related to https://bugs.gnu.org/55029 For completeness the correct repro is: mkdir -p {src,dst}/foo touch {src,dst}/foo/bar cp --recursive --backup src/* dst thanks, Pádraig
[Prev in Thread] | Current Thread | [Next in Thread] |