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