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