summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--checksum.c4
-rw-r--r--rsync.h4
2 files changed, 5 insertions, 3 deletions
diff --git a/checksum.c b/checksum.c
index 68ea0fa0..b5363bca 100644
--- a/checksum.c
+++ b/checksum.c
@@ -104,7 +104,7 @@ const EVP_MD *xfer_sum_evp_md;
int xfer_sum_len;
struct name_num_item *file_sum_nni; /* used for the pre-transfer --checksum computations */
const EVP_MD *file_sum_evp_md;
-int file_sum_len;
+int file_sum_len, file_sum_extra_cnt;
#ifdef USE_OPENSSL
EVP_MD_CTX *ctx_evp = NULL;
@@ -197,6 +197,8 @@ void parse_checksum_choice(int final_call)
xfer_sum_evp_md = csum_evp_md(xfer_sum_nni);
file_sum_evp_md = csum_evp_md(file_sum_nni);
+ file_sum_extra_cnt = (file_sum_len + EXTRA_LEN - 1) / EXTRA_LEN;
+
if (xfer_sum_nni->num == CSUM_NONE)
whole_file = 1;
diff --git a/rsync.h b/rsync.h
index 0a5ff809..2c5e5376 100644
--- a/rsync.h
+++ b/rsync.h
@@ -826,7 +826,7 @@ extern int uid_ndx;
extern int gid_ndx;
extern int acls_ndx;
extern int xattrs_ndx;
-extern int file_sum_len;
+extern int file_sum_extra_cnt;
#ifdef USE_FLEXIBLE_ARRAY
#define FILE_STRUCT_LEN (sizeof (struct file_struct))
@@ -837,7 +837,7 @@ extern int file_sum_len;
#define DEV_EXTRA_CNT 2
#define DIRNODE_EXTRA_CNT 3
#define EXTRA64_CNT ((sizeof (union file_extras64) + EXTRA_LEN - 1) / EXTRA_LEN)
-#define SUM_EXTRA_CNT ((file_sum_len + EXTRA_LEN - 1) / EXTRA_LEN)
+#define SUM_EXTRA_CNT file_sum_extra_cnt
#define REQ_EXTRA(f,ndx) ((union file_extras*)(f) - (ndx))
#define OPT_EXTRA(f,bump) ((union file_extras*)(f) - file_extra_cnt - 1 - (bump))