xref: /inferno-os/libfreetype/zutil.h (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1*37da2899SCharles.Forsyth /* zutil.h -- internal interface and configuration of the compression library
2*37da2899SCharles.Forsyth  * Copyright (C) 1995-2002 Jean-loup Gailly.
3*37da2899SCharles.Forsyth  * For conditions of distribution and use, see copyright notice in zlib.h
4*37da2899SCharles.Forsyth  */
5*37da2899SCharles.Forsyth 
6*37da2899SCharles.Forsyth /* WARNING: this file should *not* be used by applications. It is
7*37da2899SCharles.Forsyth    part of the implementation of the compression library and is
8*37da2899SCharles.Forsyth    subject to change. Applications should only use zlib.h.
9*37da2899SCharles.Forsyth  */
10*37da2899SCharles.Forsyth 
11*37da2899SCharles.Forsyth /* @(#) $Id: zutil.h,v 1.2 2002/11/06 22:32:54 davidT Exp $ */
12*37da2899SCharles.Forsyth 
13*37da2899SCharles.Forsyth #ifndef _Z_UTIL_H
14*37da2899SCharles.Forsyth #define _Z_UTIL_H
15*37da2899SCharles.Forsyth 
16*37da2899SCharles.Forsyth #include "zlib.h"
17*37da2899SCharles.Forsyth 
18*37da2899SCharles.Forsyth #ifdef STDC
19*37da2899SCharles.Forsyth #  include <stddef.h>
20*37da2899SCharles.Forsyth #  include <string.h>
21*37da2899SCharles.Forsyth #  include <stdlib.h>
22*37da2899SCharles.Forsyth #endif
23*37da2899SCharles.Forsyth #ifdef NO_ERRNO_H
24*37da2899SCharles.Forsyth     extern int errno;
25*37da2899SCharles.Forsyth #else
26*37da2899SCharles.Forsyth #   include <errno.h>
27*37da2899SCharles.Forsyth #endif
28*37da2899SCharles.Forsyth 
29*37da2899SCharles.Forsyth #ifndef local
30*37da2899SCharles.Forsyth #  define local static
31*37da2899SCharles.Forsyth #endif
32*37da2899SCharles.Forsyth /* compile with -Dlocal if your debugger can't find static symbols */
33*37da2899SCharles.Forsyth 
34*37da2899SCharles.Forsyth typedef unsigned char  uch;
35*37da2899SCharles.Forsyth typedef uch FAR uchf;
36*37da2899SCharles.Forsyth typedef unsigned short ush;
37*37da2899SCharles.Forsyth typedef ush FAR ushf;
38*37da2899SCharles.Forsyth typedef unsigned long  ulg;
39*37da2899SCharles.Forsyth 
40*37da2899SCharles.Forsyth 
41*37da2899SCharles.Forsyth #define ERR_RETURN(strm,err) \
42*37da2899SCharles.Forsyth   return (strm->msg = (char*)ERR_MSG(err), (err))
43*37da2899SCharles.Forsyth /* To be used only when the state is known to be valid */
44*37da2899SCharles.Forsyth 
45*37da2899SCharles.Forsyth         /* common constants */
46*37da2899SCharles.Forsyth 
47*37da2899SCharles.Forsyth #ifndef DEF_WBITS
48*37da2899SCharles.Forsyth #  define DEF_WBITS MAX_WBITS
49*37da2899SCharles.Forsyth #endif
50*37da2899SCharles.Forsyth /* default windowBits for decompression. MAX_WBITS is for compression only */
51*37da2899SCharles.Forsyth 
52*37da2899SCharles.Forsyth #if MAX_MEM_LEVEL >= 8
53*37da2899SCharles.Forsyth #  define DEF_MEM_LEVEL 8
54*37da2899SCharles.Forsyth #else
55*37da2899SCharles.Forsyth #  define DEF_MEM_LEVEL  MAX_MEM_LEVEL
56*37da2899SCharles.Forsyth #endif
57*37da2899SCharles.Forsyth /* default memLevel */
58*37da2899SCharles.Forsyth 
59*37da2899SCharles.Forsyth #define STORED_BLOCK 0
60*37da2899SCharles.Forsyth #define STATIC_TREES 1
61*37da2899SCharles.Forsyth #define DYN_TREES    2
62*37da2899SCharles.Forsyth /* The three kinds of block type */
63*37da2899SCharles.Forsyth 
64*37da2899SCharles.Forsyth #define MIN_MATCH  3
65*37da2899SCharles.Forsyth #define MAX_MATCH  258
66*37da2899SCharles.Forsyth /* The minimum and maximum match lengths */
67*37da2899SCharles.Forsyth 
68*37da2899SCharles.Forsyth #define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
69*37da2899SCharles.Forsyth 
70*37da2899SCharles.Forsyth         /* target dependencies */
71*37da2899SCharles.Forsyth 
72*37da2899SCharles.Forsyth #ifdef MSDOS
73*37da2899SCharles.Forsyth #  define OS_CODE  0x00
74*37da2899SCharles.Forsyth #  if defined(__TURBOC__) || defined(__BORLANDC__)
75*37da2899SCharles.Forsyth #    if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
76*37da2899SCharles.Forsyth        /* Allow compilation with ANSI keywords only enabled */
77*37da2899SCharles.Forsyth        void _Cdecl farfree( void *block );
78*37da2899SCharles.Forsyth        void *_Cdecl farmalloc( unsigned long nbytes );
79*37da2899SCharles.Forsyth #    else
80*37da2899SCharles.Forsyth #     include <alloc.h>
81*37da2899SCharles.Forsyth #    endif
82*37da2899SCharles.Forsyth #  else /* MSC or DJGPP */
83*37da2899SCharles.Forsyth #    include <malloc.h>
84*37da2899SCharles.Forsyth #  endif
85*37da2899SCharles.Forsyth #endif
86*37da2899SCharles.Forsyth 
87*37da2899SCharles.Forsyth #ifdef OS2
88*37da2899SCharles.Forsyth #  define OS_CODE  0x06
89*37da2899SCharles.Forsyth #endif
90*37da2899SCharles.Forsyth 
91*37da2899SCharles.Forsyth #ifdef WIN32 /* Window 95 & Windows NT */
92*37da2899SCharles.Forsyth #  define OS_CODE  0x0b
93*37da2899SCharles.Forsyth #endif
94*37da2899SCharles.Forsyth 
95*37da2899SCharles.Forsyth #if defined(VAXC) || defined(VMS)
96*37da2899SCharles.Forsyth #  define OS_CODE  0x02
97*37da2899SCharles.Forsyth #  define F_OPEN(name, mode) \
98*37da2899SCharles.Forsyth      fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
99*37da2899SCharles.Forsyth #endif
100*37da2899SCharles.Forsyth 
101*37da2899SCharles.Forsyth #ifdef AMIGA
102*37da2899SCharles.Forsyth #  define OS_CODE  0x01
103*37da2899SCharles.Forsyth #endif
104*37da2899SCharles.Forsyth 
105*37da2899SCharles.Forsyth #if defined(ATARI) || defined(atarist)
106*37da2899SCharles.Forsyth #  define OS_CODE  0x05
107*37da2899SCharles.Forsyth #endif
108*37da2899SCharles.Forsyth 
109*37da2899SCharles.Forsyth #if defined(MACOS) || defined(TARGET_OS_MAC)
110*37da2899SCharles.Forsyth #  define OS_CODE  0x07
111*37da2899SCharles.Forsyth #  if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
112*37da2899SCharles.Forsyth #    include <unix.h> /* for fdopen */
113*37da2899SCharles.Forsyth #  else
114*37da2899SCharles.Forsyth #    ifndef fdopen
115*37da2899SCharles.Forsyth #      define fdopen(fd,mode) NULL /* No fdopen() */
116*37da2899SCharles.Forsyth #    endif
117*37da2899SCharles.Forsyth #  endif
118*37da2899SCharles.Forsyth #endif
119*37da2899SCharles.Forsyth 
120*37da2899SCharles.Forsyth #ifdef __50SERIES /* Prime/PRIMOS */
121*37da2899SCharles.Forsyth #  define OS_CODE  0x0F
122*37da2899SCharles.Forsyth #endif
123*37da2899SCharles.Forsyth 
124*37da2899SCharles.Forsyth #ifdef TOPS20
125*37da2899SCharles.Forsyth #  define OS_CODE  0x0a
126*37da2899SCharles.Forsyth #endif
127*37da2899SCharles.Forsyth 
128*37da2899SCharles.Forsyth #if defined(_BEOS_) || defined(RISCOS)
129*37da2899SCharles.Forsyth #  define fdopen(fd,mode) NULL /* No fdopen() */
130*37da2899SCharles.Forsyth #endif
131*37da2899SCharles.Forsyth 
132*37da2899SCharles.Forsyth #if (defined(_MSC_VER) && (_MSC_VER > 600))
133*37da2899SCharles.Forsyth #  define fdopen(fd,type)  _fdopen(fd,type)
134*37da2899SCharles.Forsyth #endif
135*37da2899SCharles.Forsyth 
136*37da2899SCharles.Forsyth 
137*37da2899SCharles.Forsyth         /* Common defaults */
138*37da2899SCharles.Forsyth 
139*37da2899SCharles.Forsyth #ifndef OS_CODE
140*37da2899SCharles.Forsyth #  define OS_CODE  0x03  /* assume Unix */
141*37da2899SCharles.Forsyth #endif
142*37da2899SCharles.Forsyth 
143*37da2899SCharles.Forsyth #ifndef F_OPEN
144*37da2899SCharles.Forsyth #  define F_OPEN(name, mode) fopen((name), (mode))
145*37da2899SCharles.Forsyth #endif
146*37da2899SCharles.Forsyth 
147*37da2899SCharles.Forsyth          /* functions */
148*37da2899SCharles.Forsyth 
149*37da2899SCharles.Forsyth #ifdef HAVE_STRERROR
150*37da2899SCharles.Forsyth    extern char *strerror OF((int));
151*37da2899SCharles.Forsyth #  define zstrerror(errnum) strerror(errnum)
152*37da2899SCharles.Forsyth #else
153*37da2899SCharles.Forsyth #  define zstrerror(errnum) ""
154*37da2899SCharles.Forsyth #endif
155*37da2899SCharles.Forsyth 
156*37da2899SCharles.Forsyth #if defined(pyr)
157*37da2899SCharles.Forsyth #  define NO_MEMCPY
158*37da2899SCharles.Forsyth #endif
159*37da2899SCharles.Forsyth #if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
160*37da2899SCharles.Forsyth  /* Use our own functions for small and medium model with MSC <= 5.0.
161*37da2899SCharles.Forsyth   * You may have to use the same strategy for Borland C (untested).
162*37da2899SCharles.Forsyth   * The __SC__ check is for Symantec.
163*37da2899SCharles.Forsyth   */
164*37da2899SCharles.Forsyth #  define NO_MEMCPY
165*37da2899SCharles.Forsyth #endif
166*37da2899SCharles.Forsyth #if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
167*37da2899SCharles.Forsyth #  define HAVE_MEMCPY
168*37da2899SCharles.Forsyth #endif
169*37da2899SCharles.Forsyth #ifdef HAVE_MEMCPY
170*37da2899SCharles.Forsyth #  ifdef SMALL_MEDIUM /* MSDOS small or medium model */
171*37da2899SCharles.Forsyth #    define zmemcpy _fmemcpy
172*37da2899SCharles.Forsyth #    define zmemcmp _fmemcmp
173*37da2899SCharles.Forsyth #    define zmemzero(dest, len) _fmemset(dest, 0, len)
174*37da2899SCharles.Forsyth #  else
175*37da2899SCharles.Forsyth #    define zmemcpy ft_memcpy
176*37da2899SCharles.Forsyth #    define zmemcmp memcmp
177*37da2899SCharles.Forsyth #    define zmemzero(dest, len) memset(dest, 0, len)
178*37da2899SCharles.Forsyth #  endif
179*37da2899SCharles.Forsyth #else
180*37da2899SCharles.Forsyth    extern void zmemcpy  OF((Bytef* dest, const Bytef* source, uInt len));
181*37da2899SCharles.Forsyth    extern int  zmemcmp  OF((const Bytef* s1, const Bytef* s2, uInt len));
182*37da2899SCharles.Forsyth    extern void zmemzero OF((Bytef* dest, uInt len));
183*37da2899SCharles.Forsyth #endif
184*37da2899SCharles.Forsyth 
185*37da2899SCharles.Forsyth /* Diagnostic functions */
186*37da2899SCharles.Forsyth #ifdef DEBUG
187*37da2899SCharles.Forsyth #  include <stdio.h>
188*37da2899SCharles.Forsyth    extern int z_verbose;
189*37da2899SCharles.Forsyth    extern void z_error    OF((char *m));
190*37da2899SCharles.Forsyth #  define Assert(cond,msg) {if(!(cond)) z_error(msg);}
191*37da2899SCharles.Forsyth #  define Trace(x) {if (z_verbose>=0) fprintf x ;}
192*37da2899SCharles.Forsyth #  define Tracev(x) {if (z_verbose>0) fprintf x ;}
193*37da2899SCharles.Forsyth #  define Tracevv(x) {if (z_verbose>1) fprintf x ;}
194*37da2899SCharles.Forsyth #  define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
195*37da2899SCharles.Forsyth #  define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
196*37da2899SCharles.Forsyth #else
197*37da2899SCharles.Forsyth #  define Assert(cond,msg)
198*37da2899SCharles.Forsyth #  define Trace(x)
199*37da2899SCharles.Forsyth #  define Tracev(x)
200*37da2899SCharles.Forsyth #  define Tracevv(x)
201*37da2899SCharles.Forsyth #  define Tracec(c,x)
202*37da2899SCharles.Forsyth #  define Tracecv(c,x)
203*37da2899SCharles.Forsyth #endif
204*37da2899SCharles.Forsyth 
205*37da2899SCharles.Forsyth 
206*37da2899SCharles.Forsyth typedef uLong (ZEXPORT *check_func) OF((uLong check, const Bytef *buf,
207*37da2899SCharles.Forsyth 				       uInt len));
208*37da2899SCharles.Forsyth local voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
209*37da2899SCharles.Forsyth local void   zcfree  OF((voidpf opaque, voidpf ptr));
210*37da2899SCharles.Forsyth 
211*37da2899SCharles.Forsyth #define ZALLOC(strm, items, size) \
212*37da2899SCharles.Forsyth            (*((strm)->zalloc))((strm)->opaque, (items), (size))
213*37da2899SCharles.Forsyth #define ZFREE(strm, addr)  (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
214*37da2899SCharles.Forsyth #define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
215*37da2899SCharles.Forsyth 
216*37da2899SCharles.Forsyth #endif /* _Z_UTIL_H */
217