From: Jim Meyering Date: Sun, 2 Mar 2003 06:09:28 +0000 (+0000) Subject: (copy_internal) [un_backup]: When recovering from a X-Git-Tag: v4.5.9~90 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8c0f32666077b1789d530cc1c761807356dfe9a1;p=thirdparty%2Fcoreutils.git (copy_internal) [un_backup]: When recovering from a failure to create a hard link, do not remove the entry associating the source dev/ino with the destination file name. --- diff --git a/src/copy.c b/src/copy.c index fcb4854cc7..91ae106f5d 100644 --- a/src/copy.c +++ b/src/copy.c @@ -1556,11 +1556,14 @@ copy_internal (const char *src_path, const char *dst_path, un_backup: - /* We didn't create the destination. - Remove the entry associating the source dev/ino with the + /* We have failed to create the destination file. + If we've just added a dev/ino entry via the remember_copied + call above (i.e., unless we've just failed to create a hard link), + remove the entry associating the source dev/ino with the destination file name, so we don't try to `preserve' a link to a file we didn't create. */ - forget_created (src_sb.st_ino, src_sb.st_dev); + if (earlier_file == NULL) + forget_created (src_sb.st_ino, src_sb.st_dev); if (dst_backup) {