1/* zutil.h -- internal interface and configuration of the compression library 2 3 Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR> 4 This program and the accompanying materials are licensed and made available under 5 the terms and conditions of the BSD License that accompanies this distribution. 6 The full text of the license may be found at 7 http://opensource.org/licenses/bsd-license. 8 9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 12 * Copyright (C) 1995-2005 Jean-loup Gailly. 13 * For conditions of distribution and use, see copyright notice in zlib.h 14**/ 15 16/* WARNING: this file should *not* be used by applications. It is 17 part of the implementation of the compression library and is 18 subject to change. Applications should only use zlib.h. 19 */ 20 21#ifndef ZUTIL_H 22#define ZUTIL_H 23 24#define ZLIB_INTERNAL 25#include "zlib.h" 26 27#if defined(UEFI_C_SOURCE) || defined(STDC) 28# ifndef _WIN32_WCE 29# include <stddef.h> 30# endif 31# include <string.h> 32# include <stdlib.h> 33#endif 34#ifdef NO_ERRNO_H 35# ifdef _WIN32_WCE 36 /* The Microsoft C Run-Time Library for Windows CE doesn't have 37 * errno. We define it as a global variable to simplify porting. 38 * Its value is always 0 and should not be used. We rename it to 39 * avoid conflict with other libraries that use the same workaround. 40 */ 41# define errno z_errno 42# endif 43 extern int errno; 44#else 45# ifndef _WIN32_WCE 46# include <errno.h> 47# endif 48#endif 49 50#ifndef local 51# define local static 52#endif 53/* compile with -Dlocal if your debugger can't find static symbols */ 54 55typedef unsigned char uch; 56typedef uch FAR uchf; 57typedef unsigned short ush; 58typedef ush FAR ushf; 59typedef unsigned long ulg; 60 61extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ 62/* (size given to avoid silly warnings with Visual C++) */ 63 64#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] 65 66#define ERR_RETURN(strm,err) \ 67 return (strm->msg = (char*)ERR_MSG(err), (err)) 68/* To be used only when the state is known to be valid */ 69 70 /* common constants */ 71 72#ifndef DEF_WBITS 73# define DEF_WBITS MAX_WBITS 74#endif 75/* default windowBits for decompression. MAX_WBITS is for compression only */ 76 77#if MAX_MEM_LEVEL >= 8 78# define DEF_MEM_LEVEL 8 79#else 80# define DEF_MEM_LEVEL MAX_MEM_LEVEL 81#endif 82/* default memLevel */ 83 84#define STORED_BLOCK 0 85#define STATIC_TREES 1 86#define DYN_TREES 2 87/* The three kinds of block type */ 88 89#define MIN_MATCH 3 90#define MAX_MATCH 258 91/* The minimum and maximum match lengths */ 92 93#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ 94 95 /* target dependencies */ 96 97#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) 98# define OS_CODE 0x00 99# if defined(__TURBOC__) || defined(__BORLANDC__) 100# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) 101 /* Allow compilation with ANSI keywords only enabled */ 102 void _Cdecl farfree( void *block ); 103 void *_Cdecl farmalloc( unsigned long nbytes ); 104# else 105# include <alloc.h> 106# endif 107# else /* MSC or DJGPP */ 108# include <malloc.h> 109# endif 110#endif 111 112#ifdef AMIGA 113# define OS_CODE 0x01 114#endif 115 116#if defined(VAXC) || defined(VMS) 117# define OS_CODE 0x02 118# define F_OPEN(name, mode) \ 119 fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") 120#endif 121 122#if defined(ATARI) || defined(atarist) 123# define OS_CODE 0x05 124#endif 125 126#ifdef OS2 127# define OS_CODE 0x06 128# ifdef M_I86 129 #include <malloc.h> 130# endif 131#endif 132 133#if defined(MACOS) || defined(TARGET_OS_MAC) 134# define OS_CODE 0x07 135# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os 136# include <unix.h> /* for fdopen */ 137# else 138# ifndef fdopen 139# define fdopen(fd,mode) NULL /* No fdopen() */ 140# endif 141# endif 142#endif 143 144#ifdef TOPS20 145# define OS_CODE 0x0a 146#endif 147 148#ifdef WIN32 149# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ 150# define OS_CODE 0x0b 151# endif 152#endif 153 154#ifdef __50SERIES /* Prime/PRIMOS */ 155# define OS_CODE 0x0f 156#endif 157 158#if defined(_BEOS_) || defined(RISCOS) 159# define fdopen(fd,mode) NULL /* No fdopen() */ 160#endif 161 162#if !defined(UEFI_C_SOURCE) && (defined(_MSC_VER) && (_MSC_VER > 600)) 163# if defined(_WIN32_WCE) 164# define fdopen(fd,mode) NULL /* No fdopen() */ 165# ifndef _PTRDIFF_T_DEFINED 166 typedef int ptrdiff_t; 167# define _PTRDIFF_T_DEFINED 168# endif 169# else 170# define fdopen(fd,type) _fdopen(fd,type) 171# endif 172#endif 173 174 /* common defaults */ 175 176#ifndef OS_CODE 177# define OS_CODE 0x03 /* assume Unix */ 178#endif 179 180#ifndef F_OPEN 181# define F_OPEN(name, mode) fopen((name), (mode)) 182#endif 183 184 /* functions */ 185 186#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550) 187# ifndef HAVE_VSNPRINTF 188# define HAVE_VSNPRINTF 189# endif 190#endif 191#if defined(__CYGWIN__) 192# ifndef HAVE_VSNPRINTF 193# define HAVE_VSNPRINTF 194# endif 195#endif 196#ifndef HAVE_VSNPRINTF 197# ifdef MSDOS 198 /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), 199 but for now we just assume it doesn't. */ 200# define NO_vsnprintf 201# endif 202# ifdef __TURBOC__ 203# define NO_vsnprintf 204# endif 205# ifdef WIN32 206 /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ 207# if !defined(vsnprintf) && !defined(NO_vsnprintf) 208# define vsnprintf _vsnprintf 209# endif 210# endif 211# ifdef __SASC 212# define NO_vsnprintf 213# endif 214#endif 215#ifdef VMS 216# define NO_vsnprintf 217#endif 218 219#if defined(pyr) 220# define NO_MEMCPY 221#endif 222#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) 223 /* Use our own functions for small and medium model with MSC <= 5.0. 224 * You may have to use the same strategy for Borland C (untested). 225 * The __SC__ check is for Symantec. 226 */ 227# define NO_MEMCPY 228#endif 229#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) 230# define HAVE_MEMCPY 231#endif 232#ifdef HAVE_MEMCPY 233# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ 234# define zmemcpy _fmemcpy 235# define zmemcmp _fmemcmp 236# define zmemzero(dest, len) _fmemset(dest, 0, len) 237# else 238# define zmemcpy memcpy 239# define zmemcmp memcmp 240# define zmemzero(dest, len) memset(dest, 0, len) 241# endif 242#else 243 extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); 244 extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); 245 extern void zmemzero OF((Bytef* dest, uInt len)); 246#endif 247 248/* Diagnostic functions */ 249#ifdef DEBUG 250# include <stdio.h> 251 extern int z_verbose; 252 extern void z_error OF((char *m)); 253# define Assert(cond,msg) {if(!(cond)) z_error(msg);} 254# define Trace(x) {if (z_verbose>=0) fprintf x ;} 255# define Tracev(x) {if (z_verbose>0) fprintf x ;} 256# define Tracevv(x) {if (z_verbose>1) fprintf x ;} 257# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} 258# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} 259#else 260# define Assert(cond,msg) 261# define Trace(x) 262# define Tracev(x) 263# define Tracevv(x) 264# define Tracec(c,x) 265# define Tracecv(c,x) 266#endif 267 268 269voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size)); 270void zcfree OF((voidpf opaque, voidpf ptr)); 271 272#define ZALLOC(strm, items, size) \ 273 (*((strm)->zalloc))((strm)->opaque, (items), (size)) 274#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) 275#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} 276 277#endif /* ZUTIL_H */ 278