added "ignore errors" option in rsyncd.conf
[rsync/rsync.git] / receiver.c
index 2b8869d..49d1bf2 100644 (file)
@@ -109,11 +109,12 @@ static void delete_files(struct file_list *flist)
        struct file_list *local_file_list;
        int i, j;
        char *name;
+       extern int module_id;
 
        if (cvs_exclude)
                add_cvs_excludes();
 
-       if (io_error) {
+       if (io_error && !lp_ignore_errors(module_id)) {
                rprintf(FINFO,"IO error encountered - skipping file deletion\n");
                return;
        }
@@ -358,14 +359,14 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen)
                fnamecmp = fname;
 
                /* open the file */  
-               fd1 = open(fnamecmp,O_RDONLY);
+               fd1 = do_open(fnamecmp, O_RDONLY, 0);
 
                if ((fd1 == -1) && (compare_dest != NULL)) {
                        /* try the file at compare_dest instead */
                        slprintf(fnamecmpbuf,MAXPATHLEN,"%s/%s",
                                                compare_dest,fname);
                        fnamecmp = fnamecmpbuf;
-                       fd1 = open(fnamecmp,O_RDONLY);
+                       fd1 = do_open(fnamecmp, O_RDONLY, 0);
                }
 
                if (fd1 != -1 && do_fstat(fd1,&st) != 0) {
@@ -477,7 +478,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)