Chris@43: * ZLIB.INC - Interface to the general purpose compression library Chris@43: * Chris@43: * ILE RPG400 version by Patrick Monnerat, DATASPHERE. Chris@43: * Version 1.2.8 Chris@43: * Chris@43: * Chris@43: * WARNING: Chris@43: * Procedures inflateInit(), inflateInit2(), deflateInit(), Chris@43: * deflateInit2() and inflateBackInit() need to be called with Chris@43: * two additional arguments: Chris@43: * the package version string and the stream control structure. Chris@43: * size. This is needed because RPG lacks some macro feature. Chris@43: * Call these procedures as: Chris@43: * inflateInit(...: ZLIB_VERSION: %size(z_stream)) Chris@43: * Chris@43: /if not defined(ZLIB_H_) Chris@43: /define ZLIB_H_ Chris@43: * Chris@43: ************************************************************************** Chris@43: * Constants Chris@43: ************************************************************************** Chris@43: * Chris@43: * Versioning information. Chris@43: * Chris@43: D ZLIB_VERSION C '1.2.8' Chris@43: D ZLIB_VERNUM C X'1280' Chris@43: D ZLIB_VER_MAJOR C 1 Chris@43: D ZLIB_VER_MINOR C 2 Chris@43: D ZLIB_VER_REVISION... Chris@43: D C 8 Chris@43: D ZLIB_VER_SUBREVISION... Chris@43: D C 0 Chris@43: * Chris@43: * Other equates. Chris@43: * Chris@43: D Z_NO_FLUSH C 0 Chris@43: D Z_PARTIAL_FLUSH... Chris@43: D C 1 Chris@43: D Z_SYNC_FLUSH C 2 Chris@43: D Z_FULL_FLUSH C 3 Chris@43: D Z_FINISH C 4 Chris@43: D Z_BLOCK C 5 Chris@43: D Z_TREES C 6 Chris@43: * Chris@43: D Z_OK C 0 Chris@43: D Z_STREAM_END C 1 Chris@43: D Z_NEED_DICT C 2 Chris@43: D Z_ERRNO C -1 Chris@43: D Z_STREAM_ERROR C -2 Chris@43: D Z_DATA_ERROR C -3 Chris@43: D Z_MEM_ERROR C -4 Chris@43: D Z_BUF_ERROR C -5 Chris@43: DZ_VERSION_ERROR C -6 Chris@43: * Chris@43: D Z_NO_COMPRESSION... Chris@43: D C 0 Chris@43: D Z_BEST_SPEED C 1 Chris@43: D Z_BEST_COMPRESSION... Chris@43: D C 9 Chris@43: D Z_DEFAULT_COMPRESSION... Chris@43: D C -1 Chris@43: * Chris@43: D Z_FILTERED C 1 Chris@43: D Z_HUFFMAN_ONLY C 2 Chris@43: D Z_RLE C 3 Chris@43: D Z_DEFAULT_STRATEGY... Chris@43: D C 0 Chris@43: * Chris@43: D Z_BINARY C 0 Chris@43: D Z_ASCII C 1 Chris@43: D Z_UNKNOWN C 2 Chris@43: * Chris@43: D Z_DEFLATED C 8 Chris@43: * Chris@43: D Z_NULL C 0 Chris@43: * Chris@43: ************************************************************************** Chris@43: * Types Chris@43: ************************************************************************** Chris@43: * Chris@43: D z_streamp S * Stream struct ptr Chris@43: D gzFile S * File pointer Chris@43: D z_off_t S 10i 0 Stream offsets Chris@43: D z_off64_t S 20i 0 Stream offsets Chris@43: * Chris@43: ************************************************************************** Chris@43: * Structures Chris@43: ************************************************************************** Chris@43: * Chris@43: * The GZIP encode/decode stream support structure. Chris@43: * Chris@43: D z_stream DS align based(z_streamp) Chris@43: D zs_next_in * Next input byte Chris@43: D zs_avail_in 10U 0 Byte cnt at next_in Chris@43: D zs_total_in 10U 0 Total bytes read Chris@43: D zs_next_out * Output buffer ptr Chris@43: D zs_avail_out 10U 0 Room left @ next_out Chris@43: D zs_total_out 10U 0 Total bytes written Chris@43: D zs_msg * Last errmsg or null Chris@43: D zs_state * Internal state Chris@43: D zs_zalloc * procptr Int. state allocator Chris@43: D zs_free * procptr Int. state dealloc. Chris@43: D zs_opaque * Private alloc. data Chris@43: D zs_data_type 10i 0 ASC/BIN best guess Chris@43: D zs_adler 10u 0 Uncompr. adler32 val Chris@43: D 10U 0 Reserved Chris@43: D 10U 0 Ptr. alignment Chris@43: * Chris@43: ************************************************************************** Chris@43: * Utility function prototypes Chris@43: ************************************************************************** Chris@43: * Chris@43: D compress PR 10I 0 extproc('compress') Chris@43: D dest 65535 options(*varsize) Destination buffer Chris@43: D destLen 10U 0 Destination length Chris@43: D source 65535 const options(*varsize) Source buffer Chris@43: D sourceLen 10u 0 value Source length Chris@43: * Chris@43: D compress2 PR 10I 0 extproc('compress2') Chris@43: D dest 65535 options(*varsize) Destination buffer Chris@43: D destLen 10U 0 Destination length Chris@43: D source 65535 const options(*varsize) Source buffer Chris@43: D sourceLen 10U 0 value Source length Chris@43: D level 10I 0 value Compression level Chris@43: * Chris@43: D compressBound PR 10U 0 extproc('compressBound') Chris@43: D sourceLen 10U 0 value Chris@43: * Chris@43: D uncompress PR 10I 0 extproc('uncompress') Chris@43: D dest 65535 options(*varsize) Destination buffer Chris@43: D destLen 10U 0 Destination length Chris@43: D source 65535 const options(*varsize) Source buffer Chris@43: D sourceLen 10U 0 value Source length Chris@43: * Chris@43: /if not defined(LARGE_FILES) Chris@43: D gzopen PR extproc('gzopen') Chris@43: D like(gzFile) Chris@43: D path * value options(*string) File pathname Chris@43: D mode * value options(*string) Open mode Chris@43: /else Chris@43: D gzopen PR extproc('gzopen64') Chris@43: D like(gzFile) Chris@43: D path * value options(*string) File pathname Chris@43: D mode * value options(*string) Open mode Chris@43: * Chris@43: D gzopen64 PR extproc('gzopen64') Chris@43: D like(gzFile) Chris@43: D path * value options(*string) File pathname Chris@43: D mode * value options(*string) Open mode Chris@43: /endif Chris@43: * Chris@43: D gzdopen PR extproc('gzdopen') Chris@43: D like(gzFile) Chris@43: D fd 10I 0 value File descriptor Chris@43: D mode * value options(*string) Open mode Chris@43: * Chris@43: D gzbuffer PR 10I 0 extproc('gzbuffer') Chris@43: D file value like(gzFile) File pointer Chris@43: D size 10U 0 value Chris@43: * Chris@43: D gzsetparams PR 10I 0 extproc('gzsetparams') Chris@43: D file value like(gzFile) File pointer Chris@43: D level 10I 0 value Chris@43: D strategy 10I 0 value Chris@43: * Chris@43: D gzread PR 10I 0 extproc('gzread') Chris@43: D file value like(gzFile) File pointer Chris@43: D buf 65535 options(*varsize) Buffer Chris@43: D len 10u 0 value Buffer length Chris@43: * Chris@43: D gzwrite PR 10I 0 extproc('gzwrite') Chris@43: D file value like(gzFile) File pointer Chris@43: D buf 65535 const options(*varsize) Buffer Chris@43: D len 10u 0 value Buffer length Chris@43: * Chris@43: D gzputs PR 10I 0 extproc('gzputs') Chris@43: D file value like(gzFile) File pointer Chris@43: D s * value options(*string) String to output Chris@43: * Chris@43: D gzgets PR * extproc('gzgets') Chris@43: D file value like(gzFile) File pointer Chris@43: D buf 65535 options(*varsize) Read buffer Chris@43: D len 10i 0 value Buffer length Chris@43: * Chris@43: D gzputc PR 10i 0 extproc('gzputc') Chris@43: D file value like(gzFile) File pointer Chris@43: D c 10I 0 value Character to write Chris@43: * Chris@43: D gzgetc PR 10i 0 extproc('gzgetc') Chris@43: D file value like(gzFile) File pointer Chris@43: * Chris@43: D gzgetc_ PR 10i 0 extproc('gzgetc_') Chris@43: D file value like(gzFile) File pointer Chris@43: * Chris@43: D gzungetc PR 10i 0 extproc('gzungetc') Chris@43: D c 10I 0 value Character to push Chris@43: D file value like(gzFile) File pointer Chris@43: * Chris@43: D gzflush PR 10i 0 extproc('gzflush') Chris@43: D file value like(gzFile) File pointer Chris@43: D flush 10I 0 value Type of flush Chris@43: * Chris@43: /if not defined(LARGE_FILES) Chris@43: D gzseek PR extproc('gzseek') Chris@43: D like(z_off_t) Chris@43: D file value like(gzFile) File pointer Chris@43: D offset value like(z_off_t) Offset Chris@43: D whence 10i 0 value Origin Chris@43: /else Chris@43: D gzseek PR extproc('gzseek64') Chris@43: D like(z_off_t) Chris@43: D file value like(gzFile) File pointer Chris@43: D offset value like(z_off_t) Offset Chris@43: D whence 10i 0 value Origin Chris@43: * Chris@43: D gzseek64 PR extproc('gzseek64') Chris@43: D like(z_off64_t) Chris@43: D file value like(gzFile) File pointer Chris@43: D offset value like(z_off64_t) Offset Chris@43: D whence 10i 0 value Origin Chris@43: /endif Chris@43: * Chris@43: D gzrewind PR 10i 0 extproc('gzrewind') Chris@43: D file value like(gzFile) File pointer Chris@43: * Chris@43: /if not defined(LARGE_FILES) Chris@43: D gztell PR extproc('gztell') Chris@43: D like(z_off_t) Chris@43: D file value like(gzFile) File pointer Chris@43: /else Chris@43: D gztell PR extproc('gztell64') Chris@43: D like(z_off_t) Chris@43: D file value like(gzFile) File pointer Chris@43: * Chris@43: D gztell64 PR extproc('gztell64') Chris@43: D like(z_off64_t) Chris@43: D file value like(gzFile) File pointer Chris@43: /endif Chris@43: * Chris@43: /if not defined(LARGE_FILES) Chris@43: D gzoffset PR extproc('gzoffset') Chris@43: D like(z_off_t) Chris@43: D file value like(gzFile) File pointer Chris@43: /else Chris@43: D gzoffset PR extproc('gzoffset64') Chris@43: D like(z_off_t) Chris@43: D file value like(gzFile) File pointer Chris@43: * Chris@43: D gzoffset64 PR extproc('gzoffset64') Chris@43: D like(z_off64_t) Chris@43: D file value like(gzFile) File pointer Chris@43: /endif Chris@43: * Chris@43: D gzeof PR 10i 0 extproc('gzeof') Chris@43: D file value like(gzFile) File pointer Chris@43: * Chris@43: D gzclose_r PR 10i 0 extproc('gzclose_r') Chris@43: D file value like(gzFile) File pointer Chris@43: * Chris@43: D gzclose_w PR 10i 0 extproc('gzclose_w') Chris@43: D file value like(gzFile) File pointer Chris@43: * Chris@43: D gzclose PR 10i 0 extproc('gzclose') Chris@43: D file value like(gzFile) File pointer Chris@43: * Chris@43: D gzerror PR * extproc('gzerror') Error string Chris@43: D file value like(gzFile) File pointer Chris@43: D errnum 10I 0 Error code Chris@43: * Chris@43: D gzclearerr PR extproc('gzclearerr') Chris@43: D file value like(gzFile) File pointer Chris@43: * Chris@43: ************************************************************************** Chris@43: * Basic function prototypes Chris@43: ************************************************************************** Chris@43: * Chris@43: D zlibVersion PR * extproc('zlibVersion') Version string Chris@43: * Chris@43: D deflateInit PR 10I 0 extproc('deflateInit_') Init. compression Chris@43: D strm like(z_stream) Compression stream Chris@43: D level 10I 0 value Compression level Chris@43: D version * value options(*string) Version string Chris@43: D stream_size 10i 0 value Stream struct. size Chris@43: * Chris@43: D deflate PR 10I 0 extproc('deflate') Compress data Chris@43: D strm like(z_stream) Compression stream Chris@43: D flush 10I 0 value Flush type required Chris@43: * Chris@43: D deflateEnd PR 10I 0 extproc('deflateEnd') Termin. compression Chris@43: D strm like(z_stream) Compression stream Chris@43: * Chris@43: D inflateInit PR 10I 0 extproc('inflateInit_') Init. expansion Chris@43: D strm like(z_stream) Expansion stream Chris@43: D version * value options(*string) Version string Chris@43: D stream_size 10i 0 value Stream struct. size Chris@43: * Chris@43: D inflate PR 10I 0 extproc('inflate') Expand data Chris@43: D strm like(z_stream) Expansion stream Chris@43: D flush 10I 0 value Flush type required Chris@43: * Chris@43: D inflateEnd PR 10I 0 extproc('inflateEnd') Termin. expansion Chris@43: D strm like(z_stream) Expansion stream Chris@43: * Chris@43: ************************************************************************** Chris@43: * Advanced function prototypes Chris@43: ************************************************************************** Chris@43: * Chris@43: D deflateInit2 PR 10I 0 extproc('deflateInit2_') Init. compression Chris@43: D strm like(z_stream) Compression stream Chris@43: D level 10I 0 value Compression level Chris@43: D method 10I 0 value Compression method Chris@43: D windowBits 10I 0 value log2(window size) Chris@43: D memLevel 10I 0 value Mem/cmpress tradeoff Chris@43: D strategy 10I 0 value Compression stategy Chris@43: D version * value options(*string) Version string Chris@43: D stream_size 10i 0 value Stream struct. size Chris@43: * Chris@43: D deflateSetDictionary... Chris@43: D PR 10I 0 extproc('deflateSetDictionary') Init. dictionary Chris@43: D strm like(z_stream) Compression stream Chris@43: D dictionary 65535 const options(*varsize) Dictionary bytes Chris@43: D dictLength 10U 0 value Dictionary length Chris@43: * Chris@43: D deflateCopy PR 10I 0 extproc('deflateCopy') Compress strm 2 strm Chris@43: D dest like(z_stream) Destination stream Chris@43: D source like(z_stream) Source stream Chris@43: * Chris@43: D deflateReset PR 10I 0 extproc('deflateReset') End and init. stream Chris@43: D strm like(z_stream) Compression stream Chris@43: * Chris@43: D deflateParams PR 10I 0 extproc('deflateParams') Change level & strat Chris@43: D strm like(z_stream) Compression stream Chris@43: D level 10I 0 value Compression level Chris@43: D strategy 10I 0 value Compression stategy Chris@43: * Chris@43: D deflateBound PR 10U 0 extproc('deflateBound') Change level & strat Chris@43: D strm like(z_stream) Compression stream Chris@43: D sourcelen 10U 0 value Compression level Chris@43: * Chris@43: D deflatePending PR 10I 0 extproc('deflatePending') Change level & strat Chris@43: D strm like(z_stream) Compression stream Chris@43: D pending 10U 0 Pending bytes Chris@43: D bits 10I 0 Pending bits Chris@43: * Chris@43: D deflatePrime PR 10I 0 extproc('deflatePrime') Change level & strat Chris@43: D strm like(z_stream) Compression stream Chris@43: D bits 10I 0 value # of bits to insert Chris@43: D value 10I 0 value Bits to insert Chris@43: * Chris@43: D inflateInit2 PR 10I 0 extproc('inflateInit2_') Init. expansion Chris@43: D strm like(z_stream) Expansion stream Chris@43: D windowBits 10I 0 value log2(window size) Chris@43: D version * value options(*string) Version string Chris@43: D stream_size 10i 0 value Stream struct. size Chris@43: * Chris@43: D inflateSetDictionary... Chris@43: D PR 10I 0 extproc('inflateSetDictionary') Init. dictionary Chris@43: D strm like(z_stream) Expansion stream Chris@43: D dictionary 65535 const options(*varsize) Dictionary bytes Chris@43: D dictLength 10U 0 value Dictionary length Chris@43: * Chris@43: D inflateGetDictionary... Chris@43: D PR 10I 0 extproc('inflateGetDictionary') Get dictionary Chris@43: D strm like(z_stream) Expansion stream Chris@43: D dictionary 65535 options(*varsize) Dictionary bytes Chris@43: D dictLength 10U 0 Dictionary length Chris@43: * Chris@43: D inflateSync PR 10I 0 extproc('inflateSync') Sync. expansion Chris@43: D strm like(z_stream) Expansion stream Chris@43: * Chris@43: D inflateCopy PR 10I 0 extproc('inflateCopy') Chris@43: D dest like(z_stream) Destination stream Chris@43: D source like(z_stream) Source stream Chris@43: * Chris@43: D inflateReset PR 10I 0 extproc('inflateReset') End and init. stream Chris@43: D strm like(z_stream) Expansion stream Chris@43: * Chris@43: D inflateReset2 PR 10I 0 extproc('inflateReset2') End and init. stream Chris@43: D strm like(z_stream) Expansion stream Chris@43: D windowBits 10I 0 value Log2(buffer size) Chris@43: * Chris@43: D inflatePrime PR 10I 0 extproc('inflatePrime') Insert bits Chris@43: D strm like(z_stream) Expansion stream Chris@43: D bits 10I 0 value Bit count Chris@43: D value 10I 0 value Bits to insert Chris@43: * Chris@43: D inflateMark PR 10I 0 extproc('inflateMark') Get inflate info Chris@43: D strm like(z_stream) Expansion stream Chris@43: * Chris@43: D inflateBackInit... Chris@43: D PR 10I 0 extproc('inflateBackInit_') Chris@43: D strm like(z_stream) Expansion stream Chris@43: D windowBits 10I 0 value Log2(buffer size) Chris@43: D window 65535 options(*varsize) Buffer Chris@43: D version * value options(*string) Version string Chris@43: D stream_size 10i 0 value Stream struct. size Chris@43: * Chris@43: D inflateBack PR 10I 0 extproc('inflateBack') Chris@43: D strm like(z_stream) Expansion stream Chris@43: D in * value procptr Input function Chris@43: D in_desc * value Input descriptor Chris@43: D out * value procptr Output function Chris@43: D out_desc * value Output descriptor Chris@43: * Chris@43: D inflateBackEnd PR 10I 0 extproc('inflateBackEnd') Chris@43: D strm like(z_stream) Expansion stream Chris@43: * Chris@43: D zlibCompileFlags... Chris@43: D PR 10U 0 extproc('zlibCompileFlags') Chris@43: * Chris@43: ************************************************************************** Chris@43: * Checksum function prototypes Chris@43: ************************************************************************** Chris@43: * Chris@43: D adler32 PR 10U 0 extproc('adler32') New checksum Chris@43: D adler 10U 0 value Old checksum Chris@43: D buf 65535 const options(*varsize) Bytes to accumulate Chris@43: D len 10U 0 value Buffer length Chris@43: * Chris@43: D crc32 PR 10U 0 extproc('crc32') New checksum Chris@43: D crc 10U 0 value Old checksum Chris@43: D buf 65535 const options(*varsize) Bytes to accumulate Chris@43: D len 10U 0 value Buffer length Chris@43: * Chris@43: ************************************************************************** Chris@43: * Miscellaneous function prototypes Chris@43: ************************************************************************** Chris@43: * Chris@43: D zError PR * extproc('zError') Error string Chris@43: D err 10I 0 value Error code Chris@43: * Chris@43: D inflateSyncPoint... Chris@43: D PR 10I 0 extproc('inflateSyncPoint') Chris@43: D strm like(z_stream) Expansion stream Chris@43: * Chris@43: D get_crc_table PR * extproc('get_crc_table') Ptr to ulongs Chris@43: * Chris@43: D inflateUndermine... Chris@43: D PR 10I 0 extproc('inflateUndermine') Chris@43: D strm like(z_stream) Expansion stream Chris@43: D arg 10I 0 value Error code Chris@43: * Chris@43: D inflateResetKeep... Chris@43: D PR 10I 0 extproc('inflateResetKeep') End and init. stream Chris@43: D strm like(z_stream) Expansion stream Chris@43: * Chris@43: D deflateResetKeep... Chris@43: D PR 10I 0 extproc('deflateResetKeep') End and init. stream Chris@43: D strm like(z_stream) Expansion stream Chris@43: * Chris@43: /endif