Tweaked one or more warning messages.
[rsync/rsync.git] / receiver.c
index 09df260..7f807d9 100644 (file)
@@ -21,7 +21,6 @@
 #include "rsync.h"
 
 extern int verbose;
-extern int recurse;
 extern int delete_after;
 extern int csum_length;
 extern struct stats stats;
@@ -57,15 +56,29 @@ extern struct filter_list_struct server_filter_list;
  * sending side.  This is used by --delete-before and --delete-after. */
 void delete_files(struct file_list *flist)
 {
-       char fbuf[MAXPATHLEN];
+       struct file_list *dir_list;
+       char *argv[1], fbuf[MAXPATHLEN];
        int j;
 
+       if (io_error && !(lp_ignore_errors(module_id) || ignore_errors)) {
+               rprintf(FINFO,
+                       "IO error encountered -- skipping file deletion\n");
+               return;
+       }
+
        for (j = 0; j < flist->count; j++) {
                if (!(flist->files[j]->flags & FLAG_DEL_START)
                    || !S_ISDIR(flist->files[j]->mode))
                        continue;
 
-               delete_in_dir(flist, f_name_to(flist->files[j], fbuf));
+               argv[0] = f_name_to(flist->files[j], fbuf);
+
+               if (!(dir_list = send_file_list(-1, 1, argv)))
+                       continue;
+
+               delete_missing(flist, dir_list, fbuf);
+
+               flist_free(dir_list);
        }
 }
 
@@ -289,7 +302,7 @@ int recv_files(int f_in, struct file_list *flist, char *local_name,
 
        if (delay_updates) {
                int sz = (flist->count + 7) / 8;
-               if (!(delayed_bits = new_array(char, sz)))
+               if (!(delayed_bits = new_array(uchar, sz)))
                        out_of_memory("recv_files");
                memset(delayed_bits, 0, sz);
        }
@@ -586,7 +599,7 @@ int recv_files(int f_in, struct file_list *flist, char *local_name,
                }
        }
 
-       if (delete_after && recurse && !local_name && flist->count > 0)
+       if (delete_after && !local_name && flist->count > 0)
                delete_files(flist);
 
        if (verbose > 2)