- unsigned long newbyte, x32term;
- int j;
- crcword = 0;
- newbyte = i;
- for (j = 0; j < 8; j++) {
- x32term = (crcword ^ newbyte) & 1;
- crcword = (crcword >> 1) ^ (x32term * POLY);
- newbyte >>= 1;
- }
- crc32_table[i] = crcword;
+ unsigned long newbyte, x32term;
+ int j;
+ crcword = 0;
+ newbyte = i;
+ for (j = 0; j < 8; j++) {
+ x32term = (crcword ^ newbyte) & 1;
+ crcword = (crcword >> 1) ^ (x32term * POLY);
+ newbyte >>= 1;
+ }
+ crc32_table[i] = crcword;
- printf("%s0x%08XL%s",
- (i % 4 == 0 ? " " : " "),
- crc32_table[i],
- (i % 4 == 3 ? (i == 255 ? "\n" : ",\n") : ","));
+ printf("%s0x%08XL%s",
+ (i % 4 == 0 ? " " : " "),
+ crc32_table[i],
+ (i % 4 == 3 ? (i == 255 ? "\n" : ",\n") : ","));
-unsigned long crc32(const void *buf, size_t len) {
- unsigned long crcword = 0L;
+unsigned long crc32_update(unsigned long crcword, const void *buf, size_t len)
+{
- unsigned long newbyte = *p++;
- newbyte ^= crcword & 0xFFL;
- crcword = (crcword >> 8) ^ crc32_table[newbyte];
+ unsigned long newbyte = *p++;
+ newbyte ^= crcword & 0xFFL;
+ crcword = (crcword >> 8) ^ crc32_table[newbyte];