1204552Salfred/* zutil.h -- internal interface and configuration of the compression library
2204552Salfred * Copyright (C) 1995-1996 Jean-loup Gailly.
3204552Salfred * For conditions of distribution and use, see copyright notice in zlib.h
4204552Salfred */
5204552Salfred
6204552Salfred/* WARNING: this file should *not* be used by applications. It is
7204552Salfred   part of the implementation of the compression library and is
8204552Salfred   subject to change. Applications should only use zlib.h.
9204552Salfred */
10204552Salfred
11204552Salfred/* From: zutil.h,v 1.16 1996/07/24 13:41:13 me Exp $ */
12204552Salfred/* $FreeBSD$ */
13204552Salfred
14204552Salfred#ifndef _Z_UTIL_H
15204552Salfred#define _Z_UTIL_H
16204552Salfred
17204552Salfred#define ZEXPORT
18204552Salfred
19204552Salfred#ifdef _KERNEL
20204552Salfred#include <net/zlib.h>
21204552Salfred#else
22204552Salfred#include "zlib.h"
23204552Salfred#endif
24204552Salfred
25204552Salfred#ifdef _KERNEL
26204552Salfred/* Assume this is a *BSD or SVR4 kernel */
27204552Salfred#include <sys/types.h>
28204552Salfred#include <sys/time.h>
29204552Salfred#include <sys/systm.h>
30204552Salfred#include <sys/module.h>
31204552Salfred#include <sys/errno.h>
32204552Salfred#include <sys/param.h>
33204552Salfred#include <sys/kernel.h>
34204552Salfred#  define HAVE_MEMCPY
35204552Salfred#  define memcpy(d, s, n)	bcopy((s), (d), (n))
36204552Salfred#  define memset(d, v, n)	bzero((d), (n))
37204552Salfred#  define memcmp		bcmp
38204552Salfred
39204552Salfred#else
40204552Salfred#if defined(__KERNEL__)
41204552Salfred/* Assume this is a Linux kernel */
42204552Salfred#include <linux/string.h>
43204552Salfred#define HAVE_MEMCPY
44204552Salfred
45204552Salfred#else /* not kernel */
46204552Salfred
47204552Salfred#if defined(MSDOS)||defined(VMS)||defined(CRAY)||defined(WIN32)||defined(RISCOS)
48204552Salfred#   include <stddef.h>
49204552Salfred#   include <errno.h>
50204552Salfred#else
51204552Salfred    extern int errno;
52204552Salfred#endif
53204552Salfred#ifdef STDC
54204552Salfred#  include <string.h>
55204552Salfred#  include <stdlib.h>
56204552Salfred#endif
57204552Salfred#endif /* __KERNEL__ */
58204552Salfred#endif /* _KERNEL */
59204552Salfred
60204552Salfred#ifndef local
61204552Salfred#  define local static
62204552Salfred#endif
63204552Salfred/* compile with -Dlocal if your debugger can't find static symbols */
64204552Salfred
65204552Salfredtypedef unsigned char  uch;
66204552Salfredtypedef uch FAR uchf;
67204552Salfredtypedef unsigned short ush;
68204552Salfredtypedef ush FAR ushf;
69204552Salfredtypedef unsigned long  ulg;
70204552Salfred
71204552Salfred#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
72204552Salfred
73204552Salfred#define ERR_RETURN(strm,err) \
74204552Salfred  return (strm->msg = (const char*)ERR_MSG(err), (err))
75204552Salfred/* To be used only when the state is known to be valid */
76204552Salfred
77204552Salfred        /* common constants */
78204552Salfred
79204552Salfred#ifndef DEF_WBITS
80204552Salfred#  define DEF_WBITS MAX_WBITS
81204552Salfred#endif
82204552Salfred/* default windowBits for decompression. MAX_WBITS is for compression only */
83204552Salfred
84204552Salfred#if MAX_MEM_LEVEL >= 8
85204552Salfred#  define DEF_MEM_LEVEL 8
86204552Salfred#else
87204552Salfred#  define DEF_MEM_LEVEL  MAX_MEM_LEVEL
88204552Salfred#endif
89204552Salfred/* default memLevel */
90204552Salfred
91204552Salfred#define STORED_BLOCK 0
92204552Salfred#define STATIC_TREES 1
93204552Salfred#define DYN_TREES    2
94204552Salfred/* The three kinds of block type */
95204552Salfred
96204552Salfred#define MIN_MATCH  3
97204552Salfred#define MAX_MATCH  258
98204552Salfred/* The minimum and maximum match lengths */
99204552Salfred
100204552Salfred#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
101204552Salfred
102204552Salfred        /* target dependencies */
103204552Salfred
104204552Salfred#ifdef MSDOS
105204552Salfred#  define OS_CODE  0x00
106204552Salfred#  ifdef __TURBOC__
107204552Salfred#    include <alloc.h>
108204552Salfred#  else /* MSC or DJGPP */
109204552Salfred#    include <malloc.h>
110204552Salfred#  endif
111204552Salfred#endif
112204552Salfred
113204552Salfred#ifdef OS2
114204552Salfred#  define OS_CODE  0x06
115204552Salfred#endif
116204552Salfred
117204552Salfred#ifdef WIN32 /* Window 95 & Windows NT */
118204552Salfred#  define OS_CODE  0x0b
119204552Salfred#endif
120204552Salfred
121204552Salfred#if defined(VAXC) || defined(VMS)
122204552Salfred#  define OS_CODE  0x02
123204552Salfred#  define FOPEN(name, mode) \
124204552Salfred     fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
125204552Salfred#endif
126204552Salfred
127204552Salfred#ifdef AMIGA
128204552Salfred#  define OS_CODE  0x01
129204552Salfred#endif
130204552Salfred
131204552Salfred#if defined(ATARI) || defined(atarist)
132204552Salfred#  define OS_CODE  0x05
133204552Salfred#endif
134204552Salfred
135204552Salfred#ifdef MACOS
136204552Salfred#  define OS_CODE  0x07
137204552Salfred#endif
138204552Salfred
139204552Salfred#ifdef __50SERIES /* Prime/PRIMOS */
140204552Salfred#  define OS_CODE  0x0F
141204552Salfred#endif
142204552Salfred
143204552Salfred#ifdef TOPS20
144204552Salfred#  define OS_CODE  0x0a
145204552Salfred#endif
146204552Salfred
147204552Salfred#if defined(_BEOS_) || defined(RISCOS)
148204552Salfred#  define fdopen(fd,mode) NULL /* No fdopen() */
149204552Salfred#endif
150204552Salfred
151204552Salfred        /* Common defaults */
152204552Salfred
153204552Salfred#ifndef OS_CODE
154204552Salfred#  define OS_CODE  0x03  /* assume Unix */
155204552Salfred#endif
156204552Salfred
157204552Salfred#ifndef FOPEN
158204552Salfred#  define FOPEN(name, mode) fopen((name), (mode))
159204552Salfred#endif
160204552Salfred
161204552Salfred         /* functions */
162204552Salfred
163204552Salfred#ifdef HAVE_STRERROR
164204552Salfred   extern char *strerror OF((int));
165204552Salfred#  define zstrerror(errnum) strerror(errnum)
166204552Salfred#else
167204552Salfred#  define zstrerror(errnum) ""
168204552Salfred#endif
169204552Salfred
170204552Salfred#if defined(pyr)
171204552Salfred#  define NO_MEMCPY
172204552Salfred#endif
173204552Salfred#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(_MSC_VER)
174204552Salfred /* Use our own functions for small and medium model with MSC <= 5.0.
175204552Salfred  * You may have to use the same strategy for Borland C (untested).
176204552Salfred  */
177204552Salfred#  define NO_MEMCPY
178204552Salfred#endif
179204552Salfred#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
180204552Salfred#  define HAVE_MEMCPY
181204552Salfred#endif
182204552Salfred#ifdef HAVE_MEMCPY
183204552Salfred#  ifdef SMALL_MEDIUM /* MSDOS small or medium model */
184204552Salfred#    define zmemcpy _fmemcpy
185204552Salfred#    define zmemcmp _fmemcmp
186204552Salfred#    define zmemzero(dest, len) _fmemset(dest, 0, len)
187204552Salfred#  else
188204552Salfred#    define zmemcpy memcpy
189204552Salfred#    define zmemcmp memcmp
190204552Salfred#    define zmemzero(dest, len) memset(dest, 0, len)
191204552Salfred#  endif
192204552Salfred#else
193204552Salfred   extern void zmemcpy  OF((Bytef* dest, Bytef* source, uInt len));
194204552Salfred   extern int  zmemcmp  OF((Bytef* s1,   Bytef* s2, uInt len));
195204552Salfred   extern void zmemzero OF((Bytef* dest, uInt len));
196204552Salfred#endif
197204552Salfred
198204552Salfred/* Diagnostic functions */
199204552Salfred#ifdef DEBUG_ZLIB
200204552Salfred#  include <stdio.h>
201204552Salfred#  ifndef verbose
202204552Salfred#    define verbose 0
203204552Salfred#  endif
204204552Salfred   extern void z_error    OF((char *m));
205204552Salfred#  define Assert(cond,msg) {if(!(cond)) z_error(msg);}
206204552Salfred#  define Trace(x) fprintf x
207204552Salfred#  define Tracev(x) {if (verbose) fprintf x ;}
208204552Salfred#  define Tracevv(x) {if (verbose>1) fprintf x ;}
209204552Salfred#  define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
210204552Salfred#  define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
211204552Salfred#else
212204552Salfred#  define Assert(cond,msg)
213204552Salfred#  define Trace(x)
214204552Salfred#  define Tracev(x)
215204552Salfred#  define Tracevv(x)
216204552Salfred#  define Tracec(c,x)
217204552Salfred#  define Tracecv(c,x)
218204552Salfred#endif
219204552Salfred
220204552Salfred
221204552Salfredtypedef uLong (*check_func) OF((uLong check, const Bytef *buf, uInt len));
222204552Salfred
223204552Salfredvoidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
224204552Salfredvoid   zcfree  OF((voidpf opaque, voidpf ptr));
225204552Salfred
226204552Salfred#define ZALLOC(strm, items, size) \
227204552Salfred           (*((strm)->zalloc))((strm)->opaque, (items), (size))
228204552Salfred#define ZFREE(strm, addr)  (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
229204552Salfred#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
230204552Salfred
231204552Salfred#endif /* _Z_UTIL_H */
232