18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* zutil.h -- internal interface and configuration of the compression library 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (C) 1995-2005 Jean-loup Gailly. 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * For conditions of distribution and use, see copyright notice in zlib.h 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* WARNING: this file should *not* be used by applications. It is 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project part of the implementation of the compression library and is 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project subject to change. Applications should only use zlib.h. 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* @(#) $Id$ */ 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef ZUTIL_H 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ZUTIL_H 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ZLIB_INTERNAL 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "zlib.h" 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef STDC 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifndef _WIN32_WCE 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <stddef.h> 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <string.h> 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <stdlib.h> 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef NO_ERRNO_H 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifdef _WIN32_WCE 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The Microsoft C Run-Time Library for Windows CE doesn't have 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * errno. We define it as a global variable to simplify porting. 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Its value is always 0 and should not be used. We rename it to 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * avoid conflict with other libraries that use the same workaround. 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define errno z_errno 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern int errno; 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifndef _WIN32_WCE 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <errno.h> 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef local 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define local static 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* compile with -Dlocal if your debugger can't find static symbols */ 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef unsigned char uch; 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uch FAR uchf; 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef unsigned short ush; 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef ush FAR ushf; 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef unsigned long ulg; 528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ 548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* (size given to avoid silly warnings with Visual C++) */ 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ERR_RETURN(strm,err) \ 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return (strm->msg = (char*)ERR_MSG(err), (err)) 608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* To be used only when the state is known to be valid */ 618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* common constants */ 638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef DEF_WBITS 658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define DEF_WBITS MAX_WBITS 668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* default windowBits for decompression. MAX_WBITS is for compression only */ 688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if MAX_MEM_LEVEL >= 8 708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define DEF_MEM_LEVEL 8 718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define DEF_MEM_LEVEL MAX_MEM_LEVEL 738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* default memLevel */ 758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STORED_BLOCK 0 778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STATIC_TREES 1 788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DYN_TREES 2 798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The three kinds of block type */ 808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MIN_MATCH 3 828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MAX_MATCH 258 838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The minimum and maximum match lengths */ 848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ 868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* target dependencies */ 888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) 908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define OS_CODE 0x00 918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if defined(__TURBOC__) || defined(__BORLANDC__) 928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) 938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* Allow compilation with ANSI keywords only enabled */ 948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project void _Cdecl farfree( void *block ); 958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project void *_Cdecl farmalloc( unsigned long nbytes ); 968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else 978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <alloc.h> 988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else /* MSC or DJGPP */ 1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <malloc.h> 1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef AMIGA 1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define OS_CODE 0x01 1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(VAXC) || defined(VMS) 1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define OS_CODE 0x02 1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define F_OPEN(name, mode) \ 1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") 1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(ATARI) || defined(atarist) 1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define OS_CODE 0x05 1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef OS2 1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define OS_CODE 0x06 1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifdef M_I86 1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project #include <malloc.h> 1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(MACOS) || defined(TARGET_OS_MAC) 1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define OS_CODE 0x07 1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os 1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <unix.h> /* for fdopen */ 1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else 1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifndef fdopen 1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define fdopen(fd,mode) NULL /* No fdopen() */ 1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TOPS20 1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define OS_CODE 0x0a 1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef WIN32 1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ 1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define OS_CODE 0x0b 1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef __50SERIES /* Prime/PRIMOS */ 1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define OS_CODE 0x0f 1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(_BEOS_) || defined(RISCOS) 1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define fdopen(fd,mode) NULL /* No fdopen() */ 1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if (defined(_MSC_VER) && (_MSC_VER > 600)) 1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if defined(_WIN32_WCE) 1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define fdopen(fd,mode) NULL /* No fdopen() */ 1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifndef _PTRDIFF_T_DEFINED 1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project typedef int ptrdiff_t; 1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define _PTRDIFF_T_DEFINED 1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else 1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define fdopen(fd,type) _fdopen(fd,type) 1638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 1648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* common defaults */ 1678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef OS_CODE 1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define OS_CODE 0x03 /* assume Unix */ 1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef F_OPEN 1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define F_OPEN(name, mode) fopen((name), (mode)) 1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* functions */ 1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550) 1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifndef HAVE_VSNPRINTF 1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define HAVE_VSNPRINTF 1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(__CYGWIN__) 1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifndef HAVE_VSNPRINTF 1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define HAVE_VSNPRINTF 1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef HAVE_VSNPRINTF 1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifdef MSDOS 1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), 1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project but for now we just assume it doesn't. */ 1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define NO_vsnprintf 1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifdef __TURBOC__ 1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define NO_vsnprintf 1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifdef WIN32 1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ 1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if !defined(vsnprintf) && !defined(NO_vsnprintf) 2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define vsnprintf _vsnprintf 2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifdef __SASC 2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define NO_vsnprintf 2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef VMS 2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define NO_vsnprintf 2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(pyr) 2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define NO_MEMCPY 2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) 2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* Use our own functions for small and medium model with MSC <= 5.0. 2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * You may have to use the same strategy for Borland C (untested). 2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The __SC__ check is for Symantec. 2188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define NO_MEMCPY 2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) 2228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define HAVE_MEMCPY 2238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef HAVE_MEMCPY 2258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ 2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define zmemcpy _fmemcpy 2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define zmemcmp _fmemcmp 2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define zmemzero(dest, len) _fmemset(dest, 0, len) 2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else 2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define zmemcpy memcpy 2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define zmemcmp memcmp 2328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define zmemzero(dest, len) memset(dest, 0, len) 2338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 2358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); 2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); 2378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern void zmemzero OF((Bytef* dest, uInt len)); 2388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Diagnostic functions */ 2418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef DEBUG 2428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <stdio.h> 2438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern int z_verbose; 2448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern void z_error OF((char *m)); 2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define Assert(cond,msg) {if(!(cond)) z_error(msg);} 2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define Trace(x) {if (z_verbose>=0) fprintf x ;} 2478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define Tracev(x) {if (z_verbose>0) fprintf x ;} 2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define Tracevv(x) {if (z_verbose>1) fprintf x ;} 2498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} 2508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} 2518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 2528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define Assert(cond,msg) 2538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define Trace(x) 2548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define Tracev(x) 2558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define Tracevv(x) 2568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define Tracec(c,x) 2578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define Tracecv(c,x) 2588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size)); 2628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid zcfree OF((voidpf opaque, voidpf ptr)); 2638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ZALLOC(strm, items, size) \ 2658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (*((strm)->zalloc))((strm)->opaque, (items), (size)) 2668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) 2678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} 2688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* ZUTIL_H */ 270