X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/ca7d17e41da3b7fe3b2356215093317e54330c77..5e7f63f0bf98f9d7baab80430535d02915ade88c:/generator.c diff --git a/generator.c b/generator.c index 73dc163d..9b371e85 100644 --- a/generator.c +++ b/generator.c @@ -763,11 +763,12 @@ static void sum_sizes_sqroot(struct sum_struct *sum, int64 len) else if (len <= BLOCK_SIZE * BLOCK_SIZE) blength = BLOCK_SIZE; else { + int32 max_blength = protocol_version < 30 ? OLD_MAX_BLOCK_SIZE : MAX_BLOCK_SIZE; int32 c; int cnt; for (c = 1, l = len, cnt = 0; l >>= 2; c <<= 1, cnt++) {} - if (cnt >= 31 || c >= MAX_BLOCK_SIZE) - blength = MAX_BLOCK_SIZE; + if (c < 0 || c >= max_blength) + blength = max_blength; else { blength = 0; do { @@ -1444,6 +1445,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, if (j == -2) { itemizing = 0; code = FNONE; + statret = 1; } else if (j >= 0) statret = 1; } @@ -1466,6 +1468,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, goto cleanup; } } +#ifdef SUPPORT_XATTRS + if (preserve_xattrs && statret == 1) + copy_xattrs(fnamecmpbuf, fname); +#endif if (set_file_attrs(fname, file, real_ret ? NULL : &real_sx, NULL, 0) && verbose && code != FNONE && f_out != -1) rprintf(code, "%s/\n", fname);