Mention the bugfix in option-parsing error-reporting from a daemon.
[rsync/rsync.git] / receiver.c
index c7cde82..f39a9e5 100644 (file)
@@ -30,6 +30,7 @@ extern struct stats stats;
 extern int dry_run;
 extern int am_server;
 extern int relative_paths;
+extern int keep_dirlinks;
 extern int preserve_hard_links;
 extern int preserve_perms;
 extern int cvs_exclude;
@@ -46,6 +47,7 @@ extern int module_id;
 extern int ignore_errors;
 extern int orig_umask;
 extern int keep_partial;
+extern int checksum_seed;
 
 static void delete_one(char *fn, int is_dir)
 {
@@ -58,6 +60,8 @@ static void delete_one(char *fn, int is_dir)
                }
        } else {
                if (do_rmdir(fn) != 0) {
+                       if (errno == ENOTDIR && keep_dirlinks)
+                               return delete_one(fn, 0);
                        if (errno != ENOTEMPTY && errno != EEXIST) {
                                rsyserr(FERROR, errno,
                                        "delete_one: rmdir %s failed",
@@ -206,7 +210,7 @@ static int receive_data(int f_in,struct map_struct *mapbuf,int fd,char *fname,
 
        read_sum_head(f_in, &sum);
 
-       sum_init();
+       sum_init(checksum_seed);
 
        while ((i = recv_token(f_in, &data)) != 0) {
                if (do_progress)