X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/301c680fd7689527bf5078ca8139eaa5458009de..67863f46e3edda302c8015f06de6e465b84597ab:/receiver.c diff --git a/receiver.c b/receiver.c index dbd8bfdb..d50e67a4 100644 --- a/receiver.c +++ b/receiver.c @@ -297,9 +297,10 @@ static int receive_data(int f_in,struct map_struct *buf,int fd,char *fname, } -/* main routine for receiver process. Receiver process runs on the - same host as the generator process. */ - +/** + * main routine for receiver process. + * + * Receiver process runs on the same host as the generator process. */ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) { int fd1,fd2; @@ -317,6 +318,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) extern struct stats stats; extern int preserve_perms; extern int delete_after; + extern int orig_umask; struct stats initial_stats; if (verbose > 2) { @@ -355,8 +357,8 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) fname = local_name; if (dry_run) { - if (!am_server) { - log_transfer(file, fname); + if (!am_server && verbose) { /* log transfer */ + rprintf(FINFO, "%s\n", fname); } continue; } @@ -394,8 +396,8 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) } if (fd1 != -1 && !preserve_perms) { - /* if the file exists already and we aren't perserving - presmissions then act as though the remote end sent + /* if the file exists already and we aren't preserving + permissions then act as though the remote end sent us the file permissions we already have */ file->mode = st.st_mode; } @@ -423,23 +425,17 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) this out. We also set it initially without group access because of a similar race condition. */ fd2 = do_mkstemp(fnametmp, file->mode & INITACCESSPERMS); - if (fd2 == -1) { - rprintf(FERROR,"mkstemp %s failed: %s\n",fnametmp,strerror(errno)); - receive_data(f_in,buf,-1,NULL,file->length); - if (buf) unmap_file(buf); - continue; - } /* 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) { + create_directory_path(fnametmp, orig_umask) == 0) { strlcpy(fnametmp, template, sizeof(fnametmp)); fd2 = do_mkstemp(fnametmp, file->mode & INITACCESSPERMS); } if (fd2 == -1) { - rprintf(FERROR,"cannot create %s : %s\n",fnametmp,strerror(errno)); + rprintf(FERROR,"mkstemp %s failed: %s\n",fnametmp,strerror(errno)); receive_data(f_in,buf,-1,NULL,file->length); if (buf) unmap_file(buf); if (fd1 != -1) close(fd1); @@ -448,8 +444,8 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) cleanup_set(fnametmp, fname, file, buf, fd1, fd2); - if (!am_server) { - log_transfer(file, fname); + if (!am_server && verbose) { /* log transfer */ + rprintf(FINFO, "%s\n", fname); } /* recv file data */