From: Wayne Davison Date: Sat, 5 Sep 2009 15:16:22 +0000 (-0700) Subject: Avoid an dry-run error trying to stat a prior hard-link X-Git-Tag: v3.0.7pre1~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d041c17c40a9c2c6c8c6a0d15d018c0fd6beecf5;p=thirdparty%2Frsync.git Avoid an dry-run error trying to stat a prior hard-link file that hasn't really been created. --- diff --git a/hlink.c b/hlink.c index 6d03733e..5ab9bb86 100644 --- a/hlink.c +++ b/hlink.c @@ -356,9 +356,13 @@ int hard_link_check(struct file_struct *file, int ndx, const 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) {