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