diff options
Diffstat (limited to 'src/crc.c')
-rw-r--r-- | src/crc.c | 27 |
1 files changed, 17 insertions, 10 deletions
@@ -55,23 +55,30 @@ static const uint32_t crc_table[256] = { 0x2d02ef8dL }; -#define DO1(buf) crc = crc_table[((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8); +#define DO1(buf) crc = crc_table[(crc ^ (uint32_t) (*buf++)) & 0xff] ^ (crc >> 8); #define DO2(buf) DO1(buf); DO1(buf); #define DO4(buf) DO2(buf); DO2(buf); #define DO8(buf) DO4(buf); DO4(buf); -uint32_t crc32(uint32_t crc, const uint8_t *buf, int len) +uint32_t +crc32 (uint32_t crc, const void *_buf, int len) { - if (!buf) return 0; + uint8_t *buf = (uint8_t *) _buf; + if (!buf) + return 0; - crc = crc ^ 0xffffffffL; - while (len >= 8) + + crc = crc ^ 0xffffffffL; + while (len >= 8) { - DO8(buf); + DO8 (buf); len -= 8; } - if (len) do { - DO1(buf); - } while (--len); - return crc ^ 0xffffffffL; + if (len) + do + { + DO1 (buf); + } + while (--len); + return crc ^ 0xffffffffL; } |