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