18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* zutil.h -- internal interface and configuration of the compression library
217b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner * Copyright (C) 1995-2013 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
1617b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#ifdef HAVE_HIDDEN
1717b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#  define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
1817b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#else
1917b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#  define ZLIB_INTERNAL
2017b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#endif
2117b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner
228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "zlib.h"
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2417b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#if defined(STDC) && !defined(Z_SOLO)
2517b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#  if !(defined(_WIN32_WCE) && defined(_MSC_VER))
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    include <stddef.h>
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  endif
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  include <string.h>
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  include <stdlib.h>
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
3117b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner
3217b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#ifdef Z_SOLO
3317b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner   typedef long ptrdiff_t;  /* guess -- will be caught if guess is wrong */
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef local
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define local static
388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* compile with -Dlocal if your debugger can't find static symbols */
408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef unsigned char  uch;
428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uch FAR uchf;
438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef unsigned short ush;
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef ush FAR ushf;
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef unsigned long  ulg;
468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4717b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turnerextern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* (size given to avoid silly warnings with Visual C++) */
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ERR_RETURN(strm,err) \
5317b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner  return (strm->msg = ERR_MSG(err), (err))
548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* To be used only when the state is known to be valid */
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        /* common constants */
578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef DEF_WBITS
598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define DEF_WBITS MAX_WBITS
608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* default windowBits for decompression. MAX_WBITS is for compression only */
628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if MAX_MEM_LEVEL >= 8
648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define DEF_MEM_LEVEL 8
658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define DEF_MEM_LEVEL  MAX_MEM_LEVEL
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* default memLevel */
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STORED_BLOCK 0
718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define STATIC_TREES 1
728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DYN_TREES    2
738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The three kinds of block type */
748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MIN_MATCH  3
768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MAX_MATCH  258
778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The minimum and maximum match lengths */
788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        /* target dependencies */
828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))
848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define OS_CODE  0x00
8517b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#  ifndef Z_SOLO
8617b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#    if defined(__TURBOC__) || defined(__BORLANDC__)
8717b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#      if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
8817b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner         /* Allow compilation with ANSI keywords only enabled */
8917b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner         void _Cdecl farfree( void *block );
9017b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner         void *_Cdecl farmalloc( unsigned long nbytes );
9117b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#      else
9217b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#        include <alloc.h>
9317b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#      endif
9417b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#    else /* MSC or DJGPP */
9517b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#      include <malloc.h>
968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    endif
978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  endif
988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef AMIGA
1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define OS_CODE  0x01
1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(VAXC) || defined(VMS)
1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define OS_CODE  0x02
1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define F_OPEN(name, mode) \
1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(ATARI) || defined(atarist)
1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define OS_CODE  0x05
1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef OS2
1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define OS_CODE  0x06
11617b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#  if defined(M_I86) && !defined(Z_SOLO)
11717b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#    include <malloc.h>
1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  endif
1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(MACOS) || defined(TARGET_OS_MAC)
1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define OS_CODE  0x07
12317b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#  ifndef Z_SOLO
12417b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#    if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
12517b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#      include <unix.h> /* for fdopen */
12617b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#    else
12717b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#      ifndef fdopen
12817b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#        define fdopen(fd,mode) NULL /* No fdopen() */
12917b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#      endif
1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    endif
1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  endif
1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef TOPS20
1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define OS_CODE  0x0a
1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef WIN32
1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  ifndef __CYGWIN__  /* Cygwin is Unix, not Win32 */
1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    define OS_CODE  0x0b
1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  endif
1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef __50SERIES /* Prime/PRIMOS */
1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define OS_CODE  0x0f
1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(_BEOS_) || defined(RISCOS)
1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define fdopen(fd,mode) NULL /* No fdopen() */
1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15217b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  if defined(_WIN32_WCE)
1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    define fdopen(fd,mode) NULL /* No fdopen() */
1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    ifndef _PTRDIFF_T_DEFINED
1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project       typedef int ptrdiff_t;
1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#      define _PTRDIFF_T_DEFINED
1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    endif
1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  else
1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    define fdopen(fd,type)  _fdopen(fd,type)
1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  endif
1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16417b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#if defined(__BORLANDC__) && !defined(MSDOS)
16517b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner  #pragma warn -8004
16617b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner  #pragma warn -8008
16717b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner  #pragma warn -8066
16817b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#endif
16917b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner
17017b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner/* provide prototypes for these when building zlib without LFS */
17117b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#if !defined(_WIN32) && \
17217b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner    (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
17317b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner    ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
17417b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner    ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
17517b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#endif
17617b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner
1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        /* common defaults */
1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef OS_CODE
1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define OS_CODE  0x03  /* assume Unix */
1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef F_OPEN
1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define F_OPEN(name, mode) fopen((name), (mode))
1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project         /* functions */
1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18917b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#if defined(pyr) || defined(Z_SOLO)
1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define NO_MEMCPY
1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* Use our own functions for small and medium model with MSC <= 5.0.
1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  * You may have to use the same strategy for Borland C (untested).
1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  * The __SC__ check is for Symantec.
1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  */
1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define NO_MEMCPY
1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define HAVE_MEMCPY
2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef HAVE_MEMCPY
2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  ifdef SMALL_MEDIUM /* MSDOS small or medium model */
2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    define zmemcpy _fmemcpy
2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    define zmemcmp _fmemcmp
2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    define zmemzero(dest, len) _fmemset(dest, 0, len)
2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  else
2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    define zmemcpy memcpy
2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    define zmemcmp memcmp
2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#    define zmemzero(dest, len) memset(dest, 0, len)
2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  endif
2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
21317b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner   void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
21417b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner   int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
21517b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner   void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len));
2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Diagnostic functions */
2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef DEBUG
2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  include <stdio.h>
22117b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner   extern int ZLIB_INTERNAL z_verbose;
22217b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner   extern void ZLIB_INTERNAL z_error OF((char *m));
2238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define Assert(cond,msg) {if(!(cond)) z_error(msg);}
2248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define Trace(x) {if (z_verbose>=0) fprintf x ;}
2258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define Tracev(x) {if (z_verbose>0) fprintf x ;}
2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define Tracevv(x) {if (z_verbose>1) fprintf x ;}
2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define Assert(cond,msg)
2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define Trace(x)
2328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define Tracev(x)
2338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define Tracevv(x)
2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define Tracec(c,x)
2358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define Tracecv(c,x)
2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
23817b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#ifndef Z_SOLO
23917b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner   voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items,
24017b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner                                    unsigned size));
24117b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner   void ZLIB_INTERNAL zcfree  OF((voidpf opaque, voidpf ptr));
24217b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#endif
2438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ZALLOC(strm, items, size) \
2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project           (*((strm)->zalloc))((strm)->opaque, (items), (size))
2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ZFREE(strm, addr)  (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
2478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
24917b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner/* Reverse the bytes in a 32-bit value */
25017b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner#define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \
25117b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner                    (((q) & 0xff00) << 8) + (((q) & 0xff) << 24))
25217b20e6f38ad2263e47a6884c4f68ce9773d8b29David 'Digit' Turner
2538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* ZUTIL_H */
254