X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/8950ac03f8fd0fb645c7d2374195ea884d091f72..67684d038de4c18431af0ccc17f55efbf4f20eb8:/receiver.c diff --git a/receiver.c b/receiver.c index 2f679b17..14282338 100644 --- a/receiver.c +++ b/receiver.c @@ -38,8 +38,8 @@ extern int make_backups; extern char *backup_suffix; static struct delete_list { - dev_t dev; - INO_T inode; + DEV64_T dev; + INO64_T inode; } *delete_list; static int dlist_len, dlist_alloc_len; @@ -206,7 +206,8 @@ static int get_tmpname(char *fnametmp, char *fname) static int receive_data(int f_in,struct map_struct *buf,int fd,char *fname, OFF_T total_size) { - int i,n,remainder,len,count; + int i; + unsigned int n,remainder,len,count; OFF_T offset = 0; OFF_T offset2; char *data; @@ -248,7 +249,7 @@ static int receive_data(int f_in,struct map_struct *buf,int fd,char *fname, i = -(i+1); offset2 = i*(OFF_T)n; len = n; - if (i == count-1 && remainder != 0) + if (i == (int) count-1 && remainder != 0) len = remainder; stats.matched_data += len; @@ -264,7 +265,7 @@ static int receive_data(int f_in,struct map_struct *buf,int fd,char *fname, sum_update(map,len); } - if (fd != -1 && write_file(fd,map,len) != len) { + if (fd != -1 && write_file(fd,map,len) != (int) len) { rprintf(FERROR,"write failed on %s : %s\n", fname,strerror(errno)); exit_cleanup(RERR_FILEIO); @@ -296,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; @@ -316,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) { @@ -423,7 +426,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) access because of a similar race condition. */ fd2 = do_mkstemp(fnametmp, file->mode & INITACCESSPERMS); if (fd2 == -1) { - rprintf(FERROR,"mkstemp %s failed\n",fnametmp); + 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; @@ -433,7 +436,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) 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); } @@ -488,7 +491,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) } if (preserve_hard_links) - do_hard_links(flist); + do_hard_links(); /* now we need to fix any directory permissions that were modified during the transfer */