1 * ZLIB.INC - Interface to the general purpose compression library 2 * 3 * ILE RPG400 version by Patrick Monnerat, DATASPHERE. 4 * Version 1.3.2 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.3.2' 26 D ZLIB_VERNUM C X'1320' 27 D ZLIB_VER_MAJOR C 1 28 D ZLIB_VER_MINOR C 3 29 D ZLIB_VER_REVISION... 30 D C 2 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 D Z_VERSION_ERROR... 54 D C -6 55 * 56 D Z_NO_COMPRESSION... 57 D C 0 58 D Z_BEST_SPEED C 1 59 D Z_BEST_COMPRESSION... 60 D C 9 61 D Z_DEFAULT_COMPRESSION... 62 D C -1 63 * 64 D Z_FILTERED C 1 65 D Z_HUFFMAN_ONLY C 2 66 D Z_RLE C 3 67 D Z_DEFAULT_STRATEGY... 68 D C 0 69 * 70 D Z_BINARY C 0 71 D Z_ASCII C 1 72 D Z_UNKNOWN C 2 73 * 74 D Z_DEFLATED C 8 75 * 76 D Z_NULL C 0 77 * 78 ************************************************************************** 79 * Types 80 ************************************************************************** 81 * 82 D z_streamp S * Stream struct ptr 83 D gzFile S * File pointer 84 D gz_headerp S * 85 D z_off_t S 10i 0 Stream offsets 86 D z_off64_t S 20i 0 Stream offsets 87 * 88 ************************************************************************** 89 * Structures 90 ************************************************************************** 91 * 92 * The GZIP encode/decode stream support structure. 93 * 94 D z_stream DS align based(z_streamp) 95 D zs_next_in * Next input byte 96 D zs_avail_in 10U 0 Byte cnt at next_in 97 D zs_total_in 10U 0 Total bytes read 98 D zs_next_out * Output buffer ptr 99 D zs_avail_out 10U 0 Room left @ next_out 100 D zs_total_out 10U 0 Total bytes written 101 D zs_msg * Last errmsg or null 102 D zs_state * Internal state 103 D zs_zalloc * procptr Int. state allocator 104 D zs_free * procptr Int. state dealloc. 105 D zs_opaque * Private alloc. data 106 D zs_data_type 10i 0 ASC/BIN best guess 107 D zs_adler 10u 0 Uncompr. adler32 val 108 D 10U 0 Reserved 109 D 10U 0 Ptr. alignment 110 * 111 ************************************************************************** 112 * Utility function prototypes 113 ************************************************************************** 114 * 115 D compress PR 10I 0 extproc('compress') 116 D dest 65535 options(*varsize) Destination buffer 117 D destLen 10U 0 Destination length 118 D source 65535 const options(*varsize) Source buffer 119 D sourceLen 10u 0 value Source length 120 * 121 D compress2 PR 10I 0 extproc('compress2') 122 D dest 65535 options(*varsize) Destination buffer 123 D destLen 10U 0 Destination length 124 D source 65535 const options(*varsize) Source buffer 125 D sourceLen 10U 0 value Source length 126 D level 10I 0 value Compression level 127 * 128 D compress_z PR 10I 0 extproc('compress') 129 D dest 65535 options(*varsize) Destination buffer 130 D destLen 20U 0 Destination length 131 D source 65535 const options(*varsize) Source buffer 132 D sourceLen 20u 0 value Source length 133 * 134 D compress2_z PR 10I 0 extproc('compress2') 135 D dest 65535 options(*varsize) Destination buffer 136 D destLen 20U 0 Destination length 137 D source 65535 const options(*varsize) Source buffer 138 D sourceLen 20U 0 value Source length 139 D level 10I 0 value Compression level 140 * 141 D compressBound PR 10U 0 extproc('compressBound') 142 D sourceLen 10U 0 value 143 * 144 D compressBound_z PR 20U 0 extproc('compressBound') 145 D sourceLen 20U 0 value 146 * 147 D uncompress PR 10I 0 extproc('uncompress') 148 D dest 65535 options(*varsize) Destination buffer 149 D destLen 10U 0 Destination length 150 D source 65535 const options(*varsize) Source buffer 151 D sourceLen 10U 0 value Source length 152 * 153 D uncompress2 PR 10I 0 extproc('uncompress2') 154 D dest 65535 options(*varsize) Destination buffer 155 D destLen 10U 0 Destination length 156 D source 65535 const options(*varsize) Source buffer 157 D sourceLen 10U 0 Source length 158 * 159 D uncompress_z PR 10I 0 extproc('uncompress') 160 D dest 65535 options(*varsize) Destination buffer 161 D destLen 20U 0 Destination length 162 D source 65535 const options(*varsize) Source buffer 163 D sourceLen 20U 0 value Source length 164 * 165 D uncompress2_z PR 10I 0 extproc('uncompress2') 166 D dest 65535 options(*varsize) Destination buffer 167 D destLen 20U 0 Destination length 168 D source 65535 const options(*varsize) Source buffer 169 D sourceLen 20U 0 Source length 170 * 171 /if not defined(LARGE_FILES) 172 D gzopen PR extproc('gzopen') 173 D like(gzFile) 174 D path * value options(*string) File pathname 175 D mode * value options(*string) Open mode 176 /else 177 D gzopen PR extproc('gzopen64') 178 D like(gzFile) 179 D path * value options(*string) File pathname 180 D mode * value options(*string) Open mode 181 * 182 D gzopen64 PR extproc('gzopen64') 183 D like(gzFile) 184 D path * value options(*string) File pathname 185 D mode * value options(*string) Open mode 186 /endif 187 * 188 D gzdopen PR extproc('gzdopen') 189 D like(gzFile) 190 D fd 10I 0 value File descriptor 191 D mode * value options(*string) Open mode 192 * 193 D gzbuffer PR 10I 0 extproc('gzbuffer') 194 D file value like(gzFile) File pointer 195 D size 10U 0 value 196 * 197 D gzsetparams PR 10I 0 extproc('gzsetparams') 198 D file value like(gzFile) File pointer 199 D level 10I 0 value 200 D strategy 10I 0 value 201 * 202 D gzread PR 10I 0 extproc('gzread') 203 D file value like(gzFile) File pointer 204 D buf 65535 options(*varsize) Buffer 205 D len 10u 0 value Buffer length 206 * 207 D gzfread PR 20I 0 extproc('gzfread') 208 D buf 65535 options(*varsize) Buffer 209 D size 20u 0 value Buffer length 210 D nitems 20u 0 value Buffer length 211 D file value like(gzFile) File pointer 212 * 213 D gzwrite PR 10I 0 extproc('gzwrite') 214 D file value like(gzFile) File pointer 215 D buf 65535 const options(*varsize) Buffer 216 D len 10u 0 value Buffer length 217 * 218 D gzfwrite PR 20I 0 extproc('gzfwrite') 219 D buf 65535 options(*varsize) Buffer 220 D size 20u 0 value Buffer length 221 D nitems 20u 0 value Buffer length 222 D file value like(gzFile) File pointer 223 * 224 D gzputs PR 10I 0 extproc('gzputs') 225 D file value like(gzFile) File pointer 226 D s * value options(*string) String to output 227 * 228 D gzgets PR * extproc('gzgets') 229 D file value like(gzFile) File pointer 230 D buf 65535 options(*varsize) Read buffer 231 D len 10i 0 value Buffer length 232 * 233 D gzputc PR 10i 0 extproc('gzputc') 234 D file value like(gzFile) File pointer 235 D c 10I 0 value Character to write 236 * 237 D gzgetc PR 10i 0 extproc('gzgetc') 238 D file value like(gzFile) File pointer 239 * 240 D gzgetc_ PR 10i 0 extproc('gzgetc_') 241 D file value like(gzFile) File pointer 242 * 243 D gzungetc PR 10i 0 extproc('gzungetc') 244 D c 10I 0 value Character to push 245 D file value like(gzFile) File pointer 246 * 247 D gzflush PR 10i 0 extproc('gzflush') 248 D file value like(gzFile) File pointer 249 D flush 10I 0 value Type of flush 250 * 251 /if not defined(LARGE_FILES) 252 D gzseek PR extproc('gzseek') 253 D like(z_off_t) 254 D file value like(gzFile) File pointer 255 D offset value like(z_off_t) Offset 256 D whence 10i 0 value Origin 257 /else 258 D gzseek PR extproc('gzseek64') 259 D like(z_off_t) 260 D file value like(gzFile) File pointer 261 D offset value like(z_off_t) Offset 262 D whence 10i 0 value Origin 263 * 264 D gzseek64 PR extproc('gzseek64') 265 D like(z_off64_t) 266 D file value like(gzFile) File pointer 267 D offset value like(z_off64_t) Offset 268 D whence 10i 0 value Origin 269 /endif 270 * 271 D gzrewind PR 10i 0 extproc('gzrewind') 272 D file value like(gzFile) File pointer 273 * 274 /if not defined(LARGE_FILES) 275 D gztell PR extproc('gztell') 276 D like(z_off_t) 277 D file value like(gzFile) File pointer 278 /else 279 D gztell PR extproc('gztell64') 280 D like(z_off_t) 281 D file value like(gzFile) File pointer 282 * 283 D gztell64 PR extproc('gztell64') 284 D like(z_off64_t) 285 D file value like(gzFile) File pointer 286 /endif 287 * 288 /if not defined(LARGE_FILES) 289 D gzoffset PR extproc('gzoffset') 290 D like(z_off_t) 291 D file value like(gzFile) File pointer 292 /else 293 D gzoffset PR extproc('gzoffset64') 294 D like(z_off_t) 295 D file value like(gzFile) File pointer 296 * 297 D gzoffset64 PR extproc('gzoffset64') 298 D like(z_off64_t) 299 D file value like(gzFile) File pointer 300 /endif 301 * 302 D gzeof PR 10i 0 extproc('gzeof') 303 D file value like(gzFile) File pointer 304 * 305 D gzdirect PR 10i 0 extproc('gzdirect') 306 D file value like(gzFile) File pointer 307 * 308 D gzclose_r PR 10i 0 extproc('gzclose_r') 309 D file value like(gzFile) File pointer 310 * 311 D gzclose_w PR 10i 0 extproc('gzclose_w') 312 D file value like(gzFile) File pointer 313 * 314 D gzclose PR 10i 0 extproc('gzclose') 315 D file value like(gzFile) File pointer 316 * 317 D gzerror PR * extproc('gzerror') Error string 318 D file value like(gzFile) File pointer 319 D errnum 10I 0 Error code 320 * 321 D gzclearerr PR extproc('gzclearerr') 322 D file value like(gzFile) File pointer 323 * 324 ************************************************************************** 325 * Basic function prototypes 326 ************************************************************************** 327 * 328 D zlibVersion PR * extproc('zlibVersion') Version string 329 * 330 D deflateInit PR 10I 0 extproc('deflateInit_') Init. compression 331 D strm like(z_stream) Compression stream 332 D level 10I 0 value Compression level 333 D version * value options(*string) Version string 334 D stream_size 10i 0 value Stream struct. size 335 * 336 D deflate PR 10I 0 extproc('deflate') Compress data 337 D strm like(z_stream) Compression stream 338 D flush 10I 0 value Flush type required 339 * 340 D deflateEnd PR 10I 0 extproc('deflateEnd') Termin. compression 341 D strm like(z_stream) Compression stream 342 * 343 D inflateInit PR 10I 0 extproc('inflateInit_') Init. expansion 344 D strm like(z_stream) Expansion stream 345 D version * value options(*string) Version string 346 D stream_size 10i 0 value Stream struct. size 347 * 348 D inflate PR 10I 0 extproc('inflate') Expand data 349 D strm like(z_stream) Expansion stream 350 D flush 10I 0 value Flush type required 351 * 352 D inflateEnd PR 10I 0 extproc('inflateEnd') Termin. expansion 353 D strm like(z_stream) Expansion stream 354 * 355 ************************************************************************** 356 * Advanced function prototypes 357 ************************************************************************** 358 * 359 D deflateInit2 PR 10I 0 extproc('deflateInit2_') Init. compression 360 D strm like(z_stream) Compression stream 361 D level 10I 0 value Compression level 362 D method 10I 0 value Compression method 363 D windowBits 10I 0 value log2(window size) 364 D memLevel 10I 0 value Mem/cmpress tradeoff 365 D strategy 10I 0 value Compression strategy 366 D version * value options(*string) Version string 367 D stream_size 10i 0 value Stream struct. size 368 * 369 D deflateSetDictionary... 370 D PR 10I 0 extproc('deflateSetDictionary') Init. dictionary 371 D strm like(z_stream) Compression stream 372 D dictionary 65535 const options(*varsize) Dictionary bytes 373 D dictLength 10U 0 value Dictionary length 374 * 375 D deflateCopy PR 10I 0 extproc('deflateCopy') Compress strm 2 strm 376 D dest like(z_stream) Destination stream 377 D source like(z_stream) Source stream 378 * 379 D deflateReset PR 10I 0 extproc('deflateReset') End and init. stream 380 D strm like(z_stream) Compression stream 381 * 382 D deflateParams PR 10I 0 extproc('deflateParams') Change level & strat 383 D strm like(z_stream) Compression stream 384 D level 10I 0 value Compression level 385 D strategy 10I 0 value Compression strategy 386 * 387 D deflateTune PR 10I 0 extproc('deflateTune') 388 D strm like(z_stream) Compression stream 389 D good 10I 0 value 390 D lazy 10I 0 value 391 D nice 10I 0 value 392 D chain 10I 0 value 393 * 394 D deflateBound PR 10U 0 extproc('deflateBound') Change level & strat 395 D strm like(z_stream) Compression stream 396 D sourcelen 10U 0 value Compression level 397 * 398 D deflateBound_z PR 20U 0 extproc('deflateBound') Change level & strat 399 D strm like(z_stream) Compression stream 400 D sourcelen 20U 0 value Compression level 401 * 402 D deflatePending PR 10I 0 extproc('deflatePending') Change level & strat 403 D strm like(z_stream) Compression stream 404 D pending 10U 0 Pending bytes 405 D bits 10I 0 Pending bits 406 * 407 D deflateUsed PR 10I 0 extproc('deflateUsed') Get used bits 408 D strm like(z_stream) Compression stream 409 D bits 10I 0 Used bits 410 * 411 D deflatePrime PR 10I 0 extproc('deflatePrime') Change level & strat 412 D strm like(z_stream) Compression stream 413 D bits 10I 0 value # of bits to insert 414 D value 10I 0 value Bits to insert 415 * 416 D inflateInit2 PR 10I 0 extproc('inflateInit2_') Init. expansion 417 D strm like(z_stream) Expansion stream 418 D windowBits 10I 0 value log2(window size) 419 D version * value options(*string) Version string 420 D stream_size 10i 0 value Stream struct. size 421 * 422 D inflateSetDictionary... 423 D PR 10I 0 extproc('inflateSetDictionary') Init. dictionary 424 D strm like(z_stream) Expansion stream 425 D dictionary 65535 const options(*varsize) Dictionary bytes 426 D dictLength 10U 0 value Dictionary length 427 * 428 D inflateGetDictionary... 429 D PR 10I 0 extproc('inflateGetDictionary') Get dictionary 430 D strm like(z_stream) Expansion stream 431 D dictionary 65535 options(*varsize) Dictionary bytes 432 D dictLength 10U 0 Dictionary length 433 * 434 D deflateGetDictionary... 435 D PR 10I 0 extproc('deflateGetDictionary') Get dictionary 436 D strm like(z_stream) Expansion stream 437 D dictionary 65535 options(*varsize) Dictionary bytes 438 D dictLength 10U 0 Dictionary length 439 * 440 D inflateSync PR 10I 0 extproc('inflateSync') Sync. expansion 441 D strm like(z_stream) Expansion stream 442 * 443 D inflateCopy PR 10I 0 extproc('inflateCopy') 444 D dest like(z_stream) Destination stream 445 D source like(z_stream) Source stream 446 * 447 D inflateReset PR 10I 0 extproc('inflateReset') End and init. stream 448 D strm like(z_stream) Expansion stream 449 * 450 D inflateReset2 PR 10I 0 extproc('inflateReset2') End and init. stream 451 D strm like(z_stream) Expansion stream 452 D windowBits 10I 0 value Log2(buffer size) 453 * 454 D inflatePrime PR 10I 0 extproc('inflatePrime') Insert bits 455 D strm like(z_stream) Expansion stream 456 D bits 10I 0 value Bit count 457 D value 10I 0 value Bits to insert 458 * 459 D inflateMark PR 10I 0 extproc('inflateMark') Get inflate info 460 D strm like(z_stream) Expansion stream 461 * 462 D inflateCodesUsed... 463 D PR 20U 0 extproc('inflateCodesUsed') 464 D strm like(z_stream) Expansion stream 465 * 466 D inflateValidate... 467 D PR 20U 0 extproc('inflateValidate') 468 D strm like(z_stream) Expansion stream 469 D check 10I 0 value 470 * 471 D inflateGetHeader... 472 D PR 10U 0 extproc('inflateGetHeader') 473 D strm like(z_stream) Expansion stream 474 D head like(gz_headerp) 475 * 476 D deflateSetHeader... 477 D PR 10U 0 extproc('deflateSetHeader') 478 D strm like(z_stream) Expansion stream 479 D head like(gz_headerp) 480 * 481 D inflateBackInit... 482 D PR 10I 0 extproc('inflateBackInit_') 483 D strm like(z_stream) Expansion stream 484 D windowBits 10I 0 value Log2(buffer size) 485 D window 65535 options(*varsize) Buffer 486 D version * value options(*string) Version string 487 D stream_size 10i 0 value Stream struct. size 488 * 489 D inflateBack PR 10I 0 extproc('inflateBack') 490 D strm like(z_stream) Expansion stream 491 D in * value procptr Input function 492 D in_desc * value Input descriptor 493 D out * value procptr Output function 494 D out_desc * value Output descriptor 495 * 496 D inflateBackEnd PR 10I 0 extproc('inflateBackEnd') 497 D strm like(z_stream) Expansion stream 498 * 499 D zlibCompileFlags... 500 D PR 10U 0 extproc('zlibCompileFlags') 501 * 502 ************************************************************************** 503 * Checksum function prototypes 504 ************************************************************************** 505 * 506 D adler32 PR 10U 0 extproc('adler32') New checksum 507 D adler 10U 0 value Old checksum 508 D buf 65535 const options(*varsize) Bytes to accumulate 509 D len 10U 0 value Buffer length 510 * 511 D adler32_combine... 512 D PR 10U 0 extproc('adler32_combine') New checksum 513 D adler1 10U 0 value Old checksum 514 D adler2 10U 0 value Old checksum 515 D len2 20U 0 value Buffer length 516 * 517 D adler32_z PR 10U 0 extproc('adler32_z') New checksum 518 D adler 10U 0 value Old checksum 519 D buf 65535 const options(*varsize) Bytes to accumulate 520 D len 20U 0 value Buffer length 521 * 522 D crc32 PR 10U 0 extproc('crc32') New checksum 523 D crc 10U 0 value Old checksum 524 D buf 65535 const options(*varsize) Bytes to accumulate 525 D len 10U 0 value Buffer length 526 * 527 D crc32_combine... 528 D PR 10U 0 extproc('crc32_combine') New checksum 529 D crc1 10U 0 value Old checksum 530 D crc2 10U 0 value Old checksum 531 D len2 20U 0 value Buffer length 532 * 533 D crc32_z PR 10U 0 extproc('crc32_z') New checksum 534 D crc 10U 0 value Old checksum 535 D buf 65535 const options(*varsize) Bytes to accumulate 536 D len 20U 0 value Buffer length 537 * 538 D crc32_combine_gen... 539 D PR 10U 0 extproc('crc32_combine_gen') Operator 540 D len2 20U 0 value Buffer length 541 * 542 D crc32_combine_gen64... 543 D PR 10U 0 extproc('crc32_combine_gen64') Operator 544 D len2 20U 0 value Buffer length 545 * 546 D crc32_combine_op... 547 D PR 10U 0 extproc('crc32_combine_op') New Checksum 548 D crc1 10U 0 value Old checksum 549 D crc2 10U 0 value Old checksum 550 D op 10U 0 value Operator 551 * 552 ************************************************************************** 553 * Miscellaneous function prototypes 554 ************************************************************************** 555 * 556 D zError PR * extproc('zError') Error string 557 D err 10I 0 value Error code 558 * 559 D inflateSyncPoint... 560 D PR 10I 0 extproc('inflateSyncPoint') 561 D strm like(z_stream) Expansion stream 562 * 563 D get_crc_table PR * extproc('get_crc_table') Ptr to ulongs 564 * 565 D inflateUndermine... 566 D PR 10I 0 extproc('inflateUndermine') 567 D strm like(z_stream) Expansion stream 568 D arg 10I 0 value Error code 569 * 570 D inflateResetKeep... 571 D PR 10I 0 extproc('inflateResetKeep') End and init. stream 572 D strm like(z_stream) Expansion stream 573 * 574 D deflateResetKeep... 575 D PR 10I 0 extproc('deflateResetKeep') End and init. stream 576 D strm like(z_stream) Expansion stream 577 * 578 /endif 579