From 89906fd58100567b415f9c13d83121b988dfa325 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 11 Oct 2018 00:36:08 +0100 Subject: 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 --- Debian/Dgit.pm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'Debian/Dgit.pm') diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm index 08a5b6c..19ea85b 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 ($) { -- cgit v1.2.3