100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes/* zutil.h -- internal interface and configuration of the compression library 204351a92ecc8429c999acbfc5dfe5aa8bee1d19dElliott Hughes * Copyright (C) 1995-2013 Jean-loup Gailly. 300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes * For conditions of distribution and use, see copyright notice in zlib.h 400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes */ 500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes/* WARNING: this file should *not* be used by applications. It is 700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes part of the implementation of the compression library and is 800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes subject to change. Applications should only use zlib.h. 900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes */ 1000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 1100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes/* @(#) $Id$ */ 1200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 1300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifndef ZUTIL_H 1400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#define ZUTIL_H 1500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 1609eb358bbbb9aad3fe48dd3368c8a7a481cbda1cElliott Hughes#ifdef HAVE_HIDDEN 1700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) 1800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#else 1900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define ZLIB_INTERNAL 2000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 2100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 2200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#include "zlib.h" 2300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 2400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#if defined(STDC) && !defined(Z_SOLO) 2500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# if !(defined(_WIN32_WCE) && defined(_MSC_VER)) 2600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# include <stddef.h> 2700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# endif 2800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# include <string.h> 2900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# include <stdlib.h> 3000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 3100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 3200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifdef Z_SOLO 3300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */ 3400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 3500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 3600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifndef local 3700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define local static 3800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 3900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes/* compile with -Dlocal if your debugger can't find static symbols */ 4000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 4100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughestypedef unsigned char uch; 4200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughestypedef uch FAR uchf; 4300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughestypedef unsigned short ush; 4400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughestypedef ush FAR ushf; 4500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughestypedef unsigned long ulg; 4600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 4704351a92ecc8429c999acbfc5dfe5aa8bee1d19dElliott Hughesextern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ 4800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes/* (size given to avoid silly warnings with Visual C++) */ 4900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 5000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] 5100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 5200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#define ERR_RETURN(strm,err) \ 5304351a92ecc8429c999acbfc5dfe5aa8bee1d19dElliott Hughes return (strm->msg = ERR_MSG(err), (err)) 5400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes/* To be used only when the state is known to be valid */ 5500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 5600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes /* common constants */ 5700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 5800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifndef DEF_WBITS 5900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define DEF_WBITS MAX_WBITS 6000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 6100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes/* default windowBits for decompression. MAX_WBITS is for compression only */ 6200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 6300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#if MAX_MEM_LEVEL >= 8 6400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define DEF_MEM_LEVEL 8 6500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#else 6600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define DEF_MEM_LEVEL MAX_MEM_LEVEL 6700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 6800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes/* default memLevel */ 6900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 7000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#define STORED_BLOCK 0 7100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#define STATIC_TREES 1 7200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#define DYN_TREES 2 7300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes/* The three kinds of block type */ 7400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 7500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#define MIN_MATCH 3 7600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#define MAX_MATCH 258 7700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes/* The minimum and maximum match lengths */ 7800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 7900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ 8000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 8100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes /* target dependencies */ 8200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 8300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) 8400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define OS_CODE 0x00 8500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# ifndef Z_SOLO 8600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# if defined(__TURBOC__) || defined(__BORLANDC__) 8700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) 8800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes /* Allow compilation with ANSI keywords only enabled */ 8900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes void _Cdecl farfree( void *block ); 9000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes void *_Cdecl farmalloc( unsigned long nbytes ); 9100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# else 9200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# include <alloc.h> 9300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# endif 9400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# else /* MSC or DJGPP */ 9500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# include <malloc.h> 9600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# endif 9700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# endif 9800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 9900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 10000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifdef AMIGA 10100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define OS_CODE 0x01 10200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 10300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 10400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#if defined(VAXC) || defined(VMS) 10500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define OS_CODE 0x02 10600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define F_OPEN(name, mode) \ 10700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") 10800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 10900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 11000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#if defined(ATARI) || defined(atarist) 11100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define OS_CODE 0x05 11200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 11300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 11400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifdef OS2 11500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define OS_CODE 0x06 11600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# if defined(M_I86) && !defined(Z_SOLO) 11700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# include <malloc.h> 11800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# endif 11900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 12000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 12100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#if defined(MACOS) || defined(TARGET_OS_MAC) 12200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define OS_CODE 0x07 12300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# ifndef Z_SOLO 12400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os 12500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# include <unix.h> /* for fdopen */ 12600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# else 12700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# ifndef fdopen 12800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define fdopen(fd,mode) NULL /* No fdopen() */ 12900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# endif 13000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# endif 13100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# endif 13200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 13300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 13400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifdef TOPS20 13500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define OS_CODE 0x0a 13600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 13700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 13800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifdef WIN32 13900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ 14000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define OS_CODE 0x0b 14100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# endif 14200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 14300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 14400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifdef __50SERIES /* Prime/PRIMOS */ 14500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define OS_CODE 0x0f 14600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 14700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 14800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#if defined(_BEOS_) || defined(RISCOS) 14900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define fdopen(fd,mode) NULL /* No fdopen() */ 15000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 15100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 15200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX 15300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# if defined(_WIN32_WCE) 15400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define fdopen(fd,mode) NULL /* No fdopen() */ 15500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# ifndef _PTRDIFF_T_DEFINED 15600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes typedef int ptrdiff_t; 15700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define _PTRDIFF_T_DEFINED 15800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# endif 15900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# else 16000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define fdopen(fd,type) _fdopen(fd,type) 16100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# endif 16200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 16300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 16400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#if defined(__BORLANDC__) && !defined(MSDOS) 16500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes #pragma warn -8004 16600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes #pragma warn -8008 16700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes #pragma warn -8066 16800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 16900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 17000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes/* provide prototypes for these when building zlib without LFS */ 17104351a92ecc8429c999acbfc5dfe5aa8bee1d19dElliott Hughes#if !defined(_WIN32) && \ 17204351a92ecc8429c999acbfc5dfe5aa8bee1d19dElliott Hughes (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) 17300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); 17400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); 17500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 17600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 17700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes /* common defaults */ 17800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 17900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifndef OS_CODE 18000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define OS_CODE 0x03 /* assume Unix */ 18100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 18200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 18300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifndef F_OPEN 18400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define F_OPEN(name, mode) fopen((name), (mode)) 18500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 18600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 18700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes /* functions */ 18800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 18900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#if defined(pyr) || defined(Z_SOLO) 19000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define NO_MEMCPY 19100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 19200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) 19300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes /* Use our own functions for small and medium model with MSC <= 5.0. 19400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes * You may have to use the same strategy for Borland C (untested). 19500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes * The __SC__ check is for Symantec. 19600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes */ 19700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define NO_MEMCPY 19800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 19900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) 20000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define HAVE_MEMCPY 20100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 20200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifdef HAVE_MEMCPY 20300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ 20400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define zmemcpy _fmemcpy 20500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define zmemcmp _fmemcmp 20600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define zmemzero(dest, len) _fmemset(dest, 0, len) 20700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# else 20800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define zmemcpy memcpy 20900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define zmemcmp memcmp 21000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define zmemzero(dest, len) memset(dest, 0, len) 21100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# endif 21200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#else 21300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); 21400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); 21500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len)); 21600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 21700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 21800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes/* Diagnostic functions */ 21900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifdef DEBUG 22000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# include <stdio.h> 22100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes extern int ZLIB_INTERNAL z_verbose; 22200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes extern void ZLIB_INTERNAL z_error OF((char *m)); 22300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define Assert(cond,msg) {if(!(cond)) z_error(msg);} 22400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define Trace(x) {if (z_verbose>=0) fprintf x ;} 22500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define Tracev(x) {if (z_verbose>0) fprintf x ;} 22600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define Tracevv(x) {if (z_verbose>1) fprintf x ;} 22700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} 22800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} 22900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#else 23000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define Assert(cond,msg) 23100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define Trace(x) 23200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define Tracev(x) 23300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define Tracevv(x) 23400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define Tracec(c,x) 23500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes# define Tracecv(c,x) 23600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 23700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 23800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#ifndef Z_SOLO 23900fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items, 24000fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes unsigned size)); 24100fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr)); 24200fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif 24300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 24400fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#define ZALLOC(strm, items, size) \ 24500fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes (*((strm)->zalloc))((strm)->opaque, (items), (size)) 24600fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) 24700fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} 24800fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes 24909eb358bbbb9aad3fe48dd3368c8a7a481cbda1cElliott Hughes/* Reverse the bytes in a 32-bit value */ 25009eb358bbbb9aad3fe48dd3368c8a7a481cbda1cElliott Hughes#define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ 25109eb358bbbb9aad3fe48dd3368c8a7a481cbda1cElliott Hughes (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) 25209eb358bbbb9aad3fe48dd3368c8a7a481cbda1cElliott Hughes 25300fb66d0b1488e4ca655906f82b27eb2ccc3e309Elliott Hughes#endif /* ZUTIL_H */ 254