summaryrefslogtreecommitdiff
path: root/zlib.h
diff options
context:
space:
mode:
authorHans Kristian Rosbach <hk-git@circlestorm.org>2017-02-06 14:40:29 +0100
committerHans Kristian Rosbach <hk-git@circlestorm.org>2017-02-06 14:43:48 +0100
commit9e13c989b2fe5e8fea707f16411720d82b107e41 (patch)
treef251a112e53b0f065cca8659269d69db9f0509b2 /zlib.h
parentca5fbeb1b8cf53b7740ebb9e2612b8a1cb61ce29 (diff)
Add deflateGetDictionary() function.
Per request, but its utility is likely to be very limited. See the comments in zlib.h. Based on upstream ee7d7b5dda25c111e61e19ac7b476c26aa6f3020
Diffstat (limited to 'zlib.h')
-rw-r--r--zlib.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/zlib.h b/zlib.h
index ff74414..1cec7a5 100644
--- a/zlib.h
+++ b/zlib.h
@@ -648,6 +648,26 @@ ZEXTERN int ZEXPORT deflateSetDictionary(z_stream *strm,
not perform any compression: this will be done by deflate().
*/
+ZEXTERN int ZEXPORT deflateGetDictionary (z_stream *strm, unsigned char *dictionary, unsigned int *dictLength) {
+/*
+ Returns the sliding dictionary being maintained by deflate. dictLength is
+ set to the number of bytes in the dictionary, and that many bytes are copied
+ to dictionary. dictionary must have enough space, where 32768 bytes is
+ always enough. If deflateGetDictionary() is called with dictionary equal to
+ Z_NULL, then only the dictionary length is returned, and nothing is copied.
+ Similary, if dictLength is Z_NULL, then it is not set.
+
+ deflateGetDictionary() may return a length less than the window size, even
+ when more than the window size in input has been provided. It may return up
+ to 258 bytes less in that case, due to how zlib's implementation of deflate
+ manages the sliding window and lookahead for matches, where matches can be
+ up to 258 bytes long. If the application needs the last window-size bytes of
+ input, then that would need to be saved by the application outside of zlib.
+
+ deflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the
+ stream state is inconsistent.
+*/
+
ZEXTERN int ZEXPORT deflateCopy(z_stream *dest, z_stream *source);
/*
Sets the destination stream as a complete copy of the source stream.