Added an am_receiver variable.
[rsync/rsync.git] / hlink.c
diff --git a/hlink.c b/hlink.c
index 291c5ce..dc969e9 100644 (file)
--- a/hlink.c
+++ b/hlink.c
@@ -32,7 +32,6 @@ extern int do_xfers;
 extern int link_dest;
 extern int preserve_acls;
 extern int preserve_xattrs;
-extern int make_backups;
 extern int protocol_version;
 extern int remove_source_files;
 extern int stdout_format_has_i;
@@ -377,9 +376,13 @@ int hard_link_check(struct file_struct *file, int ndx, char *fname,
        }
 
        if (link_stat(prev_name, &prev_st, 0) < 0) {
-               rsyserr(FERROR_XFER, errno, "stat %s failed",
-                       full_fname(prev_name));
-               return -1;
+               if (!dry_run || errno != ENOENT) {
+                       rsyserr(FERROR_XFER, errno, "stat %s failed", full_fname(prev_name));
+                       return -1;
+               }
+               /* A new hard-link will get a new dev & inode, so approximate
+                * those values in dry-run mode by zeroing them. */
+               memset(&prev_st, 0, sizeof prev_st);
        }
 
        if (statret < 0 && basis_dir[0] != NULL) {