about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
-rw-r--r--adler32.342
l---------adler32_combine.31
2 files changed, 42 insertions, 1 deletions
diff --git a/adler32.3 b/adler32.3
index 18371a3..b455474 100644
--- a/adler32.3
+++ b/adler32.3
@@ -4,7 +4,8 @@
 .
 .Sh NAME
 .Nm adler32 ,
-.Nm adler32_z
+.Nm adler32_z ,
+.Nm adler32_combine
 .Nd update Adler-32 checksum
 .
 .Sh LIBRARY
@@ -16,6 +17,8 @@
 .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
@@ -40,6 +43,43 @@ 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);
diff --git a/adler32_combine.3 b/adler32_combine.3
new file mode 120000
index 0000000..630dd96
--- /dev/null
+++ b/adler32_combine.3
@@ -0,0 +1 @@
+adler32.3
\ No newline at end of file