Home | History | Annotate | Download | only in as400
      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
    452