Line  | Count  | Source (jump to first uncovered line)  | 
1  |  | /* zutil.h -- internal interface and configuration of the compression library  | 
2  |  |  * Copyright (C) 1995-2022 Jean-loup Gailly, Mark Adler  | 
3  |  |  * For conditions of distribution and use, see copyright notice in zlib.h  | 
4  |  |  */  | 
5  |  |  | 
6  |  | /* WARNING: this file should *not* be used by applications. It is  | 
7  |  |    part of the implementation of the compression library and is  | 
8  |  |    subject to change. Applications should only use zlib.h.  | 
9  |  |  */  | 
10  |  |  | 
11  |  | /* @(#) $Id$ */  | 
12  |  |  | 
13  |  | #ifndef ZUTIL_H  | 
14  |  | #define ZUTIL_H  | 
15  |  |  | 
16  |  | #ifdef HAVE_HIDDEN  | 
17  |  | #  define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) | 
18  |  | #else  | 
19  |  | #  define ZLIB_INTERNAL  | 
20  |  | #endif  | 
21  |  |  | 
22  |  | #include "zlib.h"  | 
23  |  |  | 
24  |  | #if defined(STDC) && !defined(Z_SOLO)  | 
25  |  | #  if !(defined(_WIN32_WCE) && defined(_MSC_VER))  | 
26  |  | #    include <stddef.h>  | 
27  |  | #  endif  | 
28  |  | #  include <string.h>  | 
29  |  | #  include <stdlib.h>  | 
30  |  | #endif  | 
31  |  |  | 
32  |  | #ifndef local  | 
33  |  | #  define local static  | 
34  |  | #endif  | 
35  |  | /* since "static" is used to mean two completely different things in C, we  | 
36  |  |    define "local" for the non-static meaning of "static", for readability  | 
37  |  |    (compile with -Dlocal if your debugger can't find static symbols) */  | 
38  |  |  | 
39  |  | typedef unsigned char  uch;  | 
40  |  | typedef uch FAR uchf;  | 
41  |  | typedef unsigned short ush;  | 
42  |  | typedef ush FAR ushf;  | 
43  |  | typedef unsigned long  ulg;  | 
44  |  |  | 
45  |  | #if !defined(Z_U8) && !defined(Z_SOLO) && defined(STDC)  | 
46  |  | #  include <limits.h>  | 
47  |  | #  if (ULONG_MAX == 0xffffffffffffffff)  | 
48  |  | #    define Z_U8 unsigned long  | 
49  |  | #  elif (ULLONG_MAX == 0xffffffffffffffff)  | 
50  |  | #    define Z_U8 unsigned long long  | 
51  |  | #  elif (UINT_MAX == 0xffffffffffffffff)  | 
52  |  | #    define Z_U8 unsigned  | 
53  |  | #  endif  | 
54  |  | #endif  | 
55  |  |  | 
56  |  | extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */  | 
57  |  | /* (size given to avoid silly warnings with Visual C++) */  | 
58  |  |  | 
59  | 0  | #define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]  | 
60  |  |  | 
61  |  | #define ERR_RETURN(strm,err) \  | 
62  |  |   return (strm->msg = ERR_MSG(err), (err))  | 
63  |  | /* To be used only when the state is known to be valid */  | 
64  |  |  | 
65  |  |         /* common constants */  | 
66  |  |  | 
67  |  | #ifndef DEF_WBITS  | 
68  | 10  | #  define DEF_WBITS MAX_WBITS  | 
69  |  | #endif  | 
70  |  | /* default windowBits for decompression. MAX_WBITS is for compression only */  | 
71  |  |  | 
72  |  | #if MAX_MEM_LEVEL >= 8  | 
73  |  | #  define DEF_MEM_LEVEL 8  | 
74  |  | #else  | 
75  |  | #  define DEF_MEM_LEVEL  MAX_MEM_LEVEL  | 
76  |  | #endif  | 
77  |  | /* default memLevel */  | 
78  |  |  | 
79  |  | #define STORED_BLOCK 0  | 
80  |  | #define STATIC_TREES 1  | 
81  |  | #define DYN_TREES    2  | 
82  |  | /* The three kinds of block type */  | 
83  |  |  | 
84  |  | #define MIN_MATCH  3  | 
85  |  | #define MAX_MATCH  258  | 
86  |  | /* The minimum and maximum match lengths */  | 
87  |  |  | 
88  |  | #define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */  | 
89  |  |  | 
90  |  |         /* target dependencies */  | 
91  |  |  | 
92  |  | #if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))  | 
93  |  | #  define OS_CODE  0x00  | 
94  |  | #  ifndef Z_SOLO  | 
95  |  | #    if defined(__TURBOC__) || defined(__BORLANDC__)  | 
96  |  | #      if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))  | 
97  |  |          /* Allow compilation with ANSI keywords only enabled */  | 
98  |  |          void _Cdecl farfree( void *block );  | 
99  |  |          void *_Cdecl farmalloc( unsigned long nbytes );  | 
100  |  | #      else  | 
101  |  | #        include <alloc.h>  | 
102  |  | #      endif  | 
103  |  | #    else /* MSC or DJGPP */  | 
104  |  | #      include <malloc.h>  | 
105  |  | #    endif  | 
106  |  | #  endif  | 
107  |  | #endif  | 
108  |  |  | 
109  |  | #ifdef AMIGA  | 
110  |  | #  define OS_CODE  1  | 
111  |  | #endif  | 
112  |  |  | 
113  |  | #if defined(VAXC) || defined(VMS)  | 
114  |  | #  define OS_CODE  2  | 
115  |  | #  define F_OPEN(name, mode) \  | 
116  |  |      fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")  | 
117  |  | #endif  | 
118  |  |  | 
119  |  | #ifdef __370__  | 
120  |  | #  if __TARGET_LIB__ < 0x20000000  | 
121  |  | #    define OS_CODE 4  | 
122  |  | #  elif __TARGET_LIB__ < 0x40000000  | 
123  |  | #    define OS_CODE 11  | 
124  |  | #  else  | 
125  |  | #    define OS_CODE 8  | 
126  |  | #  endif  | 
127  |  | #endif  | 
128  |  |  | 
129  |  | #if defined(ATARI) || defined(atarist)  | 
130  |  | #  define OS_CODE  5  | 
131  |  | #endif  | 
132  |  |  | 
133  |  | #ifdef OS2  | 
134  |  | #  define OS_CODE  6  | 
135  |  | #  if defined(M_I86) && !defined(Z_SOLO)  | 
136  |  | #    include <malloc.h>  | 
137  |  | #  endif  | 
138  |  | #endif  | 
139  |  |  | 
140  |  | #if defined(MACOS) || defined(TARGET_OS_MAC)  | 
141  |  | #  define OS_CODE  7  | 
142  |  | #  ifndef Z_SOLO  | 
143  |  | #    if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os  | 
144  |  | #      include <unix.h> /* for fdopen */  | 
145  |  | #    else  | 
146  |  | #      ifndef fdopen  | 
147  |  | #        define fdopen(fd,mode) NULL /* No fdopen() */  | 
148  |  | #      endif  | 
149  |  | #    endif  | 
150  |  | #  endif  | 
151  |  | #endif  | 
152  |  |  | 
153  |  | #ifdef __acorn  | 
154  |  | #  define OS_CODE 13  | 
155  |  | #endif  | 
156  |  |  | 
157  |  | #if defined(WIN32) && !defined(__CYGWIN__)  | 
158  |  | #  define OS_CODE  10  | 
159  |  | #endif  | 
160  |  |  | 
161  |  | #ifdef _BEOS_  | 
162  |  | #  define OS_CODE  16  | 
163  |  | #endif  | 
164  |  |  | 
165  |  | #ifdef __TOS_OS400__  | 
166  |  | #  define OS_CODE 18  | 
167  |  | #endif  | 
168  |  |  | 
169  |  | #ifdef __APPLE__  | 
170  |  | #  define OS_CODE 19  | 
171  |  | #endif  | 
172  |  |  | 
173  |  | #if defined(_BEOS_) || defined(RISCOS)  | 
174  |  | #  define fdopen(fd,mode) NULL /* No fdopen() */  | 
175  |  | #endif  | 
176  |  |  | 
177  |  | #if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX  | 
178  |  | #  if defined(_WIN32_WCE)  | 
179  |  | #    define fdopen(fd,mode) NULL /* No fdopen() */  | 
180  |  | #  else  | 
181  |  | #    define fdopen(fd,type)  _fdopen(fd,type)  | 
182  |  | #  endif  | 
183  |  | #endif  | 
184  |  |  | 
185  |  | #if defined(__BORLANDC__) && !defined(MSDOS)  | 
186  |  |   #pragma warn -8004  | 
187  |  |   #pragma warn -8008  | 
188  |  |   #pragma warn -8066  | 
189  |  | #endif  | 
190  |  |  | 
191  |  | /* provide prototypes for these when building zlib without LFS */  | 
192  |  | #if !defined(_WIN32) && \  | 
193  |  |     (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)  | 
194  |  |     ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));  | 
195  |  |     ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));  | 
196  |  |     ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off_t));  | 
197  |  | #endif  | 
198  |  |  | 
199  |  |         /* common defaults */  | 
200  |  |  | 
201  |  | #ifndef OS_CODE  | 
202  |  | #  define OS_CODE  3     /* assume Unix */  | 
203  |  | #endif  | 
204  |  |  | 
205  |  | #ifndef F_OPEN  | 
206  |  | #  define F_OPEN(name, mode) fopen((name), (mode))  | 
207  |  | #endif  | 
208  |  |  | 
209  |  |          /* functions */  | 
210  |  |  | 
211  |  | #if defined(pyr) || defined(Z_SOLO)  | 
212  |  | #  define NO_MEMCPY  | 
213  |  | #endif  | 
214  |  | #if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)  | 
215  |  |  /* Use our own functions for small and medium model with MSC <= 5.0.  | 
216  |  |   * You may have to use the same strategy for Borland C (untested).  | 
217  |  |   * The __SC__ check is for Symantec.  | 
218  |  |   */  | 
219  |  | #  define NO_MEMCPY  | 
220  |  | #endif  | 
221  |  | #if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)  | 
222  |  | #  define HAVE_MEMCPY  | 
223  |  | #endif  | 
224  |  | #ifdef HAVE_MEMCPY  | 
225  |  | #  ifdef SMALL_MEDIUM /* MSDOS small or medium model */  | 
226  |  | #    define zmemcpy _fmemcpy  | 
227  |  | #    define zmemcmp _fmemcmp  | 
228  |  | #    define zmemzero(dest, len) _fmemset(dest, 0, len)  | 
229  |  | #  else  | 
230  | 0  | #    define zmemcpy memcpy  | 
231  |  | #    define zmemcmp memcmp  | 
232  |  | #    define zmemzero(dest, len) memset(dest, 0, len)  | 
233  |  | #  endif  | 
234  |  | #else  | 
235  |  |    void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));  | 
236  |  |    int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));  | 
237  |  |    void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len));  | 
238  |  | #endif  | 
239  |  |  | 
240  |  | /* Diagnostic functions */  | 
241  |  | #ifdef ZLIB_DEBUG  | 
242  |  | #  include <stdio.h>  | 
243  |  |    extern int ZLIB_INTERNAL z_verbose;  | 
244  |  |    extern void ZLIB_INTERNAL z_error OF((char *m));  | 
245  |  | #  define Assert(cond,msg) {if(!(cond)) z_error(msg);} | 
246  |  | #  define Trace(x) {if (z_verbose>=0) fprintf x ;} | 
247  |  | #  define Tracev(x) {if (z_verbose>0) fprintf x ;} | 
248  |  | #  define Tracevv(x) {if (z_verbose>1) fprintf x ;} | 
249  |  | #  define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} | 
250  |  | #  define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} | 
251  |  | #else  | 
252  |  | #  define Assert(cond,msg)  | 
253  |  | #  define Trace(x)  | 
254  |  | #  define Tracev(x)  | 
255  |  | #  define Tracevv(x)  | 
256  |  | #  define Tracec(c,x)  | 
257  |  | #  define Tracecv(c,x)  | 
258  |  | #endif  | 
259  |  |  | 
260  |  | #ifndef Z_SOLO  | 
261  |  |    voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items,  | 
262  |  |                                     unsigned size));  | 
263  |  |    void ZLIB_INTERNAL zcfree  OF((voidpf opaque, voidpf ptr));  | 
264  |  | #endif  | 
265  |  |  | 
266  |  | #define ZALLOC(strm, items, size) \  | 
267  | 57  |            (*((strm)->zalloc))((strm)->opaque, (items), (size))  | 
268  | 57  | #define ZFREE(strm, addr)  (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))  | 
269  |  | #define TRY_FREE(s, p) {if (p) ZFREE(s, p);} | 
270  |  |  | 
271  |  | /* Reverse the bytes in a 32-bit value */  | 
272  | 0  | #define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \  | 
273  | 0  |                     (((q) & 0xff00) << 8) + (((q) & 0xff) << 24))  | 
274  |  |  | 
275  |  | #endif /* ZUTIL_H */  |