1/* zconf.h -- configuration of the zlib compression library
2 * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler
3 * For conditions of distribution and use, see copyright notice in zlib.h
4 */
5
6/* @(#) $Id$ */
7
8#ifndef ZCONF_H
9#define ZCONF_H
10
11/*
12 * If you *really* need a unique prefix for all types and library functions,
13 * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
14 * Even better than compiling with -DZ_PREFIX would be to use configure to set
15 * this permanently in zconf.h using "./configure --zprefix".
16 */
17#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */
18# define Z_PREFIX_SET
19
20/* all linked symbols and init macros */
21# define _dist_code z__dist_code
22# define _length_code z__length_code
23# define _tr_align z__tr_align
24# define _tr_flush_bits z__tr_flush_bits
25# define _tr_flush_block z__tr_flush_block
26# define _tr_init z__tr_init
27# define _tr_stored_block z__tr_stored_block
28# define _tr_tally z__tr_tally
29# define adler32 z_adler32
30# define adler32_combine z_adler32_combine
31# define adler32_combine64 z_adler32_combine64
32# define adler32_z z_adler32_z
33# ifndef Z_SOLO
34# define compress z_compress
35# define compress2 z_compress2
36# define compressBound z_compressBound
37# endif
38# define crc32 z_crc32
39# define crc32_combine z_crc32_combine
40# define crc32_combine64 z_crc32_combine64
41# define crc32_combine_gen z_crc32_combine_gen
42# define crc32_combine_gen64 z_crc32_combine_gen64
43# define crc32_combine_op z_crc32_combine_op
44# define crc32_z z_crc32_z
45# define deflate z_deflate
46# define deflateBound z_deflateBound
47# define deflateCopy z_deflateCopy
48# define deflateEnd z_deflateEnd
49# define deflateGetDictionary z_deflateGetDictionary
50# define deflateInit z_deflateInit
51# define deflateInit2 z_deflateInit2
52# define deflateInit2_ z_deflateInit2_
53# define deflateInit_ z_deflateInit_
54# define deflateParams z_deflateParams
55# define deflatePending z_deflatePending
56# define deflatePrime z_deflatePrime
57# define deflateReset z_deflateReset
58# define deflateResetKeep z_deflateResetKeep
59# define deflateSetDictionary z_deflateSetDictionary
60# define deflateSetHeader z_deflateSetHeader
61# define deflateTune z_deflateTune
62# define deflate_copyright z_deflate_copyright
63# define get_crc_table z_get_crc_table
64# ifndef Z_SOLO
65# define gz_error z_gz_error
66# define gz_intmax z_gz_intmax
67# define gz_strwinerror z_gz_strwinerror
68# define gzbuffer z_gzbuffer
69# define gzclearerr z_gzclearerr
70# define gzclose z_gzclose
71# define gzclose_r z_gzclose_r
72# define gzclose_w z_gzclose_w
73# define gzdirect z_gzdirect
74# define gzdopen z_gzdopen
75# define gzeof z_gzeof
76# define gzerror z_gzerror
77# define gzflush z_gzflush
78# define gzfread z_gzfread
79# define gzfwrite z_gzfwrite
80# define gzgetc z_gzgetc
81# define gzgetc_ z_gzgetc_
82# define gzgets z_gzgets
83# define gzoffset z_gzoffset
84# define gzoffset64 z_gzoffset64
85# define gzopen z_gzopen
86# define gzopen64 z_gzopen64
87# ifdef _WIN32
88# define gzopen_w z_gzopen_w
89# endif
90# define gzprintf z_gzprintf
91# define gzputc z_gzputc
92# define gzputs z_gzputs
93# define gzread z_gzread
94# define gzrewind z_gzrewind
95# define gzseek z_gzseek
96# define gzseek64 z_gzseek64
97# define gzsetparams z_gzsetparams
98# define gztell z_gztell
99# define gztell64 z_gztell64
100# define gzungetc z_gzungetc
101# define gzvprintf z_gzvprintf
102# define gzwrite z_gzwrite
103# endif
104# define inflate z_inflate
105# define inflateBack z_inflateBack
106# define inflateBackEnd z_inflateBackEnd
107# define inflateBackInit z_inflateBackInit
108# define inflateBackInit_ z_inflateBackInit_
109# define inflateCodesUsed z_inflateCodesUsed
110# define inflateCopy z_inflateCopy
111# define inflateEnd z_inflateEnd
112# define inflateGetDictionary z_inflateGetDictionary
113# define inflateGetHeader z_inflateGetHeader
114# define inflateInit z_inflateInit
115# define inflateInit2 z_inflateInit2
116# define inflateInit2_ z_inflateInit2_
117# define inflateInit_ z_inflateInit_
118# define inflateMark z_inflateMark
119# define inflatePrime z_inflatePrime
120# define inflateReset z_inflateReset
121# define inflateReset2 z_inflateReset2
122# define inflateResetKeep z_inflateResetKeep
123# define inflateSetDictionary z_inflateSetDictionary
124# define inflateSync z_inflateSync
125# define inflateSyncPoint z_inflateSyncPoint
126# define inflateUndermine z_inflateUndermine
127# define inflateValidate z_inflateValidate
128# define inflate_copyright z_inflate_copyright
129# define inflate_fast z_inflate_fast
130# define inflate_table z_inflate_table
131# ifndef Z_SOLO
132# define uncompress z_uncompress
133# define uncompress2 z_uncompress2
134# endif
135# define zError z_zError
136# ifndef Z_SOLO
137# define zcalloc z_zcalloc
138# define zcfree z_zcfree
139# endif
140# define zlibCompileFlags z_zlibCompileFlags
141# define zlibVersion z_zlibVersion
142
143/* all zlib typedefs in zlib.h and zconf.h */
144# define Byte z_Byte
145# define Bytef z_Bytef
146# define alloc_func z_alloc_func
147# define charf z_charf
148# define free_func z_free_func
149# ifndef Z_SOLO
150# define gzFile z_gzFile
151# endif
152# define gz_header z_gz_header
153# define gz_headerp z_gz_headerp
154# define in_func z_in_func
155# define intf z_intf
156# define out_func z_out_func
157# define uInt z_uInt
158# define uIntf z_uIntf
159# define uLong z_uLong
160# define uLongf z_uLongf
161# define voidp z_voidp
162# define voidpc z_voidpc
163# define voidpf z_voidpf
164
165/* all zlib structs in zlib.h and zconf.h */
166# define gz_header_s z_gz_header_s
167# define internal_state z_internal_state
168
169#endif
170
171#if defined(__MSDOS__) && !defined(MSDOS)
172# define MSDOS
173#endif
174#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
175# define OS2
176#endif
177#if defined(_WINDOWS) && !defined(WINDOWS)
178# define WINDOWS
179#endif
180#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
181# ifndef WIN32
182# define WIN32
183# endif
184#endif
185#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
186# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
187# ifndef SYS16BIT
188# define SYS16BIT
189# endif
190# endif
191#endif
192
193/*
194 * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
195 * than 64k bytes at a time (needed on systems with 16-bit int).
196 */
197#ifdef SYS16BIT
198# define MAXSEG_64K
199#endif
200#ifdef MSDOS
201# define UNALIGNED_OK
202#endif
203
204#ifdef __STDC_VERSION__
205# ifndef STDC
206# define STDC
207# endif
208# if __STDC_VERSION__ >= 199901L
209# ifndef STDC99
210# define STDC99
211# endif
212# endif
213#endif
214#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
215# define STDC
216#endif
217#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
218# define STDC
219#endif
220#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
221# define STDC
222#endif
223#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
224# define STDC
225#endif
226
227#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */
228# define STDC
229#endif
230
231#ifndef STDC
232# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
233# define const /* note: need a more gentle solution here */
234# endif
235#endif
236
237#if defined(ZLIB_CONST) && !defined(z_const)
238# define z_const const
239#else
240# define z_const
241#endif
242
243#ifdef Z_SOLO
244# ifdef _WIN64
245 typedef unsigned long long z_size_t;
246# else
247 typedef unsigned long z_size_t;
248# endif
249#else
250# define z_longlong long long
251# if defined(NO_SIZE_T)
252 typedef unsigned NO_SIZE_T z_size_t;
253# elif defined(STDC)
254# include <stddef.h>
255 typedef size_t z_size_t;
256# else
257 typedef unsigned long z_size_t;
258# endif
259# undef z_longlong
260#endif
261
262/* Maximum value for memLevel in deflateInit2 */
263#ifndef MAX_MEM_LEVEL
264# ifdef MAXSEG_64K
265# define MAX_MEM_LEVEL 8
266# else
267# define MAX_MEM_LEVEL 9
268# endif
269#endif
270
271/* Maximum value for windowBits in deflateInit2 and inflateInit2.
272 * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
273 * created by gzip. (Files created by minigzip can still be extracted by
274 * gzip.)
275 */
276#ifndef MAX_WBITS
277# define MAX_WBITS 15 /* 32K LZ77 window */
278#endif
279
280/* The memory requirements for deflate are (in bytes):
281 (1 << (windowBits+2)) + (1 << (memLevel+9))
282 that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
283 plus a few kilobytes for small objects. For example, if you want to reduce
284 the default memory requirements from 256K to 128K, compile with
285 make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
286 Of course this will generally degrade compression (there's no free lunch).
287
288 The memory requirements for inflate are (in bytes) 1 << windowBits
289 that is, 32K for windowBits=15 (default value) plus about 7 kilobytes
290 for small objects.
291*/
292
293 /* Type declarations */
294
295#ifndef OF /* function prototypes */
296# ifdef STDC
297# define OF(args) args
298# else
299# define OF(args) ()
300# endif
301#endif
302
303/* The following definitions for FAR are needed only for MSDOS mixed
304 * model programming (small or medium model with some far allocations).
305 * This was tested only with MSC; for other MSDOS compilers you may have
306 * to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
307 * just define FAR to be empty.
308 */
309#ifdef SYS16BIT
310# if defined(M_I86SM) || defined(M_I86MM)
311 /* MSC small or medium model */
312# define SMALL_MEDIUM
313# ifdef _MSC_VER
314# define FAR _far
315# else
316# define FAR far
317# endif
318# endif
319# if (defined(__SMALL__) || defined(__MEDIUM__))
320 /* Turbo C small or medium model */
321# define SMALL_MEDIUM
322# ifdef __BORLANDC__
323# define FAR _far
324# else
325# define FAR far
326# endif
327# endif
328#endif
329
330#if defined(WINDOWS) || defined(WIN32)
331 /* If building or using zlib as a DLL, define ZLIB_DLL.
332 * This is not mandatory, but it offers a little performance increase.
333 */
334# ifdef ZLIB_DLL
335# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
336# ifdef ZLIB_INTERNAL
337# define ZEXTERN extern __declspec(dllexport)
338# else
339# define ZEXTERN extern __declspec(dllimport)
340# endif
341# endif
342# endif /* ZLIB_DLL */
343 /* If building or using zlib with the WINAPI/WINAPIV calling convention,
344 * define ZLIB_WINAPI.
345 * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
346 */
347# ifdef ZLIB_WINAPI
348# ifdef FAR
349# undef FAR
350# endif
351# ifndef WIN32_LEAN_AND_MEAN
352# define WIN32_LEAN_AND_MEAN
353# endif
354# include <windows.h>
355 /* No need for _export, use ZLIB.DEF instead. */
356 /* For complete Windows compatibility, use WINAPI, not __stdcall. */
357# define ZEXPORT WINAPI
358# ifdef WIN32
359# define ZEXPORTVA WINAPIV
360# else
361# define ZEXPORTVA FAR CDECL
362# endif
363# endif
364#endif
365
366#if defined (__BEOS__)
367# ifdef ZLIB_DLL
368# ifdef ZLIB_INTERNAL
369# define ZEXPORT __declspec(dllexport)
370# define ZEXPORTVA __declspec(dllexport)
371# else
372# define ZEXPORT __declspec(dllimport)
373# define ZEXPORTVA __declspec(dllimport)
374# endif
375# endif
376#endif
377
378#ifndef ZEXTERN
379# define ZEXTERN extern
380#endif
381#ifndef ZEXPORT
382# define ZEXPORT
383#endif
384#ifndef ZEXPORTVA
385# define ZEXPORTVA
386#endif
387
388#ifndef FAR
389# define FAR
390#endif
391
392#if !defined(__MACTYPES__)
393typedef unsigned char Byte; /* 8 bits */
394#endif
395typedef unsigned int uInt; /* 16 bits or more */
396typedef unsigned long uLong; /* 32 bits or more */
397
398#ifdef SMALL_MEDIUM
399 /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
400# define Bytef Byte FAR
401#else
402 typedef Byte FAR Bytef;
403#endif
404typedef char FAR charf;
405typedef int FAR intf;
406typedef uInt FAR uIntf;
407typedef uLong FAR uLongf;
408
409#ifdef STDC
410 typedef void const *voidpc;
411 typedef void FAR *voidpf;
412 typedef void *voidp;
413#else
414 typedef Byte const *voidpc;
415 typedef Byte FAR *voidpf;
416 typedef Byte *voidp;
417#endif
418
419#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
420# include <limits.h>
421# if (UINT_MAX == 0xffffffffUL)
422# define Z_U4 unsigned
423# elif (ULONG_MAX == 0xffffffffUL)
424# define Z_U4 unsigned long
425# elif (USHRT_MAX == 0xffffffffUL)
426# define Z_U4 unsigned short
427# endif
428#endif
429
430#ifdef Z_U4
431 typedef Z_U4 z_crc_t;
432#else
433 typedef unsigned long z_crc_t;
434#endif
435
436#if 1 /* was set to #if 1 by ./configure */
437# define Z_HAVE_UNISTD_H
438#endif
439
440#if 1 /* was set to #if 1 by ./configure */
441# define Z_HAVE_STDARG_H
442#endif
443
444#ifdef STDC
445# ifndef Z_SOLO
446# include <sys/types.h> /* for off_t */
447# endif
448#endif
449
450#if defined(STDC) || defined(Z_HAVE_STDARG_H)
451# ifndef Z_SOLO
452# include <stdarg.h> /* for va_list */
453# endif
454#endif
455
456#ifdef _WIN32
457# ifndef Z_SOLO
458# include <stddef.h> /* for wchar_t */
459# endif
460#endif
461
462/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
463 * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
464 * though the former does not conform to the LFS document), but considering
465 * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
466 * equivalently requesting no 64-bit operations
467 */
468#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
469# undef _LARGEFILE64_SOURCE
470#endif
471
472#ifndef Z_HAVE_UNISTD_H
473# ifdef __WATCOMC__
474# define Z_HAVE_UNISTD_H
475# endif
476#endif
477#ifndef Z_HAVE_UNISTD_H
478# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)
479# define Z_HAVE_UNISTD_H
480# endif
481#endif
482#ifndef Z_SOLO
483# if defined(Z_HAVE_UNISTD_H)
484# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
485# ifdef VMS
486# include <unixio.h> /* for off_t */
487# endif
488# ifndef z_off_t
489# define z_off_t off_t
490# endif
491# endif
492#endif
493
494#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0
495# define Z_LFS64
496#endif
497
498#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64)
499# define Z_LARGE64
500#endif
501
502#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64)
503# define Z_WANT64
504#endif
505
506#if !defined(SEEK_SET) && !defined(Z_SOLO)
507# define SEEK_SET 0 /* Seek from beginning of file. */
508# define SEEK_CUR 1 /* Seek from current position. */
509# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
510#endif
511
512#ifndef z_off_t
513# define z_off_t long
514#endif
515
516#if !defined(_WIN32) && defined(Z_LARGE64)
517# define z_off64_t off64_t
518#else
519# if defined(_WIN32) && !defined(__GNUC__)
520# define z_off64_t __int64
521# else
522# define z_off64_t z_off_t
523# endif
524#endif
525
526/* MVS linker does not support external names larger than 8 bytes */
527#if defined(__MVS__)
528 #pragma map(deflateInit_,"DEIN")
529 #pragma map(deflateInit2_,"DEIN2")
530 #pragma map(deflateEnd,"DEEND")
531 #pragma map(deflateBound,"DEBND")
532 #pragma map(inflateInit_,"ININ")
533 #pragma map(inflateInit2_,"ININ2")
534 #pragma map(inflateEnd,"INEND")
535 #pragma map(inflateSync,"INSY")
536 #pragma map(inflateSetDictionary,"INSEDI")
537 #pragma map(compressBound,"CMBND")
538 #pragma map(inflate_table,"INTABL")
539 #pragma map(inflate_fast,"INFA")
540 #pragma map(inflate_copyright,"INCOPY")
541#endif
542
543#endif /* ZCONF_H */
544