1d4afb5ceSopenharmony_ci/* zutil.h -- internal interface and configuration of the compression library 2d4afb5ceSopenharmony_ci * Copyright (C) 1995-2010 Jean-loup Gailly. 3d4afb5ceSopenharmony_ci * For conditions of distribution and use, see copyright notice in zlib.h 4d4afb5ceSopenharmony_ci */ 5d4afb5ceSopenharmony_ci 6d4afb5ceSopenharmony_ci/* WARNING: this file should *not* be used by applications. It is 7d4afb5ceSopenharmony_ci part of the implementation of the compression library and is 8d4afb5ceSopenharmony_ci subject to change. Applications should only use zlib.h. 9d4afb5ceSopenharmony_ci */ 10d4afb5ceSopenharmony_ci 11d4afb5ceSopenharmony_ci/* \param (#) $Id$ */ 12d4afb5ceSopenharmony_ci 13d4afb5ceSopenharmony_ci#ifndef ZUTIL_H 14d4afb5ceSopenharmony_ci#define ZUTIL_H 15d4afb5ceSopenharmony_ci 16d4afb5ceSopenharmony_ci#if ((__GNUC__-0) * 10 + __GNUC_MINOR__-0 >= 33) && !defined(NO_VIZ) && !defined(_WIN32) 17d4afb5ceSopenharmony_ci# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) 18d4afb5ceSopenharmony_ci#else 19d4afb5ceSopenharmony_ci# define ZLIB_INTERNAL 20d4afb5ceSopenharmony_ci#endif 21d4afb5ceSopenharmony_ci 22d4afb5ceSopenharmony_ci#include "zlib.h" 23d4afb5ceSopenharmony_ci 24d4afb5ceSopenharmony_ci#ifdef STDC 25d4afb5ceSopenharmony_ci# if !(defined(_WIN32_WCE) && defined(_MSC_VER)) 26d4afb5ceSopenharmony_ci# include <stddef.h> 27d4afb5ceSopenharmony_ci# endif 28d4afb5ceSopenharmony_ci# include <string.h> 29d4afb5ceSopenharmony_ci# include <stdlib.h> 30d4afb5ceSopenharmony_ci#endif 31d4afb5ceSopenharmony_ci 32d4afb5ceSopenharmony_ci#ifndef local 33d4afb5ceSopenharmony_ci# define local static 34d4afb5ceSopenharmony_ci#endif 35d4afb5ceSopenharmony_ci/* compile with -Dlocal if your debugger can't find static symbols */ 36d4afb5ceSopenharmony_ci 37d4afb5ceSopenharmony_citypedef unsigned char uch; 38d4afb5ceSopenharmony_citypedef uch FAR uchf; 39d4afb5ceSopenharmony_citypedef unsigned short ush; 40d4afb5ceSopenharmony_citypedef ush FAR ushf; 41d4afb5ceSopenharmony_citypedef unsigned long ulg; 42d4afb5ceSopenharmony_ci 43d4afb5ceSopenharmony_ciextern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ 44d4afb5ceSopenharmony_ci/* (size given to avoid silly warnings with Visual C++) */ 45d4afb5ceSopenharmony_ci 46d4afb5ceSopenharmony_ci#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] 47d4afb5ceSopenharmony_ci 48d4afb5ceSopenharmony_ci#define ERR_RETURN(strm,err) \ 49d4afb5ceSopenharmony_ci return (strm->msg = (char*)ERR_MSG(err), (err)) 50d4afb5ceSopenharmony_ci/* To be used only when the state is known to be valid */ 51d4afb5ceSopenharmony_ci 52d4afb5ceSopenharmony_ci /* common constants */ 53d4afb5ceSopenharmony_ci 54d4afb5ceSopenharmony_ci#ifndef DEF_WBITS 55d4afb5ceSopenharmony_ci# define DEF_WBITS MAX_WBITS 56d4afb5ceSopenharmony_ci#endif 57d4afb5ceSopenharmony_ci/* default windowBits for decompression. MAX_WBITS is for compression only */ 58d4afb5ceSopenharmony_ci 59d4afb5ceSopenharmony_ci#if MAX_MEM_LEVEL >= 8 60d4afb5ceSopenharmony_ci# define DEF_MEM_LEVEL 8 61d4afb5ceSopenharmony_ci#else 62d4afb5ceSopenharmony_ci# define DEF_MEM_LEVEL MAX_MEM_LEVEL 63d4afb5ceSopenharmony_ci#endif 64d4afb5ceSopenharmony_ci/* default memLevel */ 65d4afb5ceSopenharmony_ci 66d4afb5ceSopenharmony_ci#define STORED_BLOCK 0 67d4afb5ceSopenharmony_ci#define STATIC_TREES 1 68d4afb5ceSopenharmony_ci#define DYN_TREES 2 69d4afb5ceSopenharmony_ci/* The three kinds of block type */ 70d4afb5ceSopenharmony_ci 71d4afb5ceSopenharmony_ci#define MIN_MATCH 3 72d4afb5ceSopenharmony_ci#define MAX_MATCH 258 73d4afb5ceSopenharmony_ci/* The minimum and maximum match lengths */ 74d4afb5ceSopenharmony_ci 75d4afb5ceSopenharmony_ci#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ 76d4afb5ceSopenharmony_ci 77d4afb5ceSopenharmony_ci /* target dependencies */ 78d4afb5ceSopenharmony_ci 79d4afb5ceSopenharmony_ci#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) 80d4afb5ceSopenharmony_ci# define OS_CODE 0x00 81d4afb5ceSopenharmony_ci# if defined(__TURBOC__) || defined(__BORLANDC__) 82d4afb5ceSopenharmony_ci# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) 83d4afb5ceSopenharmony_ci /* Allow compilation with ANSI keywords only enabled */ 84d4afb5ceSopenharmony_ci void _Cdecl farfree( void *block ); 85d4afb5ceSopenharmony_ci void *_Cdecl farmalloc( unsigned long nbytes ); 86d4afb5ceSopenharmony_ci# else 87d4afb5ceSopenharmony_ci# include <alloc.h> 88d4afb5ceSopenharmony_ci# endif 89d4afb5ceSopenharmony_ci# else /* MSC or DJGPP */ 90d4afb5ceSopenharmony_ci# include <malloc.h> 91d4afb5ceSopenharmony_ci# endif 92d4afb5ceSopenharmony_ci#endif 93d4afb5ceSopenharmony_ci 94d4afb5ceSopenharmony_ci#ifdef AMIGA 95d4afb5ceSopenharmony_ci# define OS_CODE 0x01 96d4afb5ceSopenharmony_ci#endif 97d4afb5ceSopenharmony_ci 98d4afb5ceSopenharmony_ci#if defined(VAXC) || defined(VMS) 99d4afb5ceSopenharmony_ci# define OS_CODE 0x02 100d4afb5ceSopenharmony_ci# define F_OPEN(name, mode) \ 101d4afb5ceSopenharmony_ci fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") 102d4afb5ceSopenharmony_ci#endif 103d4afb5ceSopenharmony_ci 104d4afb5ceSopenharmony_ci#if defined(ATARI) || defined(atarist) 105d4afb5ceSopenharmony_ci# define OS_CODE 0x05 106d4afb5ceSopenharmony_ci#endif 107d4afb5ceSopenharmony_ci 108d4afb5ceSopenharmony_ci#ifdef OS2 109d4afb5ceSopenharmony_ci# define OS_CODE 0x06 110d4afb5ceSopenharmony_ci# ifdef M_I86 111d4afb5ceSopenharmony_ci# include <malloc.h> 112d4afb5ceSopenharmony_ci# endif 113d4afb5ceSopenharmony_ci#endif 114d4afb5ceSopenharmony_ci 115d4afb5ceSopenharmony_ci#if defined(MACOS) || defined(TARGET_OS_MAC) 116d4afb5ceSopenharmony_ci# define OS_CODE 0x07 117d4afb5ceSopenharmony_ci# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os 118d4afb5ceSopenharmony_ci# include <unix.h> /* for fdopen */ 119d4afb5ceSopenharmony_ci# else 120d4afb5ceSopenharmony_ci# ifndef fdopen 121d4afb5ceSopenharmony_ci# define fdopen(fd,mode) NULL /* No fdopen() */ 122d4afb5ceSopenharmony_ci# endif 123d4afb5ceSopenharmony_ci# endif 124d4afb5ceSopenharmony_ci#endif 125d4afb5ceSopenharmony_ci 126d4afb5ceSopenharmony_ci#ifdef TOPS20 127d4afb5ceSopenharmony_ci# define OS_CODE 0x0a 128d4afb5ceSopenharmony_ci#endif 129d4afb5ceSopenharmony_ci 130d4afb5ceSopenharmony_ci#ifdef WIN32 131d4afb5ceSopenharmony_ci# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ 132d4afb5ceSopenharmony_ci# define OS_CODE 0x0b 133d4afb5ceSopenharmony_ci# endif 134d4afb5ceSopenharmony_ci#endif 135d4afb5ceSopenharmony_ci 136d4afb5ceSopenharmony_ci#ifdef __50SERIES /* Prime/PRIMOS */ 137d4afb5ceSopenharmony_ci# define OS_CODE 0x0f 138d4afb5ceSopenharmony_ci#endif 139d4afb5ceSopenharmony_ci 140d4afb5ceSopenharmony_ci#if defined(_BEOS_) || defined(RISCOS) 141d4afb5ceSopenharmony_ci# define fdopen(fd,mode) NULL /* No fdopen() */ 142d4afb5ceSopenharmony_ci#endif 143d4afb5ceSopenharmony_ci 144d4afb5ceSopenharmony_ci#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX 145d4afb5ceSopenharmony_ci# if defined(_WIN32_WCE) 146d4afb5ceSopenharmony_ci# define fdopen(fd,mode) NULL /* No fdopen() */ 147d4afb5ceSopenharmony_ci# ifndef _PTRDIFF_T_DEFINED 148d4afb5ceSopenharmony_ci typedef int ptrdiff_t; 149d4afb5ceSopenharmony_ci# define _PTRDIFF_T_DEFINED 150d4afb5ceSopenharmony_ci# endif 151d4afb5ceSopenharmony_ci# else 152d4afb5ceSopenharmony_ci# define fdopen(fd,type) _fdopen(fd,type) 153d4afb5ceSopenharmony_ci# endif 154d4afb5ceSopenharmony_ci#endif 155d4afb5ceSopenharmony_ci 156d4afb5ceSopenharmony_ci#if defined(__BORLANDC__) 157d4afb5ceSopenharmony_ci #pragma warn -8004 158d4afb5ceSopenharmony_ci #pragma warn -8008 159d4afb5ceSopenharmony_ci #pragma warn -8066 160d4afb5ceSopenharmony_ci#endif 161d4afb5ceSopenharmony_ci 162d4afb5ceSopenharmony_ci/* provide prototypes for these when building zlib without LFS */ 163d4afb5ceSopenharmony_ci#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0 164d4afb5ceSopenharmony_ci ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); 165d4afb5ceSopenharmony_ci ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); 166d4afb5ceSopenharmony_ci#endif 167d4afb5ceSopenharmony_ci 168d4afb5ceSopenharmony_ci /* common defaults */ 169d4afb5ceSopenharmony_ci 170d4afb5ceSopenharmony_ci#ifndef OS_CODE 171d4afb5ceSopenharmony_ci# define OS_CODE 0x03 /* assume Unix */ 172d4afb5ceSopenharmony_ci#endif 173d4afb5ceSopenharmony_ci 174d4afb5ceSopenharmony_ci#ifndef F_OPEN 175d4afb5ceSopenharmony_ci# define F_OPEN(name, mode) fopen((name), (mode)) 176d4afb5ceSopenharmony_ci#endif 177d4afb5ceSopenharmony_ci 178d4afb5ceSopenharmony_ci /* functions */ 179d4afb5ceSopenharmony_ci 180d4afb5ceSopenharmony_ci#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550) 181d4afb5ceSopenharmony_ci# ifndef HAVE_VSNPRINTF 182d4afb5ceSopenharmony_ci# define HAVE_VSNPRINTF 183d4afb5ceSopenharmony_ci# endif 184d4afb5ceSopenharmony_ci#endif 185d4afb5ceSopenharmony_ci#if defined(__CYGWIN__) 186d4afb5ceSopenharmony_ci# ifndef HAVE_VSNPRINTF 187d4afb5ceSopenharmony_ci# define HAVE_VSNPRINTF 188d4afb5ceSopenharmony_ci# endif 189d4afb5ceSopenharmony_ci#endif 190d4afb5ceSopenharmony_ci#ifndef HAVE_VSNPRINTF 191d4afb5ceSopenharmony_ci# ifdef MSDOS 192d4afb5ceSopenharmony_ci /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), 193d4afb5ceSopenharmony_ci but for now we just assume it doesn't. */ 194d4afb5ceSopenharmony_ci# define NO_vsnprintf 195d4afb5ceSopenharmony_ci# endif 196d4afb5ceSopenharmony_ci# ifdef __TURBOC__ 197d4afb5ceSopenharmony_ci# define NO_vsnprintf 198d4afb5ceSopenharmony_ci# endif 199d4afb5ceSopenharmony_ci# ifdef WIN32 200d4afb5ceSopenharmony_ci /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ 201d4afb5ceSopenharmony_ci# if !defined(vsnprintf) && !defined(NO_vsnprintf) 202d4afb5ceSopenharmony_ci# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) 203d4afb5ceSopenharmony_ci# define vsnprintf _vsnprintf 204d4afb5ceSopenharmony_ci# endif 205d4afb5ceSopenharmony_ci# endif 206d4afb5ceSopenharmony_ci# endif 207d4afb5ceSopenharmony_ci# ifdef __SASC 208d4afb5ceSopenharmony_ci# define NO_vsnprintf 209d4afb5ceSopenharmony_ci# endif 210d4afb5ceSopenharmony_ci#endif 211d4afb5ceSopenharmony_ci#ifdef VMS 212d4afb5ceSopenharmony_ci# define NO_vsnprintf 213d4afb5ceSopenharmony_ci#endif 214d4afb5ceSopenharmony_ci 215d4afb5ceSopenharmony_ci#if defined(pyr) 216d4afb5ceSopenharmony_ci# define NO_MEMCPY 217d4afb5ceSopenharmony_ci#endif 218d4afb5ceSopenharmony_ci#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) 219d4afb5ceSopenharmony_ci /* Use our own functions for small and medium model with MSC <= 5.0. 220d4afb5ceSopenharmony_ci * You may have to use the same strategy for Borland C (untested). 221d4afb5ceSopenharmony_ci * The __SC__ check is for Symantec. 222d4afb5ceSopenharmony_ci */ 223d4afb5ceSopenharmony_ci# define NO_MEMCPY 224d4afb5ceSopenharmony_ci#endif 225d4afb5ceSopenharmony_ci#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) 226d4afb5ceSopenharmony_ci# define HAVE_MEMCPY 227d4afb5ceSopenharmony_ci#endif 228d4afb5ceSopenharmony_ci#ifdef HAVE_MEMCPY 229d4afb5ceSopenharmony_ci# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ 230d4afb5ceSopenharmony_ci# define zmemcpy _fmemcpy 231d4afb5ceSopenharmony_ci# define zmemcmp _fmemcmp 232d4afb5ceSopenharmony_ci# define zmemzero(dest, len) _fmemset(dest, 0, len) 233d4afb5ceSopenharmony_ci# else 234d4afb5ceSopenharmony_ci# define zmemcpy memcpy 235d4afb5ceSopenharmony_ci# define zmemcmp memcmp 236d4afb5ceSopenharmony_ci# define zmemzero(dest, len) memset(dest, 0, len) 237d4afb5ceSopenharmony_ci# endif 238d4afb5ceSopenharmony_ci#else 239d4afb5ceSopenharmony_ci void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); 240d4afb5ceSopenharmony_ci int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); 241d4afb5ceSopenharmony_ci void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len)); 242d4afb5ceSopenharmony_ci#endif 243d4afb5ceSopenharmony_ci 244d4afb5ceSopenharmony_ci/* Diagnostic functions */ 245d4afb5ceSopenharmony_ci#ifdef DEBUG 246d4afb5ceSopenharmony_ci# include <stdio.h> 247d4afb5ceSopenharmony_ci extern int ZLIB_INTERNAL z_verbose; 248d4afb5ceSopenharmony_ci extern void ZLIB_INTERNAL z_error OF((char *m)); 249d4afb5ceSopenharmony_ci# define Assert(cond,msg) {if(!(cond)) z_error(msg);} 250d4afb5ceSopenharmony_ci# define Trace(x) {if (z_verbose>=0) fprintf x ;} 251d4afb5ceSopenharmony_ci# define Tracev(x) {if (z_verbose>0) fprintf x ;} 252d4afb5ceSopenharmony_ci# define Tracevv(x) {if (z_verbose>1) fprintf x ;} 253d4afb5ceSopenharmony_ci# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} 254d4afb5ceSopenharmony_ci# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} 255d4afb5ceSopenharmony_ci#else 256d4afb5ceSopenharmony_ci# define Assert(cond,msg) 257d4afb5ceSopenharmony_ci# define Trace(x) 258d4afb5ceSopenharmony_ci# define Tracev(x) 259d4afb5ceSopenharmony_ci# define Tracevv(x) 260d4afb5ceSopenharmony_ci# define Tracec(c,x) 261d4afb5ceSopenharmony_ci# define Tracecv(c,x) 262d4afb5ceSopenharmony_ci#endif 263d4afb5ceSopenharmony_ci 264d4afb5ceSopenharmony_ci 265d4afb5ceSopenharmony_civoidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items, 266d4afb5ceSopenharmony_ci unsigned size)); 267d4afb5ceSopenharmony_civoid ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr)); 268d4afb5ceSopenharmony_ci 269d4afb5ceSopenharmony_ci#define ZALLOC(strm, items, size) \ 270d4afb5ceSopenharmony_ci (*((strm)->zalloc))((strm)->opaque, (items), (size)) 271d4afb5ceSopenharmony_ci#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) 272d4afb5ceSopenharmony_ci#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} 273d4afb5ceSopenharmony_ci 274d4afb5ceSopenharmony_ci#endif /* ZUTIL_H */ 275