+ fnamecmp = fname;
+
+ if ((statret == -1) && (compare_dest != NULL)) {
+ /* try the file at compare_dest instead */
+ int saveerrno = errno;
+ snprintf(fnamecmpbuf,MAXPATHLEN,"%s/%s",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;
+ }
+