15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* zutil.h -- internal interface and configuration of the compression library 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (C) 1995-2010 Jean-loup Gailly. 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * For conditions of distribution and use, see copyright notice in zlib.h 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* WARNING: this file should *not* be used by applications. It is 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) part of the implementation of the compression library and is 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) subject to change. Applications should only use zlib.h. 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* @(#) $Id$ */ 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ZUTIL_H 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ZUTIL_H 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if ((__GNUC__-0) * 10 + __GNUC_MINOR__-0 >= 33) && !defined(NO_VIZ) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define ZLIB_INTERNAL 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "zlib.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef STDC 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if !(defined(_WIN32_WCE) && defined(_MSC_VER)) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <stddef.h> 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <string.h> 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <stdlib.h> 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef NO_ERRNO_H 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef _WIN32_WCE 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* The Microsoft C Run-Time Library for Windows CE doesn't have 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * errno. We define it as a global variable to simplify porting. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Its value is always 0 and should not be used. We rename it to 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * avoid conflict with other libraries that use the same workaround. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define errno z_errno 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extern int errno; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef _WIN32_WCE 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <errno.h> 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef local 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define local static 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* compile with -Dlocal if your debugger can't find static symbols */ 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned char uch; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef uch FAR uchf; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned short ush; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef ush FAR ushf; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned long ulg; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* (size given to avoid silly warnings with Visual C++) */ 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ERR_RETURN(strm,err) \ 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (strm->msg = (char*)ERR_MSG(err), (err)) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* To be used only when the state is known to be valid */ 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* common constants */ 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DEF_WBITS 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define DEF_WBITS MAX_WBITS 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* default windowBits for decompression. MAX_WBITS is for compression only */ 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if MAX_MEM_LEVEL >= 8 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define DEF_MEM_LEVEL 8 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define DEF_MEM_LEVEL MAX_MEM_LEVEL 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* default memLevel */ 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STORED_BLOCK 0 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATIC_TREES 1 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define DYN_TREES 2 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* The three kinds of block type */ 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MIN_MATCH 3 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAX_MATCH 258 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* The minimum and maximum match lengths */ 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* target dependencies */ 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define OS_CODE 0x00 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if defined(__TURBOC__) || defined(__BORLANDC__) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Allow compilation with ANSI keywords only enabled */ 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void _Cdecl farfree( void *block ); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void *_Cdecl farmalloc( unsigned long nbytes ); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# else 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <alloc.h> 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# else /* MSC or DJGPP */ 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <malloc.h> 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef AMIGA 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define OS_CODE 0x01 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(VAXC) || defined(VMS) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define OS_CODE 0x02 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define F_OPEN(name, mode) \ 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ATARI) || defined(atarist) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define OS_CODE 0x05 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef OS2 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define OS_CODE 0x06 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef M_I86 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <malloc.h> 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(MACOS) || defined(TARGET_OS_MAC) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define OS_CODE 0x07 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <unix.h> /* for fdopen */ 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# else 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef fdopen 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define fdopen(fd,mode) NULL /* No fdopen() */ 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef TOPS20 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define OS_CODE 0x0a 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef WIN32 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define OS_CODE 0x0b 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __50SERIES /* Prime/PRIMOS */ 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define OS_CODE 0x0f 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(_BEOS_) || defined(RISCOS) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define fdopen(fd,mode) NULL /* No fdopen() */ 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if defined(_WIN32_WCE) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define fdopen(fd,mode) NULL /* No fdopen() */ 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef _PTRDIFF_T_DEFINED 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef int ptrdiff_t; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define _PTRDIFF_T_DEFINED 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# else 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define fdopen(fd,type) _fdopen(fd,type) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__BORLANDC__) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #pragma warn -8004 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #pragma warn -8008 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #pragma warn -8066 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* provide prototypes for these when building zlib without LFS */ 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* common defaults */ 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef OS_CODE 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define OS_CODE 0x03 /* assume Unix */ 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef F_OPEN 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define F_OPEN(name, mode) fopen((name), (mode)) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* functions */ 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef HAVE_VSNPRINTF 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define HAVE_VSNPRINTF 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__CYGWIN__) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef HAVE_VSNPRINTF 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define HAVE_VSNPRINTF 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef HAVE_VSNPRINTF 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef MSDOS 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) but for now we just assume it doesn't. */ 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define NO_vsnprintf 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef __TURBOC__ 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define NO_vsnprintf 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef WIN32 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if !defined(vsnprintf) && !defined(NO_vsnprintf) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define vsnprintf _vsnprintf 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef __SASC 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define NO_vsnprintf 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef VMS 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define NO_vsnprintf 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(pyr) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define NO_MEMCPY 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Use our own functions for small and medium model with MSC <= 5.0. 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * You may have to use the same strategy for Borland C (untested). 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The __SC__ check is for Symantec. 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define NO_MEMCPY 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define HAVE_MEMCPY 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_MEMCPY 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define zmemcpy _fmemcpy 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define zmemcmp _fmemcmp 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define zmemzero(dest, len) _fmemset(dest, 0, len) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# else 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define zmemcpy memcpy 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define zmemcmp memcmp 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define zmemzero(dest, len) memset(dest, 0, len) 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len)); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Diagnostic functions */ 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef DEBUG 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <stdio.h> 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extern int ZLIB_INTERNAL z_verbose; 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extern void ZLIB_INTERNAL z_error OF((char *m)); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define Assert(cond,msg) {if(!(cond)) z_error(msg);} 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define Trace(x) {if (z_verbose>=0) fprintf x ;} 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define Tracev(x) {if (z_verbose>0) fprintf x ;} 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define Tracevv(x) {if (z_verbose>1) fprintf x ;} 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define Assert(cond,msg) 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define Trace(x) 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define Tracev(x) 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define Tracevv(x) 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define Tracec(c,x) 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define Tracecv(c,x) 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items, 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned size)); 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr)); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ZALLOC(strm, items, size) \ 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*((strm)->zalloc))((strm)->opaque, (items), (size)) 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* ZUTIL_H */ 290