1/* zutil.h -- internal interface and configuration of the compression library 2 * Copyright (C) 1995-2005 Jean-loup Gailly. 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: zutil.h,v 1.1.1.1 2011/06/10 09:34:40 andrew Exp $ */ 12 13#ifndef ZUTIL_H 14#define ZUTIL_H 15 16#define ZLIB_INTERNAL 17#include "zlib.h" 18 19#ifdef STDC 20# ifndef _WIN32_WCE 21# include <stddef.h> 22# endif 23# include <string.h> 24# include <stdlib.h> 25#endif 26#ifdef NO_ERRNO_H 27# ifdef _WIN32_WCE 28 /* The Microsoft C Run-Time Library for Windows CE doesn't have 29 * errno. We define it as a global variable to simplify porting. 30 * Its value is always 0 and should not be used. We rename it to 31 * avoid conflict with other libraries that use the same workaround. 32 */ 33# define errno z_errno 34# endif 35 extern int errno; 36#else 37# ifndef _WIN32_WCE 38# include <errno.h> 39# endif 40#endif 41 42#ifndef local 43# define local static 44#endif 45/* compile with -Dlocal if your debugger can't find static symbols */ 46 47typedef unsigned char uch; 48typedef uch FAR uchf; 49typedef unsigned short ush; 50typedef ush FAR ushf; 51typedef unsigned long ulg; 52 53extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ 54/* (size given to avoid silly warnings with Visual C++) */ 55 56#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] 57 58#define ERR_RETURN(strm,err) \ 59 return (strm->msg = ERR_MSG(err), (err)) 60/* To be used only when the state is known to be valid */ 61 62 /* common constants */ 63 64#ifndef DEF_WBITS 65# define DEF_WBITS MAX_WBITS 66#endif 67/* default windowBits for decompression. MAX_WBITS is for compression only */ 68 69#if MAX_MEM_LEVEL >= 8 70# define DEF_MEM_LEVEL 8 71#else 72# define DEF_MEM_LEVEL MAX_MEM_LEVEL 73#endif 74/* default memLevel */ 75 76#define STORED_BLOCK 0 77#define STATIC_TREES 1 78#define DYN_TREES 2 79/* The three kinds of block type */ 80 81#define MIN_MATCH 3 82#define MAX_MATCH 258 83/* The minimum and maximum match lengths */ 84 85#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ 86 87 /* target dependencies */ 88 89#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) 90# define OS_CODE 0x00 91# if defined(__TURBOC__) || defined(__BORLANDC__) 92# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) 93 /* Allow compilation with ANSI keywords only enabled */ 94 void _Cdecl farfree( void *block ); 95 void *_Cdecl farmalloc( unsigned long nbytes ); 96# else 97# include <alloc.h> 98# endif 99# else /* MSC or DJGPP */ 100# include <malloc.h> 101# endif 102#endif 103 104#ifdef AMIGA 105# define OS_CODE 0x01 106#endif 107 108#if defined(VAXC) || defined(VMS) 109# define OS_CODE 0x02 110# define F_OPEN(name, mode) \ 111 fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") 112#endif 113 114#if defined(ATARI) || defined(atarist) 115# define OS_CODE 0x05 116#endif 117 118#ifdef OS2 119# define OS_CODE 0x06 120# ifdef M_I86 121 #include <malloc.h> 122# endif 123#endif 124 125#if defined(MACOS) || defined(TARGET_OS_MAC) 126# define OS_CODE 0x07 127# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os 128# include <unix.h> /* for fdopen */ 129# else 130# ifndef fdopen 131# define fdopen(fd,mode) NULL /* No fdopen() */ 132# endif 133# endif 134#endif 135 136#ifdef TOPS20 137# define OS_CODE 0x0a 138#endif 139 140#ifdef WIN32 141# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ 142# define OS_CODE 0x0b 143# endif 144#endif 145 146#ifdef __50SERIES /* Prime/PRIMOS */ 147# define OS_CODE 0x0f 148#endif 149 150#if defined(_BEOS_) || defined(RISCOS) 151# define fdopen(fd,mode) NULL /* No fdopen() */ 152#endif 153 154#if (defined(_MSC_VER) && (_MSC_VER > 600)) 155# if defined(_WIN32_WCE) 156# define fdopen(fd,mode) NULL /* No fdopen() */ 157# ifndef _PTRDIFF_T_DEFINED 158 typedef int ptrdiff_t; 159# define _PTRDIFF_T_DEFINED 160# endif 161# else 162# define fdopen(fd,type) _fdopen(fd,type) 163# endif 164#endif 165 166 /* common defaults */ 167 168#ifndef OS_CODE 169# define OS_CODE 0x03 /* assume Unix */ 170#endif 171 172#ifndef F_OPEN 173# define F_OPEN(name, mode) fopen((name), (mode)) 174#endif 175 176 /* functions */ 177 178#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550) 179# ifndef HAVE_VSNPRINTF 180# define HAVE_VSNPRINTF 181# endif 182#endif 183#if defined(__CYGWIN__) 184# ifndef HAVE_VSNPRINTF 185# define HAVE_VSNPRINTF 186# endif 187#endif 188#ifndef HAVE_VSNPRINTF 189# ifdef MSDOS 190 /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), 191 but for now we just assume it doesn't. */ 192# define NO_vsnprintf 193# endif 194# ifdef __TURBOC__ 195# define NO_vsnprintf 196# endif 197# ifdef WIN32 198 /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ 199# if !defined(vsnprintf) && !defined(NO_vsnprintf) 200# define vsnprintf _vsnprintf 201# endif 202# endif 203# ifdef __SASC 204# define NO_vsnprintf 205# endif 206#endif 207#ifdef VMS 208# define NO_vsnprintf 209#endif 210 211#if defined(pyr) 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# define zmemcpy memcpy 231# define zmemcmp memcmp 232# define zmemzero(dest, len) memset(dest, 0, len) 233# endif 234#else 235 extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); 236 extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); 237 extern void zmemzero OF((Bytef* dest, uInt len)); 238#endif 239 240/* Diagnostic functions */ 241#ifdef DEBUG 242# include <stdio.h> 243 extern int z_verbose; 244 extern void 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 261voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size)); 262void zcfree OF((voidpf opaque, voidpf ptr)); 263 264#define ZALLOC(strm, items, size) \ 265 (*((strm)->zalloc))((strm)->opaque, (items), (size)) 266#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) 267#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} 268 269#endif /* ZUTIL_H */ 270