From: Ian Jackson Date: Wed, 10 Oct 2018 23:36:08 +0000 (+0100) Subject: Dgit.pm: rename_link_xf: Always use cp X-Git-Tag: archive/debian/8.0~44 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=commitdiff_plain;h=89906fd58100567b415f9c13d83121b988dfa325 Dgit.pm: rename_link_xf: Always use cp If we use mv on a symlink, it moves the link, not the file. Signed-off-by: Ian Jackson --- diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm index 08a5b6c2..19ea85b6 100644 --- a/Debian/Dgit.pm +++ b/Debian/Dgit.pm @@ -445,8 +445,7 @@ sub rename_link_xf ($$$) { return 0; } $!=0; $?=0; - my @cmd = ($keeporig ? qw(cp) : qw(mv)); - push @cmd, (qw(--), $src, "$dst.tmp"); + my @cmd = (qw(cp --), $src, "$dst.tmp"); debugcmd '+',@cmd; if (system @cmd) { failedcmd_report_cmd undef, @cmd; @@ -454,12 +453,17 @@ sub rename_link_xf ($$$) { $! = -1; return 0; } - if (rename "$dst.tmp", $dst) { - return 1; - } else { - $@ = f_ "finally install file after mv: %S", $!; + if (!rename "$dst.tmp", $dst) { + $@ = f_ "finally install file after cp: %S", $!; return 0; } + if (!$keeporig) { + if (!unlink $src) { + $@ = f_ "delete old file after cp: %S", $!; + return 0; + } + } + return 1; } sub hashfile ($) {