break;
} while (basis_dir[++i] != NULL);
if (match_level) {
+ statret = 0;
if (i != best_match) {
i = best_match;
pathjoin(fnamecmpbuf, sizeof fnamecmpbuf,
basis_dir[i], fname);
+ if (link_stat(fnamecmpbuf, &st, 0) < 0) {
+ match_level = 0;
+ statret = -1;
+ }
}
#ifdef HAVE_LINK
- if (link_dest && match_level == 3 && !dry_run) {
- if (do_link(fnamecmpbuf, fname) < 0) {
- if (verbose) {
- rsyserr(FINFO, errno,
- "link %s => %s",
- full_fname(fnamecmpbuf),
- safe_fname(fname));
- }
- fnamecmp = fnamecmpbuf;
- fnamecmp_type = i;
+ if (link_dest && match_level == 3
+ && do_link(fnamecmpbuf, fname) < 0) {
+ if (verbose) {
+ rsyserr(FINFO, errno, "link %s => %s",
+ full_fname(fnamecmpbuf),
+ safe_fname(fname));
}
- } else
+ match_level = 1;
+ }
#endif
- {
+ if (match_level && match_level < 3) {
fnamecmp = fnamecmpbuf;
fnamecmp_type = i;
}
- statret = 0;
}
}