X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/7daccb8e72d650229062a1622c9551893feef9b3..efd5ee57867a5de86692dff3ec0067c4113980fa:/generator.c diff --git a/generator.c b/generator.c index 0ece818c..72b69056 100644 --- a/generator.c +++ b/generator.c @@ -46,13 +46,13 @@ extern char *compare_dest; extern int link_dest; extern int whole_file; extern int local_server; -extern int read_batch; -extern int write_batch; extern int list_only; +extern int read_batch; extern int only_existing; extern int orig_umask; extern int safe_symlinks; extern unsigned int block_size; +extern unsigned int max_map_size; extern struct exclude_list_struct server_exclude_list; @@ -163,7 +163,9 @@ static void sum_sizes_sqroot(struct sum_struct *sum, uint64 len) c >>= 1; } while (c >= 8); /* round to multiple of 8 */ blength = MAX(blength, BLOCK_SIZE); + blength = MIN(blength, MAX_MAP_SIZE); } + max_map_size = MIN(MAX_MAP_SIZE, blength * 32); if (protocol_version < 27) { s2length = csum_length; @@ -201,31 +203,13 @@ static void sum_sizes_sqroot(struct sum_struct *sum, uint64 len) } } -/** - * Perhaps we want to just send an empty checksum set for this file, - * which will force the whole thing to be literally transferred. - * - * When do we do this? If the user's explicitly said they - * want the whole thing, or if { they haven't explicitly - * requested a delta, and it's local but not batch mode.} - * - * Whew. */ -static BOOL disable_deltas_p(void) -{ - if (whole_file > 0) - return True; - if (whole_file == 0 || write_batch || read_batch) - return False; - return local_server; -} - /* * Generate and send a stream of signatures/checksums that describe a buffer * * Generate approximately one checksum every block_len bytes. */ -static void generate_and_send_sums(struct map_struct *buf, size_t len, int f_out) +static void generate_and_send_sums(struct map_struct *buf, OFF_T len, int f_out) { size_t i; struct sum_struct sum; @@ -346,6 +330,9 @@ static void recv_generator(char *fname, struct file_struct *file, int i, return; } + if (read_batch) + return; + if (preserve_links && S_ISLNK(file->mode)) { #if SUPPORT_LINKS char lnk[MAXPATHLEN]; @@ -501,7 +488,7 @@ static void recv_generator(char *fname, struct file_struct *file, int i, return; } - if (disable_deltas_p()) { + if (whole_file > 0) { write_int(f_out,i); write_sum_head(f_out, NULL); return; @@ -556,7 +543,7 @@ void generate_files(int f_out, struct file_list *flist, char *local_name) if (verbose >= 2) { rprintf(FINFO, - disable_deltas_p() + whole_file > 0 ? "delta-transmission disabled for local transfer or --whole-file\n" : "delta transmission enabled\n"); }