Add inflateGetDictionary() function.

This commit is contained in:
Mark Adler
2012-05-26 10:37:17 -07:00
parent eb90f6a568
commit dca9e1d6f3
11 changed files with 59 additions and 0 deletions

View File

@@ -67,6 +67,7 @@ STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('ZLIB')
EXPORT SYMBOL("inflate") EXPORT SYMBOL("inflate")
EXPORT SYMBOL("inflateEnd") EXPORT SYMBOL("inflateEnd")
EXPORT SYMBOL("inflateSetDictionary") EXPORT SYMBOL("inflateSetDictionary")
EXPORT SYMBOL("inflateGetDictionary")
EXPORT SYMBOL("inflateSync") EXPORT SYMBOL("inflateSync")
EXPORT SYMBOL("inflateReset") EXPORT SYMBOL("inflateReset")
EXPORT SYMBOL("inflateInit_") EXPORT SYMBOL("inflateInit_")

View File

@@ -359,6 +359,12 @@
D dictionary 65535 const options(*varsize) Dictionary bytes D dictionary 65535 const options(*varsize) Dictionary bytes
D dictLength 10U 0 value Dictionary length 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 inflateSync PR 10I 0 extproc('inflateSync') Sync. expansion
D strm like(z_stream) Expansion stream D strm like(z_stream) Expansion stream
* *

View File

@@ -137,3 +137,6 @@ EXPORTS
; zlib1 v1.2.7 added: ; zlib1 v1.2.7 added:
gzopen_w @165 gzopen_w @165
; zlib1 v1.2.8 added:
inflateGetDictionary @166

View File

@@ -137,3 +137,6 @@ EXPORTS
; zlib1 v1.2.7 added: ; zlib1 v1.2.7 added:
gzopen_w @165 gzopen_w @165
; zlib1 v1.2.8 added:
inflateGetDictionary @166

View File

@@ -1264,6 +1264,29 @@ z_streamp strm;
return Z_OK; 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) int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength)
z_streamp strm; z_streamp strm;
const Bytef *dictionary; const Bytef *dictionary;

View File

@@ -17,6 +17,7 @@ EXPORTS
deflatePrime deflatePrime
deflateSetHeader deflateSetHeader
inflateSetDictionary inflateSetDictionary
inflateGetDictionary
inflateSync inflateSync
inflateCopy inflateCopy
inflateReset inflateReset

View File

@@ -103,6 +103,7 @@
# define inflateReset z_inflateReset # define inflateReset z_inflateReset
# define inflateReset2 z_inflateReset2 # define inflateReset2 z_inflateReset2
# define inflateSetDictionary z_inflateSetDictionary # define inflateSetDictionary z_inflateSetDictionary
# define inflateGetDictionary z_inflateGetDictionary
# define inflateSync z_inflateSync # define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint # define inflateSyncPoint z_inflateSyncPoint
# define inflateUndermine z_inflateUndermine # define inflateUndermine z_inflateUndermine

View File

@@ -105,6 +105,7 @@
# define inflateReset z_inflateReset # define inflateReset z_inflateReset
# define inflateReset2 z_inflateReset2 # define inflateReset2 z_inflateReset2
# define inflateSetDictionary z_inflateSetDictionary # define inflateSetDictionary z_inflateSetDictionary
# define inflateGetDictionary z_inflateGetDictionary
# define inflateSync z_inflateSync # define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint # define inflateSyncPoint z_inflateSyncPoint
# define inflateUndermine z_inflateUndermine # define inflateUndermine z_inflateUndermine

View File

@@ -103,6 +103,7 @@
# define inflateReset z_inflateReset # define inflateReset z_inflateReset
# define inflateReset2 z_inflateReset2 # define inflateReset2 z_inflateReset2
# define inflateSetDictionary z_inflateSetDictionary # define inflateSetDictionary z_inflateSetDictionary
# define inflateGetDictionary z_inflateGetDictionary
# define inflateSync z_inflateSync # define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint # define inflateSyncPoint z_inflateSyncPoint
# define inflateUndermine z_inflateUndermine # define inflateUndermine z_inflateUndermine

15
zlib.h
View File

@@ -839,6 +839,21 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
inflate(). 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)); ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
/* /*
Skips invalid compressed data until a possible full flush point (see above Skips invalid compressed data until a possible full flush point (see above

View File

@@ -76,3 +76,7 @@ ZLIB_1.2.5.2 {
gzgetc_; gzgetc_;
inflateResetKeep; inflateResetKeep;
} ZLIB_1.2.5.1; } ZLIB_1.2.5.1;
ZLIB_1.2.7.1 {
inflateSetDictionary;
} ZLIB_1.2.7;