mirror of
https://github.com/switchbrew/libnx.git
synced 2025-07-03 01:52:14 +02:00
crc: don't break current API while also supporting calculations with a seed.
This commit is contained in:
parent
033dae81bd
commit
cff30a68ad
@ -24,11 +24,12 @@ do { \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/// Calculate a CRC32 over data.
|
||||
static inline u32 crc32Calculate(u32 cur_crc, const void *src, size_t size) {
|
||||
/// Calculate a CRC32 over data using a seed.
|
||||
/// Can be used to calculate a CRC32 in chunks using an initial seed of zero for the first chunk.
|
||||
static inline u32 crc32CalculateWithSeed(u32 seed, const void *src, size_t size) {
|
||||
const u8 *src_u8 = (const u8 *)src;
|
||||
|
||||
u32 crc = ~cur_crc;
|
||||
u32 crc = ~seed;
|
||||
s64 len = size;
|
||||
|
||||
_CRC_ALIGN(u8, b);
|
||||
@ -47,11 +48,17 @@ static inline u32 crc32Calculate(u32 cur_crc, const void *src, size_t size) {
|
||||
return ~crc;
|
||||
}
|
||||
|
||||
/// Calculate a CRC32C over data.
|
||||
static inline u32 crc32cCalculate(u32 cur_crc, const void *src, size_t size) {
|
||||
/// Calculate a CRC32 over data.
|
||||
static inline u32 crc32Calculate(const void *src, size_t size) {
|
||||
return crc32CalculateWithSeed(0, src, size);
|
||||
}
|
||||
|
||||
/// Calculate a CRC32C over data using a seed.
|
||||
/// Can be used to calculate a CRC32C in chunks using an initial seed of zero for the first chunk.
|
||||
static inline u32 crc32cCalculateWithSeed(u32 seed, const void *src, size_t size) {
|
||||
const u8 *src_u8 = (const u8 *)src;
|
||||
|
||||
u32 crc = ~cur_crc;
|
||||
u32 crc = ~seed;
|
||||
s64 len = size;
|
||||
|
||||
_CRC_ALIGN(u8, cb);
|
||||
@ -70,5 +77,10 @@ static inline u32 crc32cCalculate(u32 cur_crc, const void *src, size_t size) {
|
||||
return ~crc;
|
||||
}
|
||||
|
||||
/// Calculate a CRC32C over data.
|
||||
static inline u32 crc32cCalculate(const void *src, size_t size) {
|
||||
return crc32cCalculateWithSeed(0, src, size);
|
||||
}
|
||||
|
||||
#undef _CRC_REMAINDER
|
||||
#undef _CRC_ALIGN
|
||||
|
Loading…
Reference in New Issue
Block a user