1 * ZLIB.INC - Interface to the general purpose compression library 2 * 3 * ILE RPG400 version by Patrick Monnerat, DATASPHERE. 4 * Version 1.2.8 5 * 6 * 7 * WARNING: 8 * Procedures inflateInit(), inflateInit2(), deflateInit(), 9 * deflateInit2() and inflateBackInit() need to be called with 10 * two additional arguments: 11 * the package version string and the stream control structure. 12 * size. This is needed because RPG lacks some macro feature. 13 * Call these procedures as: 14 * inflateInit(...: ZLIB_VERSION: %size(z_stream)) 15 * 16 /if not defined(ZLIB_H_) 17 /define ZLIB_H_ 18 * 19 ************************************************************************** 20 * Constants 21 ************************************************************************** 22 * 23 * Versioning information. 24 * 25 D ZLIB_VERSION C '1.2.8' 26 D ZLIB_VERNUM C X'1280' 27 D ZLIB_VER_MAJOR C 1 28 D ZLIB_VER_MINOR C 2 29 D ZLIB_VER_REVISION... 30 D C 8 31 D ZLIB_VER_SUBREVISION... 32 D C 0 33 * 34 * Other equates. 35 * 36 D Z_NO_FLUSH C 0 37 D Z_PARTIAL_FLUSH... 38 D C 1 39 D Z_SYNC_FLUSH C 2 40 D Z_FULL_FLUSH C 3 41 D Z_FINISH C 4 42 D Z_BLOCK C 5 43 D Z_TREES C 6 44 * 45 D Z_OK C 0 46 D Z_STREAM_END C 1 47 D Z_NEED_DICT C 2 48 D Z_ERRNO C -1 49 D Z_STREAM_ERROR C -2 50 D Z_DATA_ERROR C -3 51 D Z_MEM_ERROR C -4 52 D Z_BUF_ERROR C -5 53 DZ_VERSION_ERROR C -6 54 * 55 D Z_NO_COMPRESSION... 56 D C 0 57 D Z_BEST_SPEED C 1 58 D Z_BEST_COMPRESSION... 59 D C 9 60 D Z_DEFAULT_COMPRESSION... 61 D C -1 62 * 63 D Z_FILTERED C 1 64 D Z_HUFFMAN_ONLY C 2 65 D Z_RLE C 3 66 D Z_DEFAULT_STRATEGY... 67 D C 0 68 * 69 D Z_BINARY C 0 70 D Z_ASCII C 1 71 D Z_UNKNOWN C 2 72 * 73 D Z_DEFLATED C 8 74 * 75 D Z_NULL C 0 76 * 77 ************************************************************************** 78 * Types 79 ************************************************************************** 80 * 81 D z_streamp S * Stream struct ptr 82 D gzFile S * File pointer 83 D z_off_t S 10i 0 Stream offsets 84 D z_off64_t S 20i 0 Stream offsets 85 * 86 ************************************************************************** 87 * Structures 88 ************************************************************************** 89 * 90 * The GZIP encode/decode stream support structure. 91 * 92 D z_stream DS align based(z_streamp) 93 D zs_next_in * Next input byte 94 D zs_avail_in 10U 0 Byte cnt at next_in 95 D zs_total_in 10U 0 Total bytes read 96 D zs_next_out * Output buffer ptr 97 D zs_avail_out 10U 0 Room left @ next_out 98 D zs_total_out 10U 0 Total bytes written 99 D zs_msg * Last errmsg or null 100 D zs_state * Internal state 101 D zs_zalloc * procptr Int. state allocator 102 D zs_free * procptr Int. state dealloc. 103 D zs_opaque * Private alloc. data 104 D zs_data_type 10i 0 ASC/BIN best guess 105 D zs_adler 10u 0 Uncompr. adler32 val 106 D 10U 0 Reserved 107 D 10U 0 Ptr. alignment 108 * 109 ************************************************************************** 110 * Utility function prototypes 111 ************************************************************************** 112 * 113 D compress PR 10I 0 extproc('compress') 114 D dest 65535 options(*varsize) Destination buffer 115 D destLen 10U 0 Destination length 116 D source 65535 const options(*varsize) Source buffer 117 D sourceLen 10u 0 value Source length 118 * 119 D compress2 PR 10I 0 extproc('compress2') 120 D dest 65535 options(*varsize) Destination buffer 121 D destLen 10U 0 Destination length 122 D source 65535 const options(*varsize) Source buffer 123 D sourceLen 10U 0 value Source length 124 D level 10I 0 value Compression level 125 * 126 D compressBound PR 10U 0 extproc('compressBound') 127 D sourceLen 10U 0 value 128 * 129 D uncompress PR 10I 0 extproc('uncompress') 130 D dest 65535 options(*varsize) Destination buffer 131 D destLen 10U 0 Destination length 132 D source 65535 const options(*varsize) Source buffer 133 D sourceLen 10U 0 value Source length 134 * 135 /if not defined(LARGE_FILES) 136 D gzopen PR extproc('gzopen') 137 D like(gzFile) 138 D path * value options(*string) File pathname 139 D mode * value options(*string) Open mode 140 /else 141 D gzopen PR extproc('gzopen64') 142 D like(gzFile) 143 D path * value options(*string) File pathname 144 D mode * value options(*string) Open mode 145 * 146 D gzopen64 PR extproc('gzopen64') 147 D like(gzFile) 148 D path * value options(*string) File pathname 149 D mode * value options(*string) Open mode 150 /endif 151 * 152 D gzdopen PR extproc('gzdopen') 153 D like(gzFile) 154 D fd 10I 0 value File descriptor 155 D mode * value options(*string) Open mode 156 * 157 D gzbuffer PR 10I 0 extproc('gzbuffer') 158 D file value like(gzFile) File pointer 159 D size 10U 0 value 160 * 161 D gzsetparams PR 10I 0 extproc('gzsetparams') 162 D file value like(gzFile) File pointer 163 D level 10I 0 value 164 D strategy 10I 0 value 165 * 166 D gzread PR 10I 0 extproc('gzread') 167 D file value like(gzFile) File pointer 168 D buf 65535 options(*varsize) Buffer 169 D len 10u 0 value Buffer length 170 * 171 D gzwrite PR 10I 0 extproc('gzwrite') 172 D file value like(gzFile) File pointer 173 D buf 65535 const options(*varsize) Buffer 174 D len 10u 0 value Buffer length 175 * 176 D gzputs PR 10I 0 extproc('gzputs') 177 D file value like(gzFile) File pointer 178 D s * value options(*string) String to output 179 * 180 D gzgets PR * extproc('gzgets') 181 D file value like(gzFile) File pointer 182 D buf 65535 options(*varsize) Read buffer 183 D len 10i 0 value Buffer length 184 * 185 D gzputc PR 10i 0 extproc('gzputc') 186 D file value like(gzFile) File pointer 187 D c 10I 0 value Character to write 188 * 189 D gzgetc PR 10i 0 extproc('gzgetc') 190 D file value like(gzFile) File pointer 191 * 192 D gzgetc_ PR 10i 0 extproc('gzgetc_') 193 D file value like(gzFile) File pointer 194 * 195 D gzungetc PR 10i 0 extproc('gzungetc') 196 D c 10I 0 value Character to push 197 D file value like(gzFile) File pointer 198 * 199 D gzflush PR 10i 0 extproc('gzflush') 200 D file value like(gzFile) File pointer 201 D flush 10I 0 value Type of flush 202 * 203 /if not defined(LARGE_FILES) 204 D gzseek PR extproc('gzseek') 205 D like(z_off_t) 206 D file value like(gzFile) File pointer 207 D offset value like(z_off_t) Offset 208 D whence 10i 0 value Origin 209 /else 210 D gzseek PR extproc('gzseek64') 211 D like(z_off_t) 212 D file value like(gzFile) File pointer 213 D offset value like(z_off_t) Offset 214 D whence 10i 0 value Origin 215 * 216 D gzseek64 PR extproc('gzseek64') 217 D like(z_off64_t) 218 D file value like(gzFile) File pointer 219 D offset value like(z_off64_t) Offset 220 D whence 10i 0 value Origin 221 /endif 222 * 223 D gzrewind PR 10i 0 extproc('gzrewind') 224 D file value like(gzFile) File pointer 225 * 226 /if not defined(LARGE_FILES) 227 D gztell PR extproc('gztell') 228 D like(z_off_t) 229 D file value like(gzFile) File pointer 230 /else 231 D gztell PR extproc('gztell64') 232 D like(z_off_t) 233 D file value like(gzFile) File pointer 234 * 235 D gztell64 PR extproc('gztell64') 236 D like(z_off64_t) 237 D file value like(gzFile) File pointer 238 /endif 239 * 240 /if not defined(LARGE_FILES) 241 D gzoffset PR extproc('gzoffset') 242 D like(z_off_t) 243 D file value like(gzFile) File pointer 244 /else 245 D gzoffset PR extproc('gzoffset64') 246 D like(z_off_t) 247 D file value like(gzFile) File pointer 248 * 249 D gzoffset64 PR extproc('gzoffset64') 250 D like(z_off64_t) 251 D file value like(gzFile) File pointer 252 /endif 253 * 254 D gzeof PR 10i 0 extproc('gzeof') 255 D file value like(gzFile) File pointer 256 * 257 D gzclose_r PR 10i 0 extproc('gzclose_r') 258 D file value like(gzFile) File pointer 259 * 260 D gzclose_w PR 10i 0 extproc('gzclose_w') 261 D file value like(gzFile) File pointer 262 * 263 D gzclose PR 10i 0 extproc('gzclose') 264 D file value like(gzFile) File pointer 265 * 266 D gzerror PR * extproc('gzerror') Error string 267 D file value like(gzFile) File pointer 268 D errnum 10I 0 Error code 269 * 270 D gzclearerr PR extproc('gzclearerr') 271 D file value like(gzFile) File pointer 272 * 273 ************************************************************************** 274 * Basic function prototypes 275 ************************************************************************** 276 * 277 D zlibVersion PR * extproc('zlibVersion') Version string 278 * 279 D deflateInit PR 10I 0 extproc('deflateInit_') Init. compression 280 D strm like(z_stream) Compression stream 281 D level 10I 0 value Compression level 282 D version * value options(*string) Version string 283 D stream_size 10i 0 value Stream struct. size 284 * 285 D deflate PR 10I 0 extproc('deflate') Compress data 286 D strm like(z_stream) Compression stream 287 D flush 10I 0 value Flush type required 288 * 289 D deflateEnd PR 10I 0 extproc('deflateEnd') Termin. compression 290 D strm like(z_stream) Compression stream 291 * 292 D inflateInit PR 10I 0 extproc('inflateInit_') Init. expansion 293 D strm like(z_stream) Expansion stream 294 D version * value options(*string) Version string 295 D stream_size 10i 0 value Stream struct. size 296 * 297 D inflate PR 10I 0 extproc('inflate') Expand data 298 D strm like(z_stream) Expansion stream 299 D flush 10I 0 value Flush type required 300 * 301 D inflateEnd PR 10I 0 extproc('inflateEnd') Termin. expansion 302 D strm like(z_stream) Expansion stream 303 * 304 ************************************************************************** 305 * Advanced function prototypes 306 ************************************************************************** 307 * 308 D deflateInit2 PR 10I 0 extproc('deflateInit2_') Init. compression 309 D strm like(z_stream) Compression stream 310 D level 10I 0 value Compression level 311 D method 10I 0 value Compression method 312 D windowBits 10I 0 value log2(window size) 313 D memLevel 10I 0 value Mem/cmpress tradeoff 314 D strategy 10I 0 value Compression stategy 315 D version * value options(*string) Version string 316 D stream_size 10i 0 value Stream struct. size 317 * 318 D deflateSetDictionary... 319 D PR 10I 0 extproc('deflateSetDictionary') Init. dictionary 320 D strm like(z_stream) Compression stream 321 D dictionary 65535 const options(*varsize) Dictionary bytes 322 D dictLength 10U 0 value Dictionary length 323 * 324 D deflateCopy PR 10I 0 extproc('deflateCopy') Compress strm 2 strm 325 D dest like(z_stream) Destination stream 326 D source like(z_stream) Source stream 327 * 328 D deflateReset PR 10I 0 extproc('deflateReset') End and init. stream 329 D strm like(z_stream) Compression stream 330 * 331 D deflateParams PR 10I 0 extproc('deflateParams') Change level & strat 332 D strm like(z_stream) Compression stream 333 D level 10I 0 value Compression level 334 D strategy 10I 0 value Compression stategy 335 * 336 D deflateBound PR 10U 0 extproc('deflateBound') Change level & strat 337 D strm like(z_stream) Compression stream 338 D sourcelen 10U 0 value Compression level 339 * 340 D deflatePending PR 10I 0 extproc('deflatePending') Change level & strat 341 D strm like(z_stream) Compression stream 342 D pending 10U 0 Pending bytes 343 D bits 10I 0 Pending bits 344 * 345 D deflatePrime PR 10I 0 extproc('deflatePrime') Change level & strat 346 D strm like(z_stream) Compression stream 347 D bits 10I 0 value # of bits to insert 348 D value 10I 0 value Bits to insert 349 * 350 D inflateInit2 PR 10I 0 extproc('inflateInit2_') Init. expansion 351 D strm like(z_stream) Expansion stream 352 D windowBits 10I 0 value log2(window size) 353 D version * value options(*string) Version string 354 D stream_size 10i 0 value Stream struct. size 355 * 356 D inflateSetDictionary... 357 D PR 10I 0 extproc('inflateSetDictionary') Init. dictionary 358 D strm like(z_stream) Expansion stream 359 D dictionary 65535 const options(*varsize) Dictionary bytes 360 D dictLength 10U 0 value Dictionary length 361 * 362 D inflateGetDictionary... 363 D PR 10I 0 extproc('inflateGetDictionary') Get dictionary 364 D strm like(z_stream) Expansion stream 365 D dictionary 65535 options(*varsize) Dictionary bytes 366 D dictLength 10U 0 Dictionary length 367 * 368 D inflateSync PR 10I 0 extproc('inflateSync') Sync. expansion 369 D strm like(z_stream) Expansion stream 370 * 371 D inflateCopy PR 10I 0 extproc('inflateCopy') 372 D dest like(z_stream) Destination stream 373 D source like(z_stream) Source stream 374 * 375 D inflateReset PR 10I 0 extproc('inflateReset') End and init. stream 376 D strm like(z_stream) Expansion stream 377 * 378 D inflateReset2 PR 10I 0 extproc('inflateReset2') End and init. stream 379 D strm like(z_stream) Expansion stream 380 D windowBits 10I 0 value Log2(buffer size) 381 * 382 D inflatePrime PR 10I 0 extproc('inflatePrime') Insert bits 383 D strm like(z_stream) Expansion stream 384 D bits 10I 0 value Bit count 385 D value 10I 0 value Bits to insert 386 * 387 D inflateMark PR 10I 0 extproc('inflateMark') Get inflate info 388 D strm like(z_stream) Expansion stream 389 * 390 D inflateBackInit... 391 D PR 10I 0 extproc('inflateBackInit_') 392 D strm like(z_stream) Expansion stream 393 D windowBits 10I 0 value Log2(buffer size) 394 D window 65535 options(*varsize) Buffer 395 D version * value options(*string) Version string 396 D stream_size 10i 0 value Stream struct. size 397 * 398 D inflateBack PR 10I 0 extproc('inflateBack') 399 D strm like(z_stream) Expansion stream 400 D in * value procptr Input function 401 D in_desc * value Input descriptor 402 D out * value procptr Output function 403 D out_desc * value Output descriptor 404 * 405 D inflateBackEnd PR 10I 0 extproc('inflateBackEnd') 406 D strm like(z_stream) Expansion stream 407 * 408 D zlibCompileFlags... 409 D PR 10U 0 extproc('zlibCompileFlags') 410 * 411 ************************************************************************** 412 * Checksum function prototypes 413 ************************************************************************** 414 * 415 D adler32 PR 10U 0 extproc('adler32') New checksum 416 D adler 10U 0 value Old checksum 417 D buf 65535 const options(*varsize) Bytes to accumulate 418 D len 10U 0 value Buffer length 419 * 420 D crc32 PR 10U 0 extproc('crc32') New checksum 421 D crc 10U 0 value Old checksum 422 D buf 65535 const options(*varsize) Bytes to accumulate 423 D len 10U 0 value Buffer length 424 * 425 ************************************************************************** 426 * Miscellaneous function prototypes 427 ************************************************************************** 428 * 429 D zError PR * extproc('zError') Error string 430 D err 10I 0 value Error code 431 * 432 D inflateSyncPoint... 433 D PR 10I 0 extproc('inflateSyncPoint') 434 D strm like(z_stream) Expansion stream 435 * 436 D get_crc_table PR * extproc('get_crc_table') Ptr to ulongs 437 * 438 D inflateUndermine... 439 D PR 10I 0 extproc('inflateUndermine') 440 D strm like(z_stream) Expansion stream 441 D arg 10I 0 value Error code 442 * 443 D inflateResetKeep... 444 D PR 10I 0 extproc('inflateResetKeep') End and init. stream 445 D strm like(z_stream) Expansion stream 446 * 447 D deflateResetKeep... 448 D PR 10I 0 extproc('deflateResetKeep') End and init. stream 449 D strm like(z_stream) Expansion stream 450 * 451 /endif