diff options
author | Wayne Davison <wayned@samba.org> | 2011-11-22 08:14:01 -0800 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2011-11-23 12:29:25 -0800 |
commit | 48b51d0004922cb029c55fe921f5e7df1c0bff23 (patch) | |
tree | 3f5c04e0ea1f5dca95c3eafb3ab9119e51ec3e9d /receiver.c | |
parent | 7da17144fd764a2420a8d08897475c0b7fdbf956 (diff) | |
download | rsync-48b51d0004922cb029c55fe921f5e7df1c0bff23.tar.gz |
make repeated --fuzzy option look into alt-dest dirs.
Diffstat (limited to 'receiver.c')
-rw-r--r-- | receiver.c | 17 |
1 files changed, 11 insertions, 6 deletions
@@ -699,21 +699,26 @@ int recv_files(int f_in, int f_out, char *local_name) break; case FNAMECMP_FUZZY: if (file->dirname) { - pathjoin(fnamecmpbuf, MAXPATHLEN, - file->dirname, xname); + pathjoin(fnamecmpbuf, sizeof fnamecmpbuf, file->dirname, xname); fnamecmp = fnamecmpbuf; } else fnamecmp = xname; break; default: - if (fnamecmp_type >= basis_dir_cnt) { + if (fnamecmp_type > FNAMECMP_FUZZY && fnamecmp_type-FNAMECMP_FUZZY <= basis_dir_cnt) { + fnamecmp_type -= FNAMECMP_FUZZY + 1; + if (file->dirname) { + stringjoin(fnamecmpbuf, sizeof fnamecmpbuf, + basis_dir[fnamecmp_type], "/", file->dirname, "/", xname, NULL); + } else + pathjoin(fnamecmpbuf, sizeof fnamecmpbuf, basis_dir[fnamecmp_type], xname); + } else if (fnamecmp_type >= basis_dir_cnt) { rprintf(FERROR, "invalid basis_dir index: %d.\n", fnamecmp_type); exit_cleanup(RERR_PROTOCOL); - } - pathjoin(fnamecmpbuf, sizeof fnamecmpbuf, - basis_dir[fnamecmp_type], fname); + } else + pathjoin(fnamecmpbuf, sizeof fnamecmpbuf, basis_dir[fnamecmp_type], fname); fnamecmp = fnamecmpbuf; break; } |