X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/b9f592fbf50b0dc9e3d1d33b8deb2bf9abad9ef6..ef57235623e1a268ae96fe7fe772c493e06b0e36:/sender.c diff --git a/sender.c b/sender.c index 9fe5f623..1436eb6c 100644 --- a/sender.c +++ b/sender.c @@ -27,6 +27,7 @@ extern int dry_run; extern int am_server; extern int am_daemon; extern int protocol_version; +extern struct stats stats; /** @@ -62,8 +63,8 @@ static struct sum_struct *receive_sums(int f) int i; OFF_T offset = 0; - s = new(struct sum_struct); - if (!s) out_of_memory("receive_sums"); + if (!(s = new(struct sum_struct))) + out_of_memory("receive_sums"); read_sum_head(f, s); @@ -77,26 +78,28 @@ static struct sum_struct *receive_sums(int f) if (s->count == 0) return(s); - s->sums = new_array(struct sum_buf, s->count); - if (!s->sums) out_of_memory("receive_sums"); + if (!(s->sums = new_array(struct sum_buf, s->count))) + out_of_memory("receive_sums"); - for (i = 0; i < (int) s->count; i++) { + for (i = 0; i < (int)s->count; i++) { s->sums[i].sum1 = read_int(f); read_buf(f, s->sums[i].sum2, s->s2length); s->sums[i].offset = offset; - s->sums[i].i = i; + s->sums[i].flags = 0; - if (i == (int) s->count-1 && s->remainder != 0) { + if (i == (int)s->count-1 && s->remainder != 0) s->sums[i].len = s->remainder; - } else { + else s->sums[i].len = s->blength; - } offset += s->sums[i].len; - if (verbose > 3) - rprintf(FINFO, "chunk[%d] len=%d offset=%.0f sum1=%08x\n", - i, s->sums[i].len, (double)s->sums[i].offset, s->sums[i].sum1); + if (verbose > 3) { + rprintf(FINFO, + "chunk[%d] len=%d offset=%.0f sum1=%08x\n", + i, s->sums[i].len, (double)s->sums[i].offset, + s->sums[i].sum1); + } } s->flength = offset; @@ -112,11 +115,10 @@ void send_files(struct file_list *flist, int f_out, int f_in) struct sum_struct *s; struct map_struct *mbuf = NULL; STRUCT_STAT st; - char fname[MAXPATHLEN]; + char *fname2, fname[MAXPATHLEN]; int i; struct file_struct *file; int phase = 0; - extern struct stats stats; struct stats initial_stats; int j; @@ -158,23 +160,21 @@ void send_files(struct file_list *flist, int f_out, int f_in) fname[offset++] = '/'; } else offset = 0; - f_name_to(file, fname + offset); + fname2 = f_name_to(file, fname + offset); if (verbose > 2) rprintf(FINFO, "send_files(%d, %s)\n", i, fname); if (dry_run) { - if (!am_server && verbose) { - rprintf(FINFO, "%s\n", fname+offset); - } + if (!am_server && verbose) /* log the transfer */ + rprintf(FINFO, "%s\n", safe_fname(fname2)); write_int(f_out, i); continue; } initial_stats = stats; - s = receive_sums(f_in); - if (!s) { + if (!(s = receive_sums(f_in))) { io_error |= IOERR_GENERAL; rprintf(FERROR, "receive_sums failed\n"); return; @@ -208,23 +208,28 @@ void send_files(struct file_list *flist, int f_out, int f_in) return; } - mbuf = st.st_size ? map_file(fd, st.st_size) : NULL; + if (st.st_size) { + OFF_T map_size = MAX(s->blength * 3, MAX_MAP_SIZE); + mbuf = map_file(fd, st.st_size, map_size, s->blength); + } else + mbuf = NULL; if (verbose > 2) { rprintf(FINFO, "send_files mapped %s of size %.0f\n", - fname, (double)st.st_size); + safe_fname(fname), (double)st.st_size); } write_int(f_out, i); write_sum_head(f_out, s); - if (verbose > 2) - rprintf(FINFO, "calling match_sums %s\n", fname); - - if (!am_server && verbose) { - rprintf(FINFO, "%s\n", fname+offset); + if (verbose > 2) { + rprintf(FINFO, "calling match_sums %s\n", + safe_fname(fname)); } + if (!am_server && verbose) /* log the transfer */ + rprintf(FINFO, "%s\n", safe_fname(fname2)); + set_compression(fname); match_sums(f_out, s, mbuf, st.st_size); @@ -243,8 +248,10 @@ void send_files(struct file_list *flist, int f_out, int f_in) free_sums(s); - if (verbose > 2) - rprintf(FINFO, "sender finished %s\n", fname); + if (verbose > 2) { + rprintf(FINFO, "sender finished %s\n", + safe_fname(fname)); + } } if (verbose > 2)