static void
sum_final(struct mtree_writer *mtree, struct reg_info *reg)
{
+ struct ae_digest digest;
if (mtree->compute_sum & F_CKSUM) {
uint64_t len;
reg->crc = ~mtree->crc;
}
#ifdef ARCHIVE_HAS_MD5
- if ((mtree->compute_sum & F_MD5)
- && !(reg->mset_digest & AE_MSET_DIGEST_MD5))
+ if (mtree->compute_sum & F_MD5)
- archive_md5_final(&mtree->md5ctx, reg->digest.md5);
+ archive_md5_final(&mtree->md5ctx, (reg->mset_digest & AE_MSET_DIGEST_MD5) ? digest.md5 : reg->digest.md5);
#endif
#ifdef ARCHIVE_HAS_RMD160
- if ((mtree->compute_sum & F_RMD160)
- && !(reg->mset_digest & AE_MSET_DIGEST_RMD160))
+ if (mtree->compute_sum & F_RMD160)
- archive_rmd160_final(&mtree->rmd160ctx, reg->digest.rmd160);
+ archive_rmd160_final(&mtree->rmd160ctx, (reg->mset_digest & AE_MSET_DIGEST_RMD160) ? digest.rmd160 : reg->digest.rmd160);
#endif
#ifdef ARCHIVE_HAS_SHA1
- if ((mtree->compute_sum & F_SHA1)
- && !(reg->mset_digest & AE_MSET_DIGEST_SHA1))
+ if (mtree->compute_sum & F_SHA1)
- archive_sha1_final(&mtree->sha1ctx, reg->digest.sha1);
+ archive_sha1_final(&mtree->sha1ctx, (reg->mset_digest & AE_MSET_DIGEST_SHA1) ? digest.sha1 : reg->digest.sha1);
#endif
#ifdef ARCHIVE_HAS_SHA256
- if ((mtree->compute_sum & F_SHA256)
- && !(reg->mset_digest & AE_MSET_DIGEST_SHA256))
+ if (mtree->compute_sum & F_SHA256)
- archive_sha256_final(&mtree->sha256ctx, reg->digest.sha256);
+ archive_sha256_final(&mtree->sha256ctx, (reg->mset_digest & AE_MSET_DIGEST_SHA256) ? digest.sha256 : reg->digest.sha256);
#endif
#ifdef ARCHIVE_HAS_SHA384
- if ((mtree->compute_sum & F_SHA384)
- && !(reg->mset_digest & AE_MSET_DIGEST_SHA384))
+ if (mtree->compute_sum & F_SHA384)
- archive_sha384_final(&mtree->sha384ctx, reg->digest.sha384);
+ archive_sha384_final(&mtree->sha384ctx, (reg->mset_digest & AE_MSET_DIGEST_SHA384) ? digest.sha384 : reg->digest.sha384);
#endif
#ifdef ARCHIVE_HAS_SHA512
- if ((mtree->compute_sum & F_SHA512)
- && !(reg->mset_digest & AE_MSET_DIGEST_SHA512))
+ if (mtree->compute_sum & F_SHA512)
- archive_sha512_final(&mtree->sha512ctx, reg->digest.sha512);
+ archive_sha512_final(&mtree->sha512ctx, (reg->mset_digest & AE_MSET_DIGEST_SHA512) ? digest.sha512 : reg->digest.sha512);
#endif
/* Save what types of sum are computed. */
reg->compute_sum = mtree->compute_sum;