Pre-compute FILE_SUM_EXTRA_CNT.
authorWayne Davison <wayne@opencoder.net>
Thu, 15 Sep 2022 17:25:32 +0000 (10:25 -0700)
committerWayne Davison <wayne@opencoder.net>
Thu, 15 Sep 2022 17:25:32 +0000 (10:25 -0700)
checksum.c
rsync.h

index 68ea0fa004ef0a057ad8c8b62e3680fa16bc1205..b5363bca6c3d93c95793cb32c48eaee25ee4ecb9 100644 (file)
@@ -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 0a5ff8090255fb93dff17c58101304fed991200c..2c5e5376b3c13cf8c42ddd045417d5708bc023d9 100644 (file)
--- 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))