1*2d60b848STomohiro Kusumi /* zutil.h -- internal interface and configuration of the compression library 2*2d60b848STomohiro Kusumi * Copyright (C) 1995-2013 Jean-loup Gailly. 3*2d60b848STomohiro Kusumi * For conditions of distribution and use, see copyright notice in zlib.h 4*2d60b848STomohiro Kusumi */ 5*2d60b848STomohiro Kusumi 6*2d60b848STomohiro Kusumi /* WARNING: this file should *not* be used by applications. It is 7*2d60b848STomohiro Kusumi part of the implementation of the compression library and is 8*2d60b848STomohiro Kusumi subject to change. Applications should only use zlib.h. 9*2d60b848STomohiro Kusumi */ 10*2d60b848STomohiro Kusumi 11*2d60b848STomohiro Kusumi /* @(#) $Id$ */ 12*2d60b848STomohiro Kusumi 13*2d60b848STomohiro Kusumi #ifndef ZUTIL_H 14*2d60b848STomohiro Kusumi #define ZUTIL_H 15*2d60b848STomohiro Kusumi 16*2d60b848STomohiro Kusumi #ifdef HAVE_HIDDEN 17*2d60b848STomohiro Kusumi # define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) 18*2d60b848STomohiro Kusumi #else 19*2d60b848STomohiro Kusumi # define ZLIB_INTERNAL 20*2d60b848STomohiro Kusumi #endif 21*2d60b848STomohiro Kusumi 22*2d60b848STomohiro Kusumi #include <sys/param.h> /* for panic() */ 23*2d60b848STomohiro Kusumi #include "hammer2_zlib.h" 24*2d60b848STomohiro Kusumi 25*2d60b848STomohiro Kusumi #ifndef local 26*2d60b848STomohiro Kusumi # define local static 27*2d60b848STomohiro Kusumi #endif 28*2d60b848STomohiro Kusumi /* compile with -Dlocal if your debugger can't find static symbols */ 29*2d60b848STomohiro Kusumi 30*2d60b848STomohiro Kusumi typedef unsigned char uch; 31*2d60b848STomohiro Kusumi typedef uch FAR uchf; 32*2d60b848STomohiro Kusumi typedef unsigned short ush; 33*2d60b848STomohiro Kusumi typedef ush FAR ushf; 34*2d60b848STomohiro Kusumi typedef unsigned long ulg; 35*2d60b848STomohiro Kusumi 36*2d60b848STomohiro Kusumi extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ 37*2d60b848STomohiro Kusumi /* (size given to avoid silly warnings with Visual C++) */ 38*2d60b848STomohiro Kusumi 39*2d60b848STomohiro Kusumi #define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] 40*2d60b848STomohiro Kusumi 41*2d60b848STomohiro Kusumi #define ERR_RETURN(strm,err) \ 42*2d60b848STomohiro Kusumi return (strm->msg = ERR_MSG(err), (err)) 43*2d60b848STomohiro Kusumi /* To be used only when the state is known to be valid */ 44*2d60b848STomohiro Kusumi 45*2d60b848STomohiro Kusumi /* common constants */ 46*2d60b848STomohiro Kusumi 47*2d60b848STomohiro Kusumi #ifndef DEF_WBITS 48*2d60b848STomohiro Kusumi # define DEF_WBITS MAX_WBITS 49*2d60b848STomohiro Kusumi #endif 50*2d60b848STomohiro Kusumi /* default windowBits for decompression. MAX_WBITS is for compression only */ 51*2d60b848STomohiro Kusumi 52*2d60b848STomohiro Kusumi #if MAX_MEM_LEVEL >= 8 53*2d60b848STomohiro Kusumi # define DEF_MEM_LEVEL 8 54*2d60b848STomohiro Kusumi #else 55*2d60b848STomohiro Kusumi # define DEF_MEM_LEVEL MAX_MEM_LEVEL 56*2d60b848STomohiro Kusumi #endif 57*2d60b848STomohiro Kusumi /* default memLevel */ 58*2d60b848STomohiro Kusumi 59*2d60b848STomohiro Kusumi #define STORED_BLOCK 0 60*2d60b848STomohiro Kusumi #define STATIC_TREES 1 61*2d60b848STomohiro Kusumi #define DYN_TREES 2 62*2d60b848STomohiro Kusumi /* The three kinds of block type */ 63*2d60b848STomohiro Kusumi 64*2d60b848STomohiro Kusumi #define MIN_MATCH 3 65*2d60b848STomohiro Kusumi #define MAX_MATCH 258 66*2d60b848STomohiro Kusumi /* The minimum and maximum match lengths */ 67*2d60b848STomohiro Kusumi 68*2d60b848STomohiro Kusumi #define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ 69*2d60b848STomohiro Kusumi 70*2d60b848STomohiro Kusumi /* target dependencies */ 71*2d60b848STomohiro Kusumi 72*2d60b848STomohiro Kusumi #if defined(__BORLANDC__) && !defined(MSDOS) 73*2d60b848STomohiro Kusumi #pragma warn -8004 74*2d60b848STomohiro Kusumi #pragma warn -8008 75*2d60b848STomohiro Kusumi #pragma warn -8066 76*2d60b848STomohiro Kusumi #endif 77*2d60b848STomohiro Kusumi 78*2d60b848STomohiro Kusumi /* provide prototypes for these when building zlib without LFS */ 79*2d60b848STomohiro Kusumi #if !defined(_WIN32) && \ 80*2d60b848STomohiro Kusumi (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) 81*2d60b848STomohiro Kusumi uLong adler32_combine64(uLong, uLong, z_off_t); 82*2d60b848STomohiro Kusumi #endif 83*2d60b848STomohiro Kusumi 84*2d60b848STomohiro Kusumi /* common defaults */ 85*2d60b848STomohiro Kusumi 86*2d60b848STomohiro Kusumi #ifndef OS_CODE 87*2d60b848STomohiro Kusumi # define OS_CODE 0x03 /* assume Unix */ 88*2d60b848STomohiro Kusumi #endif 89*2d60b848STomohiro Kusumi 90*2d60b848STomohiro Kusumi #ifndef F_OPEN 91*2d60b848STomohiro Kusumi # define F_OPEN(name, mode) fopen((name), (mode)) 92*2d60b848STomohiro Kusumi #endif 93*2d60b848STomohiro Kusumi 94*2d60b848STomohiro Kusumi /* functions */ 95*2d60b848STomohiro Kusumi 96*2d60b848STomohiro Kusumi #if defined(pyr) || defined(Z_SOLO) 97*2d60b848STomohiro Kusumi # define NO_MEMCPY 98*2d60b848STomohiro Kusumi #endif 99*2d60b848STomohiro Kusumi #if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) 100*2d60b848STomohiro Kusumi /* Use our own functions for small and medium model with MSC <= 5.0. 101*2d60b848STomohiro Kusumi * You may have to use the same strategy for Borland C (untested). 102*2d60b848STomohiro Kusumi * The __SC__ check is for Symantec. 103*2d60b848STomohiro Kusumi */ 104*2d60b848STomohiro Kusumi # define NO_MEMCPY 105*2d60b848STomohiro Kusumi #endif 106*2d60b848STomohiro Kusumi #if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) 107*2d60b848STomohiro Kusumi # define HAVE_MEMCPY 108*2d60b848STomohiro Kusumi #endif 109*2d60b848STomohiro Kusumi #ifdef HAVE_MEMCPY 110*2d60b848STomohiro Kusumi # ifdef SMALL_MEDIUM /* MSDOS small or medium model */ 111*2d60b848STomohiro Kusumi # define zmemcpy _fmemcpy 112*2d60b848STomohiro Kusumi # define zmemcmp _fmemcmp 113*2d60b848STomohiro Kusumi # define zmemzero(dest, len) _fmemset(dest, 0, len) 114*2d60b848STomohiro Kusumi # else 115*2d60b848STomohiro Kusumi # define zmemcpy memcpy 116*2d60b848STomohiro Kusumi # define zmemcmp memcmp 117*2d60b848STomohiro Kusumi # define zmemzero(dest, len) memset(dest, 0, len) 118*2d60b848STomohiro Kusumi # endif 119*2d60b848STomohiro Kusumi #else 120*2d60b848STomohiro Kusumi void ZLIB_INTERNAL zmemcpy((Bytef* dest, const Bytef* source, uInt len)); 121*2d60b848STomohiro Kusumi int ZLIB_INTERNAL zmemcmp((const Bytef* s1, const Bytef* s2, uInt len)); 122*2d60b848STomohiro Kusumi void ZLIB_INTERNAL zmemzero((Bytef* dest, uInt len)); 123*2d60b848STomohiro Kusumi #endif 124*2d60b848STomohiro Kusumi 125*2d60b848STomohiro Kusumi /* Diagnostic functions */ 126*2d60b848STomohiro Kusumi #ifdef H2_ZLIB_DEBUG 127*2d60b848STomohiro Kusumi # include <stdio.h> 128*2d60b848STomohiro Kusumi extern int ZLIB_INTERNAL z_verbose; 129*2d60b848STomohiro Kusumi extern void ZLIB_INTERNAL z_error(char *m); 130*2d60b848STomohiro Kusumi # define Assert(cond,msg) {if(!(cond)) z_error(msg);} 131*2d60b848STomohiro Kusumi # define Trace(x) {if (z_verbose>=0) fprintf x ;} 132*2d60b848STomohiro Kusumi # define Tracev(x) {if (z_verbose>0) fprintf x ;} 133*2d60b848STomohiro Kusumi # define Tracevv(x) {if (z_verbose>1) fprintf x ;} 134*2d60b848STomohiro Kusumi # define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} 135*2d60b848STomohiro Kusumi # define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} 136*2d60b848STomohiro Kusumi #else 137*2d60b848STomohiro Kusumi # define Assert(cond,msg) 138*2d60b848STomohiro Kusumi # define Trace(x) 139*2d60b848STomohiro Kusumi # define Tracev(x) 140*2d60b848STomohiro Kusumi # define Tracevv(x) 141*2d60b848STomohiro Kusumi # define Tracec(c,x) 142*2d60b848STomohiro Kusumi # define Tracecv(c,x) 143*2d60b848STomohiro Kusumi #endif 144*2d60b848STomohiro Kusumi 145*2d60b848STomohiro Kusumi /* Reverse the bytes in a 32-bit value */ 146*2d60b848STomohiro Kusumi #define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ 147*2d60b848STomohiro Kusumi (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) 148*2d60b848STomohiro Kusumi 149*2d60b848STomohiro Kusumi #endif /* ZUTIL_H */ 150