- if (link_dest && match_level == 3 && !dry_run) {
- if (do_link(fnamecmpbuf, fname) < 0) {
+ if (link_dest && match_level == 3) {
+ if (hard_link_one(file, ndx, fname, -1, &st,
+ fnamecmpbuf, 1,
+ itemizing && verbose > 1,
+ code) == 0)
+ return;
+ if (verbose) {
+ rsyserr(FINFO, errno, "link %s => %s",
+ full_fname(fnamecmpbuf),
+ safe_fname(fname));
+ }
+ match_level = 2;
+ }
+#endif
+ if (match_level == 2) {
+ /* Copy the file locally. */
+ if (copy_file(fnamecmpbuf, fname, file->mode) < 0) {