.Dd November 8, 2018 .Dt CRC32 3 .Os . .Sh NAME .Nm crc32 , .Nm crc32_z , .Nm crc32_combine .Nd update CRC-32 checksum . .Sh LIBRARY .Lb libz . .Sh SYNOPSIS .In zlib.h .Ft uLong .Fn crc32 "uLong crc" "const Bytef *buf" "uInt len" .Ft uLong .Fn crc32_z "uLong crc" "const Bytef *buf" "z_size_t len" .Ft uLong .Fn crc32_combine "uLong crc1" "uLong crc2" "z_off_t len2" . .Sh DESCRIPTION Update a running CRC-32 with the bytes .Fa "buf[0..len-1]" and return the updated CRC-32. If .Fa buf is .Dv Z_NULL , this function returns the required initial value for the CRC. Pre- and post-conditioning (one's complement) is performed within this function so it shouldn't be done by the application. . .Pp .Fn crc32_z is the same as .Fn crc32 , but with a .Vt size_t length. . .Pp .Fn crc32_combine combines two CRC-32 check values into one. For two sequences of bytes, .Va seq1 and .Va seq2 with lengths .Va len1 and .Va len2 , CRC-32 check values were calculated for each, .Va crc1 and .Va crc2 . .Fn crc32_combine returns the CRC-32 check value of .Va seq1 and .Va seq2 concatenated, requiring only .Fa crc1 , .Fa crc2 , and .Fa len2 . . .Sh EXAMPLES .Bd -literal -offset indent uLong crc = crc32(0L, Z_NULL, 0); while (read_buffer(buffer, length) != EOF) { crc = crc32(crc, buffer, length); } if (crc != original_crc) error(); .Ed . .Sh SEE ALSO .Xr adler32 3