Add inflateGetDictionary() function.
diff --git a/as400/bndsrc b/as400/bndsrc
index 52cc661..a6de4d5 100644
--- a/as400/bndsrc
+++ b/as400/bndsrc
@@ -67,6 +67,7 @@
EXPORT SYMBOL("inflate")
EXPORT SYMBOL("inflateEnd")
EXPORT SYMBOL("inflateSetDictionary")
+ EXPORT SYMBOL("inflateGetDictionary")
EXPORT SYMBOL("inflateSync")
EXPORT SYMBOL("inflateReset")
EXPORT SYMBOL("inflateInit_")
diff --git a/as400/zlib.inc b/as400/zlib.inc
index 66d867a..9c94be8 100644
--- a/as400/zlib.inc
+++ b/as400/zlib.inc
@@ -359,6 +359,12 @@
D dictionary 65535 const options(*varsize) Dictionary bytes
D dictLength 10U 0 value Dictionary length
*
+ D inflateGetDictionary...
+ D PR 10I 0 extproc('inflateGetDictionary') Get dictionary
+ D strm like(z_stream) Expansion stream
+ D dictionary 65535 options(*varsize) Dictionary bytes
+ D dictLength 10U 0 Dictionary length
+ *
D inflateSync PR 10I 0 extproc('inflateSync') Sync. expansion
D strm like(z_stream) Expansion stream
*
diff --git a/contrib/vstudio/vc10/zlibvc.def b/contrib/vstudio/vc10/zlibvc.def
index feea7cf..34b1466 100644
--- a/contrib/vstudio/vc10/zlibvc.def
+++ b/contrib/vstudio/vc10/zlibvc.def
@@ -137,3 +137,6 @@
; zlib1 v1.2.7 added:
gzopen_w @165
+
+; zlib1 v1.2.8 added:
+ inflateGetDictionary @166
diff --git a/contrib/vstudio/vc9/zlibvc.def b/contrib/vstudio/vc9/zlibvc.def
index c1f644d..3af7061 100644
--- a/contrib/vstudio/vc9/zlibvc.def
+++ b/contrib/vstudio/vc9/zlibvc.def
@@ -137,3 +137,6 @@
; zlib1 v1.2.7 added:
gzopen_w @165
+
+; zlib1 v1.2.8 added:
+ inflateGetDictionary @166
diff --git a/inflate.c b/inflate.c
index 47418a1..d1efdb8 100644
--- a/inflate.c
+++ b/inflate.c
@@ -1264,6 +1264,29 @@
return Z_OK;
}
+int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength)
+z_streamp strm;
+Bytef *dictionary;
+uInt *dictLength;
+{
+ struct inflate_state FAR *state;
+
+ /* check state */
+ if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ state = (struct inflate_state FAR *)strm->state;
+
+ /* copy dictionary */
+ if (state->whave && dictionary != Z_NULL) {
+ zmemcpy(dictionary, state->window + state->wnext,
+ state->whave - state->wnext);
+ zmemcpy(dictionary + state->whave - state->wnext,
+ state->window, state->wnext);
+ }
+ if (dictLength != Z_NULL)
+ *dictLength = state->whave;
+ return Z_OK;
+}
+
int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength)
z_streamp strm;
const Bytef *dictionary;
diff --git a/win32/zlib.def b/win32/zlib.def
index 0489615..f10fa7a 100644
--- a/win32/zlib.def
+++ b/win32/zlib.def
@@ -17,6 +17,7 @@
deflatePrime
deflateSetHeader
inflateSetDictionary
+ inflateGetDictionary
inflateSync
inflateCopy
inflateReset
diff --git a/zconf.h b/zconf.h
index c71cade..26e7a04 100644
--- a/zconf.h
+++ b/zconf.h
@@ -103,6 +103,7 @@
# define inflateReset z_inflateReset
# define inflateReset2 z_inflateReset2
# define inflateSetDictionary z_inflateSetDictionary
+# define inflateGetDictionary z_inflateGetDictionary
# define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint
# define inflateUndermine z_inflateUndermine
diff --git a/zconf.h.cmakein b/zconf.h.cmakein
index 1d31b67..5390baa 100644
--- a/zconf.h.cmakein
+++ b/zconf.h.cmakein
@@ -105,6 +105,7 @@
# define inflateReset z_inflateReset
# define inflateReset2 z_inflateReset2
# define inflateSetDictionary z_inflateSetDictionary
+# define inflateGetDictionary z_inflateGetDictionary
# define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint
# define inflateUndermine z_inflateUndermine
diff --git a/zconf.h.in b/zconf.h.in
index c71cade..26e7a04 100644
--- a/zconf.h.in
+++ b/zconf.h.in
@@ -103,6 +103,7 @@
# define inflateReset z_inflateReset
# define inflateReset2 z_inflateReset2
# define inflateSetDictionary z_inflateSetDictionary
+# define inflateGetDictionary z_inflateGetDictionary
# define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint
# define inflateUndermine z_inflateUndermine
diff --git a/zlib.h b/zlib.h
index 94909ef..cd47df5 100644
--- a/zlib.h
+++ b/zlib.h
@@ -839,6 +839,21 @@
inflate().
*/
+ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm,
+ Bytef *dictionary,
+ uInt *dictLength));
+/*
+ Returns the sliding dictionary being maintained by inflate. 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 inflateGetDictionary() 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.
+
+ inflateSetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the
+ stream state is inconsistent.
+*/
+
ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
/*
Skips invalid compressed data until a possible full flush point (see above
diff --git a/zlib.map b/zlib.map
index 771f420..d7b4df7 100644
--- a/zlib.map
+++ b/zlib.map
@@ -76,3 +76,7 @@
gzgetc_;
inflateResetKeep;
} ZLIB_1.2.5.1;
+
+ZLIB_1.2.7.1 {
+ inflateSetDictionary;
+} ZLIB_1.2.7;