.Dd November 9, 2018 .Dt ADLER32 3 .Os . .Sh NAME .Nm adler32 , .Nm adler32_z , .Nm adler32_combine .Nd update Adler-32 checksum . .Sh LIBRARY .Lb libz . .Sh SYNOPSIS .In zlib.h .Ft uLong .Fn adler32 "uLong adler" "const Bytef *buf" "uInt len" .Ft uLong .Fn adler32_z "uLong adler" "const Bytef *buf" "z_size_t len" .Ft uLong .Fn adler32_combine "uLong adler1" "uLong adler2" "z_off_t len2" . .Sh DESCRIPTION Update a running Adler-32 checksum with the bytes .Fa "buf[0..len-1]" and return the updated checksum. If .Fa buf is .Dv Z_NULL , this function returns the required initial value for the checksum. . .Pp An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed much faster. . .Pp .Fn adler32_z is the same as .Fn adler32 , but with a .Vt size_t length. . .Pp .Fn adler32_combine combines two Adler-32 checksums into one. For two sequences of bytes, .Va seq1 and .Va seq2 with lengths .Va len1 and .Va len2 , Adler-32 checksums were calculated for each, .Va adler1 and .Va adler2 . .Fn adler32_combine returns the Adler-32 checksum of .Va seq1 and .Va seq2 concatenated, requiring only .Fa adler1 , .Fa adler2 , and .Fa len2 . Note that the .Vt z_off_t type (like .Vt off_t ) is a signed integer. If .Fa len2 is negative, the result has no meaning or utility. . .Sh EXAMPLES .Bd -literal -offset indent uLong adler = adler32(0L, Z_NULL, 0); while (read_buffer(buffer, length) != EOF) { adler = adler32(adler, buffer, length); } if (adler != original_adler) error(); .Ed