l = strlen(fname);
if (l != 1 && fname[l-1] == '/') {
- strlcat(fname,".",MAXPATHLEN);
+ if ((l == 2) && (fname[0] == '.')) {
+ /* Turn ./ into just . rather than ./.
+ This was put in to avoid a problem with
+ rsync -aR --delete from ./
+ The send_file_name() below of ./ was
+ mysteriously preventing deletes */
+ fname[1] = 0;
+ } else {
+ strlcat(fname,".",MAXPATHLEN);
+ }
}
if (link_stat(fname,&st) != 0) {
*p = '/';
for (p=fname+1; (p=strchr(p,'/')); p++) {
int copy_links_saved = copy_links;
+ int recurse_saved = recurse;
*p = 0;
copy_links = copy_unsafe_links;
+ /* set recurse to 1 to prevent make_file
+ from ignoring directory, but still
+ turn off the recursive parameter to
+ send_file_name */
+ recurse = 1;
send_file_name(f, flist, fname, 0, 0);
copy_links = copy_links_saved;
+ recurse = recurse_saved;
*p = '/';
}
} else {