X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/154cdaaa4017cc3b878a3ef4960167ccf8d9fd61..bdedced84b7f446f818efd4d25b8985285a50009:/receiver.c diff --git a/receiver.c b/receiver.c index f674367e..abe1f663 100644 --- a/receiver.c +++ b/receiver.c @@ -21,7 +21,7 @@ #include "rsync.h" extern int verbose; -extern int dry_run; +extern int do_xfers; extern int am_daemon; extern int am_server; extern int do_progress; @@ -30,6 +30,7 @@ extern int log_format_has_i; extern int daemon_log_format_has_i; extern int csum_length; extern int read_batch; +extern int write_batch; extern int batch_gen_fd; extern int protocol_version; extern int relative_paths; @@ -62,6 +63,7 @@ extern struct filter_list_struct server_filter_list; static uint32 **delayed_bits = NULL; static int delayed_slot_cnt = 0; +static int phase = 0; static void init_delayed_bits(int max_ndx) { @@ -266,7 +268,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r, continue; } } - if (fd != -1 && write_file(fd, map, len) != (int)len) + if (fd != -1 && map && write_file(fd, map, len) != (int)len) goto report_write_error; offset += len; } @@ -348,7 +350,8 @@ static int get_next_gen_i(int batch_gen_fd, int next_gen_i, int desired_i) while (next_gen_i < desired_i) { if (next_gen_i >= 0) { rprintf(FINFO, - "(No batched update for \"%s\")\n", + "(No batched update for%s \"%s\")\n", + phase ? " resend of" : "", safe_fname(f_name(the_file_list->files[next_gen_i]))); } next_gen_i = read_int(batch_gen_fd); @@ -380,7 +383,7 @@ int recv_files(int f_in, struct file_list *flist, char *local_name) int save_make_backups = make_backups; int itemizing = am_daemon ? daemon_log_format_has_i : !am_server && log_format_has_i; - int phase = 0, max_phase = protocol_version >= 29 ? 2 : 1; + int max_phase = protocol_version >= 29 ? 2 : 1; int i, recv_ok; if (verbose > 2) @@ -450,13 +453,19 @@ int recv_files(int f_in, struct file_list *flist, char *local_name) exit_cleanup(RERR_PROTOCOL); } - if (dry_run) { /* log the transfer */ + if (!do_xfers) { /* log the transfer */ if (!am_server && log_format) log_item(file, &stats, iflags, NULL); if (read_batch) discard_receive_data(f_in, file->length); continue; } + if (write_batch < 0) { + log_item(file, &stats, iflags, NULL); + if (!am_server) + discard_receive_data(f_in, file->length); + continue; + } if (read_batch) { next_gen_i = get_next_gen_i(batch_gen_fd, next_gen_i, i);