X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/c7c11a0d4c315a052dddf97cc6d3d63a54b4a831..0503f06089b89aa4166d6ced8d5901ad6a112c41:/receiver.c diff --git a/receiver.c b/receiver.c index 0533fffe..6361d21b 100644 --- a/receiver.c +++ b/receiver.c @@ -417,6 +417,9 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) fd2 = do_open(fnametmp,O_WRONLY|O_CREAT|O_EXCL, file->mode & INITACCESSPERMS); + /* in most cases parent directories will already exist + because their information should have been previously + transferred, but that may not be the case with -R */ if (fd2 == -1 && relative_paths && errno == ENOENT && create_directory_path(fnametmp) == 0) { fd2 = do_open(fnametmp,O_WRONLY|O_CREAT|O_EXCL, @@ -474,7 +477,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) for (i = 0; i < flist->count; i++) { file = flist->files[i]; if (!file->basename || !S_ISDIR(file->mode)) continue; - recv_generator(f_name(file),flist,i,-1); + recv_generator(local_name?local_name:f_name(file),flist,i,-1); } if (verbose > 2)