15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* zutil.h -- internal interface and configuration of the compression library
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (C) 1995-2010 Jean-loup Gailly.
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * For conditions of distribution and use, see copyright notice in zlib.h
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* WARNING: this file should *not* be used by applications. It is
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   part of the implementation of the compression library and is
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   subject to change. Applications should only use zlib.h.
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* @(#) $Id$ */
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ZUTIL_H
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ZUTIL_H
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if ((__GNUC__-0) * 10 + __GNUC_MINOR__-0 >= 33) && !defined(NO_VIZ)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define ZLIB_INTERNAL
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "zlib.h"
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef STDC
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  if !(defined(_WIN32_WCE) && defined(_MSC_VER))
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    include <stddef.h>
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  include <string.h>
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  include <stdlib.h>
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef NO_ERRNO_H
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#   ifdef _WIN32_WCE
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      /* The Microsoft C Run-Time Library for Windows CE doesn't have
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       * errno.  We define it as a global variable to simplify porting.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       * Its value is always 0 and should not be used.  We rename it to
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       * avoid conflict with other libraries that use the same workaround.
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       */
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#     define errno z_errno
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#   endif
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    extern int errno;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  ifndef _WIN32_WCE
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    include <errno.h>
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef local
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define local static
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* compile with -Dlocal if your debugger can't find static symbols */
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned char  uch;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef uch FAR uchf;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned short ush;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef ush FAR ushf;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned long  ulg;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* (size given to avoid silly warnings with Visual C++) */
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ERR_RETURN(strm,err) \
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return (strm->msg = (char*)ERR_MSG(err), (err))
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* To be used only when the state is known to be valid */
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        /* common constants */
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DEF_WBITS
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define DEF_WBITS MAX_WBITS
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* default windowBits for decompression. MAX_WBITS is for compression only */
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if MAX_MEM_LEVEL >= 8
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define DEF_MEM_LEVEL 8
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define DEF_MEM_LEVEL  MAX_MEM_LEVEL
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* default memLevel */
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STORED_BLOCK 0
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATIC_TREES 1
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define DYN_TREES    2
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* The three kinds of block type */
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MIN_MATCH  3
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAX_MATCH  258
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* The minimum and maximum match lengths */
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        /* target dependencies */
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define OS_CODE  0x00
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  if defined(__TURBOC__) || defined(__BORLANDC__)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       /* Allow compilation with ANSI keywords only enabled */
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       void _Cdecl farfree( void *block );
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       void *_Cdecl farmalloc( unsigned long nbytes );
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    else
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#      include <alloc.h>
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    endif
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  else /* MSC or DJGPP */
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    include <malloc.h>
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef AMIGA
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define OS_CODE  0x01
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(VAXC) || defined(VMS)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define OS_CODE  0x02
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define F_OPEN(name, mode) \
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ATARI) || defined(atarist)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define OS_CODE  0x05
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef OS2
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define OS_CODE  0x06
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  ifdef M_I86
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    include <malloc.h>
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(MACOS) || defined(TARGET_OS_MAC)
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define OS_CODE  0x07
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    include <unix.h> /* for fdopen */
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  else
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    ifndef fdopen
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#      define fdopen(fd,mode) NULL /* No fdopen() */
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    endif
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef TOPS20
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define OS_CODE  0x0a
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef WIN32
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  ifndef __CYGWIN__  /* Cygwin is Unix, not Win32 */
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define OS_CODE  0x0b
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __50SERIES /* Prime/PRIMOS */
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define OS_CODE  0x0f
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(_BEOS_) || defined(RISCOS)
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define fdopen(fd,mode) NULL /* No fdopen() */
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  if defined(_WIN32_WCE)
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define fdopen(fd,mode) NULL /* No fdopen() */
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    ifndef _PTRDIFF_T_DEFINED
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       typedef int ptrdiff_t;
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#      define _PTRDIFF_T_DEFINED
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    endif
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  else
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define fdopen(fd,type)  _fdopen(fd,type)
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__BORLANDC__)
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #pragma warn -8004
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #pragma warn -8008
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #pragma warn -8066
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* provide prototypes for these when building zlib without LFS */
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        /* common defaults */
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef OS_CODE
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define OS_CODE  0x03  /* assume Unix */
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef F_OPEN
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define F_OPEN(name, mode) fopen((name), (mode))
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         /* functions */
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  ifndef HAVE_VSNPRINTF
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define HAVE_VSNPRINTF
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__CYGWIN__)
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  ifndef HAVE_VSNPRINTF
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define HAVE_VSNPRINTF
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef HAVE_VSNPRINTF
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  ifdef MSDOS
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     /* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        but for now we just assume it doesn't. */
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define NO_vsnprintf
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  ifdef __TURBOC__
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define NO_vsnprintf
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  ifdef WIN32
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    if !defined(vsnprintf) && !defined(NO_vsnprintf)
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#      if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 )
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#         define vsnprintf _vsnprintf
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#      endif
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    endif
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  ifdef __SASC
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define NO_vsnprintf
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef VMS
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define NO_vsnprintf
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(pyr)
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define NO_MEMCPY
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Use our own functions for small and medium model with MSC <= 5.0.
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  * You may have to use the same strategy for Borland C (untested).
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  * The __SC__ check is for Symantec.
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  */
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define NO_MEMCPY
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define HAVE_MEMCPY
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_MEMCPY
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  ifdef SMALL_MEDIUM /* MSDOS small or medium model */
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define zmemcpy _fmemcpy
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define zmemcmp _fmemcmp
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define zmemzero(dest, len) _fmemset(dest, 0, len)
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  else
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define zmemcpy memcpy
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define zmemcmp memcmp
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    define zmemzero(dest, len) memset(dest, 0, len)
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len));
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Diagnostic functions */
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef DEBUG
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  include <stdio.h>
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   extern int ZLIB_INTERNAL z_verbose;
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   extern void ZLIB_INTERNAL z_error OF((char *m));
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define Assert(cond,msg) {if(!(cond)) z_error(msg);}
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define Trace(x) {if (z_verbose>=0) fprintf x ;}
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define Tracev(x) {if (z_verbose>0) fprintf x ;}
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define Tracevv(x) {if (z_verbose>1) fprintf x ;}
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define Assert(cond,msg)
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define Trace(x)
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define Tracev(x)
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define Tracevv(x)
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define Tracec(c,x)
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define Tracecv(c,x)
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items,
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        unsigned size));
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ZLIB_INTERNAL zcfree  OF((voidpf opaque, voidpf ptr));
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ZALLOC(strm, items, size) \
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           (*((strm)->zalloc))((strm)->opaque, (items), (size))
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ZFREE(strm, addr)  (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* ZUTIL_H */
290