From e6477781302bd147c997e2f61166737f54aadd7d Mon Sep 17 00:00:00 2001
From: Curtis McEnroe <june@causal.agency>
Date: Fri, 9 Nov 2018 00:24:00 -0500
Subject: Add adler32.3

---
 adler32.3   | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 adler32_z.3 |  1 +
 2 files changed, 52 insertions(+)
 create mode 100644 adler32.3
 create mode 120000 adler32_z.3

diff --git a/adler32.3 b/adler32.3
new file mode 100644
index 0000000..18371a3
--- /dev/null
+++ b/adler32.3
@@ -0,0 +1,51 @@
+.Dd November 9, 2018
+.Dt ADLER32 3
+.Os
+.
+.Sh NAME
+.Nm adler32 ,
+.Nm adler32_z
+.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"
+.
+.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.
+.
+.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
diff --git a/adler32_z.3 b/adler32_z.3
new file mode 120000
index 0000000..630dd96
--- /dev/null
+++ b/adler32_z.3
@@ -0,0 +1 @@
+adler32.3
\ No newline at end of file
-- 
cgit 1.4.1