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