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