From 4eea8524f73eaf156e92dface4d95761b68f1f47 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 16 Oct 2021 14:12:09 +0300 Subject: [PATCH] COMMON: Add possibility to compute md5 for tail of resfork data --- common/macresman.cpp | 5 ++++- common/macresman.h | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/common/macresman.cpp b/common/macresman.cpp index b8d8fdc4e1e..6d898d146e6 100644 --- a/common/macresman.cpp +++ b/common/macresman.cpp @@ -102,7 +102,7 @@ uint32 MacResManager::getResForkDataSize() const { return _stream->readUint32BE(); } -String MacResManager::computeResForkMD5AsString(uint32 length) const { +String MacResManager::computeResForkMD5AsString(uint32 length, bool tail) const { if (!hasResFork()) return String(); @@ -113,6 +113,9 @@ String MacResManager::computeResForkMD5AsString(uint32 length) const { SeekableSubReadStream resForkStream(_stream, dataOffset, dataOffset + dataLength); + if (tail && dataLength > length) + resForkStream.seek(length, SEEK_END); + return computeStreamMD5AsString(resForkStream, MIN(length, _resForkSize)); } diff --git a/common/macresman.h b/common/macresman.h index f03b558008b..43e2a8c753f 100644 --- a/common/macresman.h +++ b/common/macresman.h @@ -170,9 +170,10 @@ public: /** * Calculate the MD5 checksum of the resource fork * @param length The maximum length to compute for + * @param tail Caluclate length from the tail * @return The MD5 checksum of the resource fork */ - String computeResForkMD5AsString(uint32 length = 0) const; + String computeResForkMD5AsString(uint32 length = 0, bool tail = false) const; /** * Get the base file name of the data/resource fork pair