+ fnamecmp = fname;
+
+ if (statret == -1 && compare_dest != NULL) {
+ /* try the file at compare_dest instead */
+ int saveerrno = errno;
+ pathjoin(fnamecmpbuf, sizeof fnamecmpbuf, compare_dest, fname);
+ statret = link_stat(fnamecmpbuf,&st);
+ if (!S_ISREG(st.st_mode))
+ statret = -1;
+ if (statret == -1)
+ errno = saveerrno;
+#if HAVE_LINK
+ else if (link_dest && !dry_run) {
+ if (do_link(fnamecmpbuf, fname) != 0) {
+ if (verbose > 0) {
+ rprintf(FINFO,"link %s => %s : %s\n",
+ fnamecmpbuf, fname,
+ strerror(errno));
+ }
+ }
+ fnamecmp = fnamecmpbuf;
+ }
+#endif
+ else
+ fnamecmp = fnamecmpbuf;
+ }
+