Fix bug with --compare-dest option where missing parent directories in the
authorDavid Dykstra <dwd@samba.org>
Tue, 23 Mar 1999 22:20:10 +0000 (22:20 +0000)
committerDavid Dykstra <dwd@samba.org>
Tue, 23 Mar 1999 22:20:10 +0000 (22:20 +0000)
target destination were not getting created.  There was a case in
receiver.c to do that but it was only getting invoked when the -R option is
specified, although I don't know why it was limited to that.

It's too bad I didn't get a chance to more fully test the use of
--compare-dest by my nsbd program before releasing rsync 2.3.0.  I'll
probably need to put a workaround in nsbd too until the next release
of rsync.

receiver.c

index 0533fff..816d69f 100644 (file)
@@ -417,7 +417,8 @@ 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);
 
-               if (fd2 == -1 && relative_paths && errno == ENOENT && 
+               if (fd2 == -1 && errno == ENOENT && 
+                   (relative_paths || (compare_dest != NULL)) &&
                    create_directory_path(fnametmp) == 0) {
                        fd2 = do_open(fnametmp,O_WRONLY|O_CREAT|O_EXCL,
                                      file->mode & INITACCESSPERMS);