Artifact fc044b10a7abc5e462b0dad1da177884f44ff9ec:
0000: 2f 2a 20 7a 75 74 69 6c 2e 68 20 2d 2d 20 69 6e /* zutil.h -- in
0010: 74 65 72 6e 61 6c 20 69 6e 74 65 72 66 61 63 65 ternal interface
0020: 20 61 6e 64 20 63 6f 6e 66 69 67 75 72 61 74 69 and configurati
0030: 6f 6e 20 6f 66 20 74 68 65 20 63 6f 6d 70 72 65 on of the compre
0040: 73 73 69 6f 6e 20 6c 69 62 72 61 72 79 0a 20 2a ssion library. *
0050: 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 31 Copyright (C) 1
0060: 39 39 35 2d 31 39 39 38 20 4a 65 61 6e 2d 6c 6f 995-1998 Jean-lo
0070: 75 70 20 47 61 69 6c 6c 79 2e 0a 20 2a 20 46 6f up Gailly.. * Fo
0080: 72 20 63 6f 6e 64 69 74 69 6f 6e 73 20 6f 66 20 r conditions of
0090: 64 69 73 74 72 69 62 75 74 69 6f 6e 20 61 6e 64 distribution and
00a0: 20 75 73 65 2c 20 73 65 65 20 63 6f 70 79 72 69 use, see copyri
00b0: 67 68 74 20 6e 6f 74 69 63 65 20 69 6e 20 7a 6c ght notice in zl
00c0: 69 62 2e 68 0a 20 2a 2f 0a 0a 2f 2a 20 57 41 52 ib.h. */../* WAR
00d0: 4e 49 4e 47 3a 20 74 68 69 73 20 66 69 6c 65 20 NING: this file
00e0: 73 68 6f 75 6c 64 20 2a 6e 6f 74 2a 20 62 65 20 should *not* be
00f0: 75 73 65 64 20 62 79 20 61 70 70 6c 69 63 61 74 used by applicat
0100: 69 6f 6e 73 2e 20 49 74 20 69 73 0a 20 20 20 70 ions. It is. p
0110: 61 72 74 20 6f 66 20 74 68 65 20 69 6d 70 6c 65 art of the imple
0120: 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 mentation of the
0130: 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c 69 62 compression lib
0140: 72 61 72 79 20 61 6e 64 20 69 73 0a 20 20 20 73 rary and is. s
0150: 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 ubject to change
0160: 2e 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 73 . Applications s
0170: 68 6f 75 6c 64 20 6f 6e 6c 79 20 75 73 65 20 7a hould only use z
0180: 6c 69 62 2e 68 2e 0a 20 2a 2f 0a 0a 2f 2a 20 40 lib.h.. */../* @
0190: 28 23 29 20 24 49 64 24 20 2a 2f 0a 0a 23 69 66 (#) $Id$ */..#if
01a0: 6e 64 65 66 20 5f 5a 5f 55 54 49 4c 5f 48 0a 23 ndef _Z_UTIL_H.#
01b0: 64 65 66 69 6e 65 20 5f 5a 5f 55 54 49 4c 5f 48 define _Z_UTIL_H
01c0: 0a 0a 23 69 6e 63 6c 75 64 65 20 22 7a 6c 69 62 ..#include "zlib
01d0: 2e 68 22 0a 0a 23 69 66 64 65 66 20 53 54 44 43 .h"..#ifdef STDC
01e0: 0a 23 20 20 69 6e 63 6c 75 64 65 20 3c 73 74 64 .# include <std
01f0: 64 65 66 2e 68 3e 0a 23 20 20 69 6e 63 6c 75 64 def.h>.# includ
0200: 65 20 3c 73 74 72 69 6e 67 2e 68 3e 0a 23 20 20 e <string.h>.#
0210: 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e include <stdlib.
0220: 68 3e 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 h>.#endif.#ifdef
0230: 20 4e 4f 5f 45 52 52 4e 4f 5f 48 0a 20 20 20 20 NO_ERRNO_H.
0240: 65 78 74 65 72 6e 20 69 6e 74 20 65 72 72 6e 6f extern int errno
0250: 3b 0a 23 65 6c 73 65 0a 23 20 20 20 69 6e 63 6c ;.#else.# incl
0260: 75 64 65 20 3c 65 72 72 6e 6f 2e 68 3e 0a 23 65 ude <errno.h>.#e
0270: 6e 64 69 66 0a 0a 23 69 66 6e 64 65 66 20 6c 6f ndif..#ifndef lo
0280: 63 61 6c 0a 23 20 20 64 65 66 69 6e 65 20 6c 6f cal.# define lo
0290: 63 61 6c 20 73 74 61 74 69 63 0a 23 65 6e 64 69 cal static.#endi
02a0: 66 0a 2f 2a 20 63 6f 6d 70 69 6c 65 20 77 69 74 f./* compile wit
02b0: 68 20 2d 44 6c 6f 63 61 6c 20 69 66 20 79 6f 75 h -Dlocal if you
02c0: 72 20 64 65 62 75 67 67 65 72 20 63 61 6e 27 74 r debugger can't
02d0: 20 66 69 6e 64 20 73 74 61 74 69 63 20 73 79 6d find static sym
02e0: 62 6f 6c 73 20 2a 2f 0a 0a 74 79 70 65 64 65 66 bols */..typedef
02f0: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 20 unsigned char
0300: 75 63 68 3b 0a 74 79 70 65 64 65 66 20 75 63 68 uch;.typedef uch
0310: 20 46 41 52 20 75 63 68 66 3b 0a 74 79 70 65 64 FAR uchf;.typed
0320: 65 66 20 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 ef unsigned shor
0330: 74 20 75 73 68 3b 0a 74 79 70 65 64 65 66 20 75 t ush;.typedef u
0340: 73 68 20 46 41 52 20 75 73 68 66 3b 0a 74 79 70 sh FAR ushf;.typ
0350: 65 64 65 66 20 75 6e 73 69 67 6e 65 64 20 6c 6f edef unsigned lo
0360: 6e 67 20 20 75 6c 67 3b 0a 0a 65 78 74 65 72 6e ng ulg;..extern
0370: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 5f 65 const char *z_e
0380: 72 72 6d 73 67 5b 31 30 5d 3b 20 2f 2a 20 69 6e rrmsg[10]; /* in
0390: 64 65 78 65 64 20 62 79 20 32 2d 7a 6c 69 62 5f dexed by 2-zlib_
03a0: 65 72 72 6f 72 20 2a 2f 0a 2f 2a 20 28 73 69 7a error */./* (siz
03b0: 65 20 67 69 76 65 6e 20 74 6f 20 61 76 6f 69 64 e given to avoid
03c0: 20 73 69 6c 6c 79 20 77 61 72 6e 69 6e 67 73 20 silly warnings
03d0: 77 69 74 68 20 56 69 73 75 61 6c 20 43 2b 2b 29 with Visual C++)
03e0: 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 45 52 52 */..#define ERR
03f0: 5f 4d 53 47 28 65 72 72 29 20 7a 5f 65 72 72 6d _MSG(err) z_errm
0400: 73 67 5b 5a 5f 4e 45 45 44 5f 44 49 43 54 2d 28 sg[Z_NEED_DICT-(
0410: 65 72 72 29 5d 0a 0a 23 64 65 66 69 6e 65 20 45 err)]..#define E
0420: 52 52 5f 52 45 54 55 52 4e 28 73 74 72 6d 2c 65 RR_RETURN(strm,e
0430: 72 72 29 20 5c 0a 20 20 72 65 74 75 72 6e 20 28 rr) \. return (
0440: 73 74 72 6d 2d 3e 6d 73 67 20 3d 20 28 63 68 61 strm->msg = (cha
0450: 72 2a 29 45 52 52 5f 4d 53 47 28 65 72 72 29 2c r*)ERR_MSG(err),
0460: 20 28 65 72 72 29 29 0a 2f 2a 20 54 6f 20 62 65 (err))./* To be
0470: 20 75 73 65 64 20 6f 6e 6c 79 20 77 68 65 6e 20 used only when
0480: 74 68 65 20 73 74 61 74 65 20 69 73 20 6b 6e 6f the state is kno
0490: 77 6e 20 74 6f 20 62 65 20 76 61 6c 69 64 20 2a wn to be valid *
04a0: 2f 0a 0a 20 20 20 20 20 20 20 20 2f 2a 20 63 6f /.. /* co
04b0: 6d 6d 6f 6e 20 63 6f 6e 73 74 61 6e 74 73 20 2a mmon constants *
04c0: 2f 0a 0a 23 69 66 6e 64 65 66 20 44 45 46 5f 57 /..#ifndef DEF_W
04d0: 42 49 54 53 0a 23 20 20 64 65 66 69 6e 65 20 44 BITS.# define D
04e0: 45 46 5f 57 42 49 54 53 20 4d 41 58 5f 57 42 49 EF_WBITS MAX_WBI
04f0: 54 53 0a 23 65 6e 64 69 66 0a 2f 2a 20 64 65 66 TS.#endif./* def
0500: 61 75 6c 74 20 77 69 6e 64 6f 77 42 69 74 73 20 ault windowBits
0510: 66 6f 72 20 64 65 63 6f 6d 70 72 65 73 73 69 6f for decompressio
0520: 6e 2e 20 4d 41 58 5f 57 42 49 54 53 20 69 73 20 n. MAX_WBITS is
0530: 66 6f 72 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 for compression
0540: 6f 6e 6c 79 20 2a 2f 0a 0a 23 69 66 20 4d 41 58 only */..#if MAX
0550: 5f 4d 45 4d 5f 4c 45 56 45 4c 20 3e 3d 20 38 0a _MEM_LEVEL >= 8.
0560: 23 20 20 64 65 66 69 6e 65 20 44 45 46 5f 4d 45 # define DEF_ME
0570: 4d 5f 4c 45 56 45 4c 20 38 0a 23 65 6c 73 65 0a M_LEVEL 8.#else.
0580: 23 20 20 64 65 66 69 6e 65 20 44 45 46 5f 4d 45 # define DEF_ME
0590: 4d 5f 4c 45 56 45 4c 20 20 4d 41 58 5f 4d 45 4d M_LEVEL MAX_MEM
05a0: 5f 4c 45 56 45 4c 0a 23 65 6e 64 69 66 0a 2f 2a _LEVEL.#endif./*
05b0: 20 64 65 66 61 75 6c 74 20 6d 65 6d 4c 65 76 65 default memLeve
05c0: 6c 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 53 54 l */..#define ST
05d0: 4f 52 45 44 5f 42 4c 4f 43 4b 20 30 0a 23 64 65 ORED_BLOCK 0.#de
05e0: 66 69 6e 65 20 53 54 41 54 49 43 5f 54 52 45 45 fine STATIC_TREE
05f0: 53 20 31 0a 23 64 65 66 69 6e 65 20 44 59 4e 5f S 1.#define DYN_
0600: 54 52 45 45 53 20 20 20 20 32 0a 2f 2a 20 54 68 TREES 2./* Th
0610: 65 20 74 68 72 65 65 20 6b 69 6e 64 73 20 6f 66 e three kinds of
0620: 20 62 6c 6f 63 6b 20 74 79 70 65 20 2a 2f 0a 0a block type */..
0630: 23 64 65 66 69 6e 65 20 4d 49 4e 5f 4d 41 54 43 #define MIN_MATC
0640: 48 20 20 33 0a 23 64 65 66 69 6e 65 20 4d 41 58 H 3.#define MAX
0650: 5f 4d 41 54 43 48 20 20 32 35 38 0a 2f 2a 20 54 _MATCH 258./* T
0660: 68 65 20 6d 69 6e 69 6d 75 6d 20 61 6e 64 20 6d he minimum and m
0670: 61 78 69 6d 75 6d 20 6d 61 74 63 68 20 6c 65 6e aximum match len
0680: 67 74 68 73 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 gths */..#define
0690: 20 50 52 45 53 45 54 5f 44 49 43 54 20 30 78 32 PRESET_DICT 0x2
06a0: 30 20 2f 2a 20 70 72 65 73 65 74 20 64 69 63 74 0 /* preset dict
06b0: 69 6f 6e 61 72 79 20 66 6c 61 67 20 69 6e 20 7a ionary flag in z
06c0: 6c 69 62 20 68 65 61 64 65 72 20 2a 2f 0a 0a 20 lib header */..
06d0: 20 20 20 20 20 20 20 2f 2a 20 74 61 72 67 65 74 /* target
06e0: 20 64 65 70 65 6e 64 65 6e 63 69 65 73 20 2a 2f dependencies */
06f0: 0a 0a 23 69 66 64 65 66 20 4d 53 44 4f 53 0a 23 ..#ifdef MSDOS.#
0700: 20 20 64 65 66 69 6e 65 20 4f 53 5f 43 4f 44 45 define OS_CODE
0710: 20 20 30 78 30 30 0a 23 20 20 69 66 20 64 65 66 0x00.# if def
0720: 69 6e 65 64 28 5f 5f 54 55 52 42 4f 43 5f 5f 29 ined(__TURBOC__)
0730: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 42 4f || defined(__BO
0740: 52 4c 41 4e 44 43 5f 5f 29 0a 23 20 20 20 20 69 RLANDC__).# i
0750: 66 28 5f 5f 53 54 44 43 5f 5f 20 3d 3d 20 31 29 f(__STDC__ == 1)
0760: 20 26 26 20 28 64 65 66 69 6e 65 64 28 5f 5f 4c && (defined(__L
0770: 41 52 47 45 5f 5f 29 20 7c 7c 20 64 65 66 69 6e ARGE__) || defin
0780: 65 64 28 5f 5f 43 4f 4d 50 41 43 54 5f 5f 29 29 ed(__COMPACT__))
0790: 0a 20 20 20 20 20 20 20 2f 2a 20 41 6c 6c 6f 77 . /* Allow
07a0: 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 77 69 74 compilation wit
07b0: 68 20 41 4e 53 49 20 6b 65 79 77 6f 72 64 73 20 h ANSI keywords
07c0: 6f 6e 6c 79 20 65 6e 61 62 6c 65 64 20 2a 2f 0a only enabled */.
07d0: 20 20 20 20 20 20 20 76 6f 69 64 20 5f 43 64 65 void _Cde
07e0: 63 6c 20 66 61 72 66 72 65 65 28 20 76 6f 69 64 cl farfree( void
07f0: 20 2a 62 6c 6f 63 6b 20 29 3b 0a 20 20 20 20 20 *block );.
0800: 20 20 76 6f 69 64 20 2a 5f 43 64 65 63 6c 20 66 void *_Cdecl f
0810: 61 72 6d 61 6c 6c 6f 63 28 20 75 6e 73 69 67 6e armalloc( unsign
0820: 65 64 20 6c 6f 6e 67 20 6e 62 79 74 65 73 20 29 ed long nbytes )
0830: 3b 0a 23 20 20 20 20 65 6c 73 65 0a 23 20 20 20 ;.# else.#
0840: 20 20 69 6e 63 6c 75 64 65 20 3c 61 6c 6c 6f 63 include <alloc
0850: 2e 68 3e 0a 23 20 20 20 20 65 6e 64 69 66 0a 23 .h>.# endif.#
0860: 20 20 65 6c 73 65 20 2f 2a 20 4d 53 43 20 6f 72 else /* MSC or
0870: 20 44 4a 47 50 50 20 2a 2f 0a 23 20 20 20 20 69 DJGPP */.# i
0880: 6e 63 6c 75 64 65 20 3c 6d 61 6c 6c 6f 63 2e 68 nclude <malloc.h
0890: 3e 0a 23 20 20 65 6e 64 69 66 0a 23 65 6e 64 69 >.# endif.#endi
08a0: 66 0a 0a 23 69 66 64 65 66 20 4f 53 32 0a 23 20 f..#ifdef OS2.#
08b0: 20 64 65 66 69 6e 65 20 4f 53 5f 43 4f 44 45 20 define OS_CODE
08c0: 20 30 78 30 36 0a 23 65 6e 64 69 66 0a 0a 23 69 0x06.#endif..#i
08d0: 66 64 65 66 20 57 49 4e 33 32 20 2f 2a 20 57 69 fdef WIN32 /* Wi
08e0: 6e 64 6f 77 20 39 35 20 26 20 57 69 6e 64 6f 77 ndow 95 & Window
08f0: 73 20 4e 54 20 2a 2f 0a 23 20 20 64 65 66 69 6e s NT */.# defin
0900: 65 20 4f 53 5f 43 4f 44 45 20 20 30 78 30 62 0a e OS_CODE 0x0b.
0910: 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69 #endif..#if defi
0920: 6e 65 64 28 56 41 58 43 29 20 7c 7c 20 64 65 66 ned(VAXC) || def
0930: 69 6e 65 64 28 56 4d 53 29 0a 23 20 20 64 65 66 ined(VMS).# def
0940: 69 6e 65 20 4f 53 5f 43 4f 44 45 20 20 30 78 30 ine OS_CODE 0x0
0950: 32 0a 23 20 20 64 65 66 69 6e 65 20 46 5f 4f 50 2.# define F_OP
0960: 45 4e 28 6e 61 6d 65 2c 20 6d 6f 64 65 29 20 5c EN(name, mode) \
0970: 0a 20 20 20 20 20 66 6f 70 65 6e 28 28 6e 61 6d . fopen((nam
0980: 65 29 2c 20 28 6d 6f 64 65 29 2c 20 22 6d 62 63 e), (mode), "mbc
0990: 3d 36 30 22 2c 20 22 63 74 78 3d 73 74 6d 22 2c =60", "ctx=stm",
09a0: 20 22 72 66 6d 3d 66 69 78 22 2c 20 22 6d 72 73 "rfm=fix", "mrs
09b0: 3d 35 31 32 22 29 0a 23 65 6e 64 69 66 0a 0a 23 =512").#endif..#
09c0: 69 66 64 65 66 20 41 4d 49 47 41 0a 23 20 20 64 ifdef AMIGA.# d
09d0: 65 66 69 6e 65 20 4f 53 5f 43 4f 44 45 20 20 30 efine OS_CODE 0
09e0: 78 30 31 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 x01.#endif..#if
09f0: 64 65 66 69 6e 65 64 28 41 54 41 52 49 29 20 7c defined(ATARI) |
0a00: 7c 20 64 65 66 69 6e 65 64 28 61 74 61 72 69 73 | defined(ataris
0a10: 74 29 0a 23 20 20 64 65 66 69 6e 65 20 4f 53 5f t).# define OS_
0a20: 43 4f 44 45 20 20 30 78 30 35 0a 23 65 6e 64 69 CODE 0x05.#endi
0a30: 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 4d f..#if defined(M
0a40: 41 43 4f 53 29 20 7c 7c 20 64 65 66 69 6e 65 64 ACOS) || defined
0a50: 28 54 41 52 47 45 54 5f 4f 53 5f 4d 41 43 29 0a (TARGET_OS_MAC).
0a60: 23 20 20 64 65 66 69 6e 65 20 4f 53 5f 43 4f 44 # define OS_COD
0a70: 45 20 20 30 78 30 37 0a 23 20 20 69 66 20 64 65 E 0x07.# if de
0a80: 66 69 6e 65 64 28 5f 5f 4d 57 45 52 4b 53 5f 5f fined(__MWERKS__
0a90: 29 20 26 26 20 5f 5f 64 65 73 74 5f 6f 73 20 21 ) && __dest_os !
0aa0: 3d 20 5f 5f 62 65 5f 6f 73 20 26 26 20 5f 5f 64 = __be_os && __d
0ab0: 65 73 74 5f 6f 73 20 21 3d 20 5f 5f 77 69 6e 33 est_os != __win3
0ac0: 32 5f 6f 73 0a 23 20 20 20 20 69 6e 63 6c 75 64 2_os.# includ
0ad0: 65 20 3c 75 6e 69 78 2e 68 3e 20 2f 2a 20 66 6f e <unix.h> /* fo
0ae0: 72 20 66 64 6f 70 65 6e 20 2a 2f 0a 23 20 20 65 r fdopen */.# e
0af0: 6c 73 65 0a 23 20 20 20 20 69 66 6e 64 65 66 20 lse.# ifndef
0b00: 66 64 6f 70 65 6e 0a 23 20 20 20 20 20 20 64 65 fdopen.# de
0b10: 66 69 6e 65 20 66 64 6f 70 65 6e 28 66 64 2c 6d fine fdopen(fd,m
0b20: 6f 64 65 29 20 4e 55 4c 4c 20 2f 2a 20 4e 6f 20 ode) NULL /* No
0b30: 66 64 6f 70 65 6e 28 29 20 2a 2f 0a 23 20 20 20 fdopen() */.#
0b40: 20 65 6e 64 69 66 0a 23 20 20 65 6e 64 69 66 0a endif.# endif.
0b50: 23 65 6e 64 69 66 0a 0a 23 69 66 64 65 66 20 5f #endif..#ifdef _
0b60: 5f 35 30 53 45 52 49 45 53 20 2f 2a 20 50 72 69 _50SERIES /* Pri
0b70: 6d 65 2f 50 52 49 4d 4f 53 20 2a 2f 0a 23 20 20 me/PRIMOS */.#
0b80: 64 65 66 69 6e 65 20 4f 53 5f 43 4f 44 45 20 20 define OS_CODE
0b90: 30 78 30 46 0a 23 65 6e 64 69 66 0a 0a 23 69 66 0x0F.#endif..#if
0ba0: 64 65 66 20 54 4f 50 53 32 30 0a 23 20 20 64 65 def TOPS20.# de
0bb0: 66 69 6e 65 20 4f 53 5f 43 4f 44 45 20 20 30 78 fine OS_CODE 0x
0bc0: 30 61 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 0a.#endif..#if d
0bd0: 65 66 69 6e 65 64 28 5f 42 45 4f 53 5f 29 20 7c efined(_BEOS_) |
0be0: 7c 20 64 65 66 69 6e 65 64 28 52 49 53 43 4f 53 | defined(RISCOS
0bf0: 29 0a 23 20 20 64 65 66 69 6e 65 20 66 64 6f 70 ).# define fdop
0c00: 65 6e 28 66 64 2c 6d 6f 64 65 29 20 4e 55 4c 4c en(fd,mode) NULL
0c10: 20 2f 2a 20 4e 6f 20 66 64 6f 70 65 6e 28 29 20 /* No fdopen()
0c20: 2a 2f 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 28 */.#endif..#if (
0c30: 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 defined(_MSC_VER
0c40: 29 20 26 26 20 28 5f 4d 53 43 5f 56 45 52 20 3e ) && (_MSC_VER >
0c50: 20 36 30 30 29 29 0a 23 20 20 64 65 66 69 6e 65 600)).# define
0c60: 20 66 64 6f 70 65 6e 28 66 64 2c 74 79 70 65 29 fdopen(fd,type)
0c70: 20 20 5f 66 64 6f 70 65 6e 28 66 64 2c 74 79 70 _fdopen(fd,typ
0c80: 65 29 0a 23 65 6e 64 69 66 0a 0a 0a 20 20 20 20 e).#endif...
0c90: 20 20 20 20 2f 2a 20 43 6f 6d 6d 6f 6e 20 64 65 /* Common de
0ca0: 66 61 75 6c 74 73 20 2a 2f 0a 0a 23 69 66 6e 64 faults */..#ifnd
0cb0: 65 66 20 4f 53 5f 43 4f 44 45 0a 23 20 20 64 65 ef OS_CODE.# de
0cc0: 66 69 6e 65 20 4f 53 5f 43 4f 44 45 20 20 30 78 fine OS_CODE 0x
0cd0: 30 33 20 20 2f 2a 20 61 73 73 75 6d 65 20 55 6e 03 /* assume Un
0ce0: 69 78 20 2a 2f 0a 23 65 6e 64 69 66 0a 0a 23 69 ix */.#endif..#i
0cf0: 66 6e 64 65 66 20 46 5f 4f 50 45 4e 0a 23 20 20 fndef F_OPEN.#
0d00: 64 65 66 69 6e 65 20 46 5f 4f 50 45 4e 28 6e 61 define F_OPEN(na
0d10: 6d 65 2c 20 6d 6f 64 65 29 20 66 6f 70 65 6e 28 me, mode) fopen(
0d20: 28 6e 61 6d 65 29 2c 20 28 6d 6f 64 65 29 29 0a (name), (mode)).
0d30: 23 65 6e 64 69 66 0a 0a 20 20 20 20 20 20 20 20 #endif..
0d40: 20 2f 2a 20 66 75 6e 63 74 69 6f 6e 73 20 2a 2f /* functions */
0d50: 0a 0a 23 69 66 64 65 66 20 48 41 56 45 5f 53 54 ..#ifdef HAVE_ST
0d60: 52 45 52 52 4f 52 0a 20 20 20 65 78 74 65 72 6e RERROR. extern
0d70: 20 63 68 61 72 20 2a 73 74 72 65 72 72 6f 72 20 char *strerror
0d80: 4f 46 28 28 69 6e 74 29 29 3b 0a 23 20 20 64 65 OF((int));.# de
0d90: 66 69 6e 65 20 7a 73 74 72 65 72 72 6f 72 28 65 fine zstrerror(e
0da0: 72 72 6e 75 6d 29 20 73 74 72 65 72 72 6f 72 28 rrnum) strerror(
0db0: 65 72 72 6e 75 6d 29 0a 23 65 6c 73 65 0a 23 20 errnum).#else.#
0dc0: 20 64 65 66 69 6e 65 20 7a 73 74 72 65 72 72 6f define zstrerro
0dd0: 72 28 65 72 72 6e 75 6d 29 20 22 22 0a 23 65 6e r(errnum) "".#en
0de0: 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 dif..#if defined
0df0: 28 70 79 72 29 0a 23 20 20 64 65 66 69 6e 65 20 (pyr).# define
0e00: 4e 4f 5f 4d 45 4d 43 50 59 0a 23 65 6e 64 69 66 NO_MEMCPY.#endif
0e10: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 53 4d 41 .#if defined(SMA
0e20: 4c 4c 5f 4d 45 44 49 55 4d 29 20 26 26 20 21 64 LL_MEDIUM) && !d
0e30: 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 efined(_MSC_VER)
0e40: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 53 && !defined(__S
0e50: 43 5f 5f 29 0a 20 2f 2a 20 55 73 65 20 6f 75 72 C__). /* Use our
0e60: 20 6f 77 6e 20 66 75 6e 63 74 69 6f 6e 73 20 66 own functions f
0e70: 6f 72 20 73 6d 61 6c 6c 20 61 6e 64 20 6d 65 64 or small and med
0e80: 69 75 6d 20 6d 6f 64 65 6c 20 77 69 74 68 20 4d ium model with M
0e90: 53 43 20 3c 3d 20 35 2e 30 2e 0a 20 20 2a 20 59 SC <= 5.0.. * Y
0ea0: 6f 75 20 6d 61 79 20 68 61 76 65 20 74 6f 20 75 ou may have to u
0eb0: 73 65 20 74 68 65 20 73 61 6d 65 20 73 74 72 61 se the same stra
0ec0: 74 65 67 79 20 66 6f 72 20 42 6f 72 6c 61 6e 64 tegy for Borland
0ed0: 20 43 20 28 75 6e 74 65 73 74 65 64 29 2e 0a 20 C (untested)..
0ee0: 20 2a 20 54 68 65 20 5f 5f 53 43 5f 5f 20 63 68 * The __SC__ ch
0ef0: 65 63 6b 20 69 73 20 66 6f 72 20 53 79 6d 61 6e eck is for Syman
0f00: 74 65 63 2e 0a 20 20 2a 2f 0a 23 20 20 64 65 66 tec.. */.# def
0f10: 69 6e 65 20 4e 4f 5f 4d 45 4d 43 50 59 0a 23 65 ine NO_MEMCPY.#e
0f20: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 ndif.#if defined
0f30: 28 53 54 44 43 29 20 26 26 20 21 64 65 66 69 6e (STDC) && !defin
0f40: 65 64 28 48 41 56 45 5f 4d 45 4d 43 50 59 29 20 ed(HAVE_MEMCPY)
0f50: 26 26 20 21 64 65 66 69 6e 65 64 28 4e 4f 5f 4d && !defined(NO_M
0f60: 45 4d 43 50 59 29 0a 23 20 20 64 65 66 69 6e 65 EMCPY).# define
0f70: 20 48 41 56 45 5f 4d 45 4d 43 50 59 0a 23 65 6e HAVE_MEMCPY.#en
0f80: 64 69 66 0a 23 69 66 64 65 66 20 48 41 56 45 5f dif.#ifdef HAVE_
0f90: 4d 45 4d 43 50 59 0a 23 20 20 69 66 64 65 66 20 MEMCPY.# ifdef
0fa0: 53 4d 41 4c 4c 5f 4d 45 44 49 55 4d 20 2f 2a 20 SMALL_MEDIUM /*
0fb0: 4d 53 44 4f 53 20 73 6d 61 6c 6c 20 6f 72 20 6d MSDOS small or m
0fc0: 65 64 69 75 6d 20 6d 6f 64 65 6c 20 2a 2f 0a 23 edium model */.#
0fd0: 20 20 20 20 64 65 66 69 6e 65 20 7a 6d 65 6d 63 define zmemc
0fe0: 70 79 20 5f 66 6d 65 6d 63 70 79 0a 23 20 20 20 py _fmemcpy.#
0ff0: 20 64 65 66 69 6e 65 20 7a 6d 65 6d 63 6d 70 20 define zmemcmp
1000: 5f 66 6d 65 6d 63 6d 70 0a 23 20 20 20 20 64 65 _fmemcmp.# de
1010: 66 69 6e 65 20 7a 6d 65 6d 7a 65 72 6f 28 64 65 fine zmemzero(de
1020: 73 74 2c 20 6c 65 6e 29 20 5f 66 6d 65 6d 73 65 st, len) _fmemse
1030: 74 28 64 65 73 74 2c 20 30 2c 20 6c 65 6e 29 0a t(dest, 0, len).
1040: 23 20 20 65 6c 73 65 0a 23 20 20 20 20 64 65 66 # else.# def
1050: 69 6e 65 20 7a 6d 65 6d 63 70 79 20 6d 65 6d 63 ine zmemcpy memc
1060: 70 79 0a 23 20 20 20 20 64 65 66 69 6e 65 20 7a py.# define z
1070: 6d 65 6d 63 6d 70 20 6d 65 6d 63 6d 70 0a 23 20 memcmp memcmp.#
1080: 20 20 20 64 65 66 69 6e 65 20 7a 6d 65 6d 7a 65 define zmemze
1090: 72 6f 28 64 65 73 74 2c 20 6c 65 6e 29 20 6d 65 ro(dest, len) me
10a0: 6d 73 65 74 28 64 65 73 74 2c 20 30 2c 20 6c 65 mset(dest, 0, le
10b0: 6e 29 0a 23 20 20 65 6e 64 69 66 0a 23 65 6c 73 n).# endif.#els
10c0: 65 0a 20 20 20 65 78 74 65 72 6e 20 76 6f 69 64 e. extern void
10d0: 20 7a 6d 65 6d 63 70 79 20 20 4f 46 28 28 42 79 zmemcpy OF((By
10e0: 74 65 66 2a 20 64 65 73 74 2c 20 63 6f 6e 73 74 tef* dest, const
10f0: 20 42 79 74 65 66 2a 20 73 6f 75 72 63 65 2c 20 Bytef* source,
1100: 75 49 6e 74 20 6c 65 6e 29 29 3b 0a 20 20 20 65 uInt len));. e
1110: 78 74 65 72 6e 20 69 6e 74 20 20 7a 6d 65 6d 63 xtern int zmemc
1120: 6d 70 20 20 4f 46 28 28 63 6f 6e 73 74 20 42 79 mp OF((const By
1130: 74 65 66 2a 20 73 31 2c 20 63 6f 6e 73 74 20 42 tef* s1, const B
1140: 79 74 65 66 2a 20 73 32 2c 20 75 49 6e 74 20 6c ytef* s2, uInt l
1150: 65 6e 29 29 3b 0a 20 20 20 65 78 74 65 72 6e 20 en));. extern
1160: 76 6f 69 64 20 7a 6d 65 6d 7a 65 72 6f 20 4f 46 void zmemzero OF
1170: 28 28 42 79 74 65 66 2a 20 64 65 73 74 2c 20 75 ((Bytef* dest, u
1180: 49 6e 74 20 6c 65 6e 29 29 3b 0a 23 65 6e 64 69 Int len));.#endi
1190: 66 0a 0a 2f 2a 20 44 69 61 67 6e 6f 73 74 69 63 f../* Diagnostic
11a0: 20 66 75 6e 63 74 69 6f 6e 73 20 2a 2f 0a 23 69 functions */.#i
11b0: 66 64 65 66 20 44 45 42 55 47 0a 23 20 20 69 6e fdef DEBUG.# in
11c0: 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 0a clude <stdio.h>.
11d0: 20 20 20 65 78 74 65 72 6e 20 69 6e 74 20 7a 5f extern int z_
11e0: 76 65 72 62 6f 73 65 3b 0a 20 20 20 65 78 74 65 verbose;. exte
11f0: 72 6e 20 76 6f 69 64 20 7a 5f 65 72 72 6f 72 20 rn void z_error
1200: 20 20 20 4f 46 28 28 63 68 61 72 20 2a 6d 29 29 OF((char *m))
1210: 3b 0a 23 20 20 64 65 66 69 6e 65 20 41 73 73 65 ;.# define Asse
1220: 72 74 28 63 6f 6e 64 2c 6d 73 67 29 20 7b 69 66 rt(cond,msg) {if
1230: 28 21 28 63 6f 6e 64 29 29 20 7a 5f 65 72 72 6f (!(cond)) z_erro
1240: 72 28 6d 73 67 29 3b 7d 0a 23 20 20 64 65 66 69 r(msg);}.# defi
1250: 6e 65 20 54 72 61 63 65 28 78 29 20 7b 69 66 20 ne Trace(x) {if
1260: 28 7a 5f 76 65 72 62 6f 73 65 3e 3d 30 29 20 66 (z_verbose>=0) f
1270: 70 72 69 6e 74 66 20 78 20 3b 7d 0a 23 20 20 64 printf x ;}.# d
1280: 65 66 69 6e 65 20 54 72 61 63 65 76 28 78 29 20 efine Tracev(x)
1290: 7b 69 66 20 28 7a 5f 76 65 72 62 6f 73 65 3e 30 {if (z_verbose>0
12a0: 29 20 66 70 72 69 6e 74 66 20 78 20 3b 7d 0a 23 ) fprintf x ;}.#
12b0: 20 20 64 65 66 69 6e 65 20 54 72 61 63 65 76 76 define Tracevv
12c0: 28 78 29 20 7b 69 66 20 28 7a 5f 76 65 72 62 6f (x) {if (z_verbo
12d0: 73 65 3e 31 29 20 66 70 72 69 6e 74 66 20 78 20 se>1) fprintf x
12e0: 3b 7d 0a 23 20 20 64 65 66 69 6e 65 20 54 72 61 ;}.# define Tra
12f0: 63 65 63 28 63 2c 78 29 20 7b 69 66 20 28 7a 5f cec(c,x) {if (z_
1300: 76 65 72 62 6f 73 65 3e 30 20 26 26 20 28 63 29 verbose>0 && (c)
1310: 29 20 66 70 72 69 6e 74 66 20 78 20 3b 7d 0a 23 ) fprintf x ;}.#
1320: 20 20 64 65 66 69 6e 65 20 54 72 61 63 65 63 76 define Tracecv
1330: 28 63 2c 78 29 20 7b 69 66 20 28 7a 5f 76 65 72 (c,x) {if (z_ver
1340: 62 6f 73 65 3e 31 20 26 26 20 28 63 29 29 20 66 bose>1 && (c)) f
1350: 70 72 69 6e 74 66 20 78 20 3b 7d 0a 23 65 6c 73 printf x ;}.#els
1360: 65 0a 23 20 20 64 65 66 69 6e 65 20 41 73 73 65 e.# define Asse
1370: 72 74 28 63 6f 6e 64 2c 6d 73 67 29 0a 23 20 20 rt(cond,msg).#
1380: 64 65 66 69 6e 65 20 54 72 61 63 65 28 78 29 0a define Trace(x).
1390: 23 20 20 64 65 66 69 6e 65 20 54 72 61 63 65 76 # define Tracev
13a0: 28 78 29 0a 23 20 20 64 65 66 69 6e 65 20 54 72 (x).# define Tr
13b0: 61 63 65 76 76 28 78 29 0a 23 20 20 64 65 66 69 acevv(x).# defi
13c0: 6e 65 20 54 72 61 63 65 63 28 63 2c 78 29 0a 23 ne Tracec(c,x).#
13d0: 20 20 64 65 66 69 6e 65 20 54 72 61 63 65 63 76 define Tracecv
13e0: 28 63 2c 78 29 0a 23 65 6e 64 69 66 0a 0a 0a 74 (c,x).#endif...t
13f0: 79 70 65 64 65 66 20 75 4c 6f 6e 67 20 28 5a 45 ypedef uLong (ZE
1400: 58 50 4f 52 54 20 2a 63 68 65 63 6b 5f 66 75 6e XPORT *check_fun
1410: 63 29 20 4f 46 28 28 75 4c 6f 6e 67 20 63 68 65 c) OF((uLong che
1420: 63 6b 2c 20 63 6f 6e 73 74 20 42 79 74 65 66 20 ck, const Bytef
1430: 2a 62 75 66 2c 0a 09 09 09 09 20 20 20 20 20 20 *buf,.....
1440: 20 75 49 6e 74 20 6c 65 6e 29 29 3b 0a 76 6f 69 uInt len));.voi
1450: 64 70 66 20 7a 63 61 6c 6c 6f 63 20 4f 46 28 28 dpf zcalloc OF((
1460: 76 6f 69 64 70 66 20 6f 70 61 71 75 65 2c 20 75 voidpf opaque, u
1470: 6e 73 69 67 6e 65 64 20 69 74 65 6d 73 2c 20 75 nsigned items, u
1480: 6e 73 69 67 6e 65 64 20 73 69 7a 65 29 29 3b 0a nsigned size));.
1490: 76 6f 69 64 20 20 20 7a 63 66 72 65 65 20 20 4f void zcfree O
14a0: 46 28 28 76 6f 69 64 70 66 20 6f 70 61 71 75 65 F((voidpf opaque
14b0: 2c 20 76 6f 69 64 70 66 20 70 74 72 29 29 3b 0a , voidpf ptr));.
14c0: 0a 23 64 65 66 69 6e 65 20 5a 41 4c 4c 4f 43 28 .#define ZALLOC(
14d0: 73 74 72 6d 2c 20 69 74 65 6d 73 2c 20 73 69 7a strm, items, siz
14e0: 65 29 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 e) \.
14f0: 28 2a 28 28 73 74 72 6d 29 2d 3e 7a 61 6c 6c 6f (*((strm)->zallo
1500: 63 29 29 28 28 73 74 72 6d 29 2d 3e 6f 70 61 71 c))((strm)->opaq
1510: 75 65 2c 20 28 69 74 65 6d 73 29 2c 20 28 73 69 ue, (items), (si
1520: 7a 65 29 29 0a 23 64 65 66 69 6e 65 20 5a 46 52 ze)).#define ZFR
1530: 45 45 28 73 74 72 6d 2c 20 61 64 64 72 29 20 20 EE(strm, addr)
1540: 28 2a 28 28 73 74 72 6d 29 2d 3e 7a 66 72 65 65 (*((strm)->zfree
1550: 29 29 28 28 73 74 72 6d 29 2d 3e 6f 70 61 71 75 ))((strm)->opaqu
1560: 65 2c 20 28 76 6f 69 64 70 66 29 28 61 64 64 72 e, (voidpf)(addr
1570: 29 29 0a 23 64 65 66 69 6e 65 20 54 52 59 5f 46 )).#define TRY_F
1580: 52 45 45 28 73 2c 20 70 29 20 7b 69 66 20 28 70 REE(s, p) {if (p
1590: 29 20 5a 46 52 45 45 28 73 2c 20 70 29 3b 7d 0a ) ZFREE(s, p);}.
15a0: 0a 23 65 6e 64 69 66 20 2f 2a 20 5f 5a 5f 55 54 .#endif /* _Z_UT
15b0: 49 4c 5f 48 20 2a 2f 0a IL_H */.