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