mirror of
https://github.com/switchbrew/libnx.git
synced 2025-07-03 10:02:14 +02:00
crc: allow checksum calculation in blocks.
This commit is contained in:
parent
08e2b2d945
commit
033dae81bd
@ -25,10 +25,10 @@ do { \
|
|||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/// Calculate a CRC32 over data.
|
/// Calculate a CRC32 over data.
|
||||||
static inline u32 crc32Calculate(const void *src, size_t size) {
|
static inline u32 crc32Calculate(u32 cur_crc, const void *src, size_t size) {
|
||||||
const u8 *src_u8 = (const u8 *)src;
|
const u8 *src_u8 = (const u8 *)src;
|
||||||
|
|
||||||
u32 crc = 0xFFFFFFFF;
|
u32 crc = ~cur_crc;
|
||||||
s64 len = size;
|
s64 len = size;
|
||||||
|
|
||||||
_CRC_ALIGN(u8, b);
|
_CRC_ALIGN(u8, b);
|
||||||
@ -44,14 +44,14 @@ static inline u32 crc32Calculate(const void *src, size_t size) {
|
|||||||
_CRC_REMAINDER(u16, h);
|
_CRC_REMAINDER(u16, h);
|
||||||
_CRC_REMAINDER(u8, b);
|
_CRC_REMAINDER(u8, b);
|
||||||
|
|
||||||
return crc ^ 0xFFFFFFFF;
|
return ~crc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Calculate a CRC32C over data.
|
/// Calculate a CRC32C over data.
|
||||||
static inline u32 crc32cCalculate(const void *src, size_t size) {
|
static inline u32 crc32cCalculate(u32 cur_crc, const void *src, size_t size) {
|
||||||
const u8 *src_u8 = (const u8 *)src;
|
const u8 *src_u8 = (const u8 *)src;
|
||||||
|
|
||||||
u32 crc = 0xFFFFFFFF;
|
u32 crc = ~cur_crc;
|
||||||
s64 len = size;
|
s64 len = size;
|
||||||
|
|
||||||
_CRC_ALIGN(u8, cb);
|
_CRC_ALIGN(u8, cb);
|
||||||
@ -67,7 +67,7 @@ static inline u32 crc32cCalculate(const void *src, size_t size) {
|
|||||||
_CRC_REMAINDER(u16, ch);
|
_CRC_REMAINDER(u16, ch);
|
||||||
_CRC_REMAINDER(u8, cb);
|
_CRC_REMAINDER(u8, cb);
|
||||||
|
|
||||||
return crc ^ 0xFFFFFFFF;
|
return ~crc;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef _CRC_REMAINDER
|
#undef _CRC_REMAINDER
|
||||||
|
Loading…
Reference in New Issue
Block a user