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