summaryrefslogtreecommitdiff
path: root/hlink.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2009-09-05 08:16:22 -0700
committerWayne Davison <wayned@samba.org>2009-09-05 08:18:35 -0700
commitb15fa9bd7bf3a379ab03eead92701cff42cdaa13 (patch)
tree506d9bacae7e1046f0e9728cdfce884acff653db /hlink.c
parent2c1aa2efac42511903d37cbcf4eb54a731b9de7c (diff)
downloadrsync-b15fa9bd7bf3a379ab03eead92701cff42cdaa13.tar.gz
Avoid an dry-run error trying to stat a prior hard-link
file that hasn't really been created.
Diffstat (limited to 'hlink.c')
-rw-r--r--hlink.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/hlink.c b/hlink.c
index 291c5cea..70f9d8c6 100644
--- a/hlink.c
+++ b/hlink.c
@@ -377,9 +377,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) {