Hex Artifact Content

Not logged in

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 */.