Hex Artifact Content

Artifact eacf75e16a1e0c32c6766ebdbf0a25a30e261920:


0000: 2f 2a 20 7a 6c 69 62 2e 68 20 2d 2d 20 69 6e 74  /* zlib.h -- int
0010: 65 72 66 61 63 65 20 6f 66 20 74 68 65 20 27 7a  erface of the 'z
0020: 6c 69 62 27 20 67 65 6e 65 72 61 6c 20 70 75 72  lib' general pur
0030: 70 6f 73 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e  pose compression
0040: 20 6c 69 62 72 61 72 79 0a 20 20 76 65 72 73 69   library.  versi
0050: 6f 6e 20 31 2e 32 2e 37 2c 20 4d 61 79 20 32 6e  on 1.2.7, May 2n
0060: 64 2c 20 32 30 31 32 0a 0a 20 20 43 6f 70 79 72  d, 2012..  Copyr
0070: 69 67 68 74 20 28 43 29 20 31 39 39 35 2d 32 30  ight (C) 1995-20
0080: 31 32 20 4a 65 61 6e 2d 6c 6f 75 70 20 47 61 69  12 Jean-loup Gai
0090: 6c 6c 79 20 61 6e 64 20 4d 61 72 6b 20 41 64 6c  lly and Mark Adl
00a0: 65 72 0a 0a 20 20 54 68 69 73 20 73 6f 66 74 77  er..  This softw
00b0: 61 72 65 20 69 73 20 70 72 6f 76 69 64 65 64 20  are is provided 
00c0: 27 61 73 2d 69 73 27 2c 20 77 69 74 68 6f 75 74  'as-is', without
00d0: 20 61 6e 79 20 65 78 70 72 65 73 73 20 6f 72 20   any express or 
00e0: 69 6d 70 6c 69 65 64 0a 20 20 77 61 72 72 61 6e  implied.  warran
00f0: 74 79 2e 20 20 49 6e 20 6e 6f 20 65 76 65 6e 74  ty.  In no event
0100: 20 77 69 6c 6c 20 74 68 65 20 61 75 74 68 6f 72   will the author
0110: 73 20 62 65 20 68 65 6c 64 20 6c 69 61 62 6c 65  s be held liable
0120: 20 66 6f 72 20 61 6e 79 20 64 61 6d 61 67 65 73   for any damages
0130: 0a 20 20 61 72 69 73 69 6e 67 20 66 72 6f 6d 20  .  arising from 
0140: 74 68 65 20 75 73 65 20 6f 66 20 74 68 69 73 20  the use of this 
0150: 73 6f 66 74 77 61 72 65 2e 0a 0a 20 20 50 65 72  software...  Per
0160: 6d 69 73 73 69 6f 6e 20 69 73 20 67 72 61 6e 74  mission is grant
0170: 65 64 20 74 6f 20 61 6e 79 6f 6e 65 20 74 6f 20  ed to anyone to 
0180: 75 73 65 20 74 68 69 73 20 73 6f 66 74 77 61 72  use this softwar
0190: 65 20 66 6f 72 20 61 6e 79 20 70 75 72 70 6f 73  e for any purpos
01a0: 65 2c 0a 20 20 69 6e 63 6c 75 64 69 6e 67 20 63  e,.  including c
01b0: 6f 6d 6d 65 72 63 69 61 6c 20 61 70 70 6c 69 63  ommercial applic
01c0: 61 74 69 6f 6e 73 2c 20 61 6e 64 20 74 6f 20 61  ations, and to a
01d0: 6c 74 65 72 20 69 74 20 61 6e 64 20 72 65 64 69  lter it and redi
01e0: 73 74 72 69 62 75 74 65 20 69 74 0a 20 20 66 72  stribute it.  fr
01f0: 65 65 6c 79 2c 20 73 75 62 6a 65 63 74 20 74 6f  eely, subject to
0200: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 72   the following r
0210: 65 73 74 72 69 63 74 69 6f 6e 73 3a 0a 0a 20 20  estrictions:..  
0220: 31 2e 20 54 68 65 20 6f 72 69 67 69 6e 20 6f 66  1. The origin of
0230: 20 74 68 69 73 20 73 6f 66 74 77 61 72 65 20 6d   this software m
0240: 75 73 74 20 6e 6f 74 20 62 65 20 6d 69 73 72 65  ust not be misre
0250: 70 72 65 73 65 6e 74 65 64 3b 20 79 6f 75 20 6d  presented; you m
0260: 75 73 74 20 6e 6f 74 0a 20 20 20 20 20 63 6c 61  ust not.     cla
0270: 69 6d 20 74 68 61 74 20 79 6f 75 20 77 72 6f 74  im that you wrot
0280: 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 73  e the original s
0290: 6f 66 74 77 61 72 65 2e 20 49 66 20 79 6f 75 20  oftware. If you 
02a0: 75 73 65 20 74 68 69 73 20 73 6f 66 74 77 61 72  use this softwar
02b0: 65 0a 20 20 20 20 20 69 6e 20 61 20 70 72 6f 64  e.     in a prod
02c0: 75 63 74 2c 20 61 6e 20 61 63 6b 6e 6f 77 6c 65  uct, an acknowle
02d0: 64 67 6d 65 6e 74 20 69 6e 20 74 68 65 20 70 72  dgment in the pr
02e0: 6f 64 75 63 74 20 64 6f 63 75 6d 65 6e 74 61 74  oduct documentat
02f0: 69 6f 6e 20 77 6f 75 6c 64 20 62 65 0a 20 20 20  ion would be.   
0300: 20 20 61 70 70 72 65 63 69 61 74 65 64 20 62 75    appreciated bu
0310: 74 20 69 73 20 6e 6f 74 20 72 65 71 75 69 72 65  t is not require
0320: 64 2e 0a 20 20 32 2e 20 41 6c 74 65 72 65 64 20  d..  2. Altered 
0330: 73 6f 75 72 63 65 20 76 65 72 73 69 6f 6e 73 20  source versions 
0340: 6d 75 73 74 20 62 65 20 70 6c 61 69 6e 6c 79 20  must be plainly 
0350: 6d 61 72 6b 65 64 20 61 73 20 73 75 63 68 2c 20  marked as such, 
0360: 61 6e 64 20 6d 75 73 74 20 6e 6f 74 20 62 65 0a  and must not be.
0370: 20 20 20 20 20 6d 69 73 72 65 70 72 65 73 65 6e       misrepresen
0380: 74 65 64 20 61 73 20 62 65 69 6e 67 20 74 68 65  ted as being the
0390: 20 6f 72 69 67 69 6e 61 6c 20 73 6f 66 74 77 61   original softwa
03a0: 72 65 2e 0a 20 20 33 2e 20 54 68 69 73 20 6e 6f  re..  3. This no
03b0: 74 69 63 65 20 6d 61 79 20 6e 6f 74 20 62 65 20  tice may not be 
03c0: 72 65 6d 6f 76 65 64 20 6f 72 20 61 6c 74 65 72  removed or alter
03d0: 65 64 20 66 72 6f 6d 20 61 6e 79 20 73 6f 75 72  ed from any sour
03e0: 63 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e  ce distribution.
03f0: 0a 0a 20 20 4a 65 61 6e 2d 6c 6f 75 70 20 47 61  ..  Jean-loup Ga
0400: 69 6c 6c 79 20 20 20 20 20 20 20 20 4d 61 72 6b  illy        Mark
0410: 20 41 64 6c 65 72 0a 20 20 6a 6c 6f 75 70 40 67   Adler.  jloup@g
0420: 7a 69 70 2e 6f 72 67 20 20 20 20 20 20 20 20 20  zip.org         
0430: 20 6d 61 64 6c 65 72 40 61 6c 75 6d 6e 69 2e 63   madler@alumni.c
0440: 61 6c 74 65 63 68 2e 65 64 75 0a 0a 0a 20 20 54  altech.edu...  T
0450: 68 65 20 64 61 74 61 20 66 6f 72 6d 61 74 20 75  he data format u
0460: 73 65 64 20 62 79 20 74 68 65 20 7a 6c 69 62 20  sed by the zlib 
0470: 6c 69 62 72 61 72 79 20 69 73 20 64 65 73 63 72  library is descr
0480: 69 62 65 64 20 62 79 20 52 46 43 73 20 28 52 65  ibed by RFCs (Re
0490: 71 75 65 73 74 20 66 6f 72 0a 20 20 43 6f 6d 6d  quest for.  Comm
04a0: 65 6e 74 73 29 20 31 39 35 30 20 74 6f 20 31 39  ents) 1950 to 19
04b0: 35 32 20 69 6e 20 74 68 65 20 66 69 6c 65 73 20  52 in the files 
04c0: 68 74 74 70 3a 2f 2f 74 6f 6f 6c 73 2e 69 65 74  http://tools.iet
04d0: 66 2e 6f 72 67 2f 68 74 6d 6c 2f 72 66 63 31 39  f.org/html/rfc19
04e0: 35 30 0a 20 20 28 7a 6c 69 62 20 66 6f 72 6d 61  50.  (zlib forma
04f0: 74 29 2c 20 72 66 63 31 39 35 31 20 28 64 65 66  t), rfc1951 (def
0500: 6c 61 74 65 20 66 6f 72 6d 61 74 29 20 61 6e 64  late format) and
0510: 20 72 66 63 31 39 35 32 20 28 67 7a 69 70 20 66   rfc1952 (gzip f
0520: 6f 72 6d 61 74 29 2e 0a 2a 2f 0a 0a 23 69 66 6e  ormat)..*/..#ifn
0530: 64 65 66 20 5a 4c 49 42 5f 48 0a 23 64 65 66 69  def ZLIB_H.#defi
0540: 6e 65 20 5a 4c 49 42 5f 48 0a 0a 23 69 6e 63 6c  ne ZLIB_H..#incl
0550: 75 64 65 20 22 7a 63 6f 6e 66 2e 68 22 0a 0a 23  ude "zconf.h"..#
0560: 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75  ifdef __cplusplu
0570: 73 0a 65 78 74 65 72 6e 20 22 43 22 20 7b 0a 23  s.extern "C" {.#
0580: 65 6e 64 69 66 0a 0a 23 64 65 66 69 6e 65 20 5a  endif..#define Z
0590: 4c 49 42 5f 56 45 52 53 49 4f 4e 20 22 31 2e 32  LIB_VERSION "1.2
05a0: 2e 37 22 0a 23 64 65 66 69 6e 65 20 5a 4c 49 42  .7".#define ZLIB
05b0: 5f 56 45 52 4e 55 4d 20 30 78 31 32 37 30 0a 23  _VERNUM 0x1270.#
05c0: 64 65 66 69 6e 65 20 5a 4c 49 42 5f 56 45 52 5f  define ZLIB_VER_
05d0: 4d 41 4a 4f 52 20 31 0a 23 64 65 66 69 6e 65 20  MAJOR 1.#define 
05e0: 5a 4c 49 42 5f 56 45 52 5f 4d 49 4e 4f 52 20 32  ZLIB_VER_MINOR 2
05f0: 0a 23 64 65 66 69 6e 65 20 5a 4c 49 42 5f 56 45  .#define ZLIB_VE
0600: 52 5f 52 45 56 49 53 49 4f 4e 20 37 0a 23 64 65  R_REVISION 7.#de
0610: 66 69 6e 65 20 5a 4c 49 42 5f 56 45 52 5f 53 55  fine ZLIB_VER_SU
0620: 42 52 45 56 49 53 49 4f 4e 20 30 0a 0a 2f 2a 0a  BREVISION 0../*.
0630: 20 20 20 20 54 68 65 20 27 7a 6c 69 62 27 20 63      The 'zlib' c
0640: 6f 6d 70 72 65 73 73 69 6f 6e 20 6c 69 62 72 61  ompression libra
0650: 72 79 20 70 72 6f 76 69 64 65 73 20 69 6e 2d 6d  ry provides in-m
0660: 65 6d 6f 72 79 20 63 6f 6d 70 72 65 73 73 69 6f  emory compressio
0670: 6e 20 61 6e 64 0a 20 20 64 65 63 6f 6d 70 72 65  n and.  decompre
0680: 73 73 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 2c  ssion functions,
0690: 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e 74 65 67   including integ
06a0: 72 69 74 79 20 63 68 65 63 6b 73 20 6f 66 20 74  rity checks of t
06b0: 68 65 20 75 6e 63 6f 6d 70 72 65 73 73 65 64 20  he uncompressed 
06c0: 64 61 74 61 2e 0a 20 20 54 68 69 73 20 76 65 72  data..  This ver
06d0: 73 69 6f 6e 20 6f 66 20 74 68 65 20 6c 69 62 72  sion of the libr
06e0: 61 72 79 20 73 75 70 70 6f 72 74 73 20 6f 6e 6c  ary supports onl
06f0: 79 20 6f 6e 65 20 63 6f 6d 70 72 65 73 73 69 6f  y one compressio
0700: 6e 20 6d 65 74 68 6f 64 20 28 64 65 66 6c 61 74  n method (deflat
0710: 69 6f 6e 29 0a 20 20 62 75 74 20 6f 74 68 65 72  ion).  but other
0720: 20 61 6c 67 6f 72 69 74 68 6d 73 20 77 69 6c 6c   algorithms will
0730: 20 62 65 20 61 64 64 65 64 20 6c 61 74 65 72 20   be added later 
0740: 61 6e 64 20 77 69 6c 6c 20 68 61 76 65 20 74 68  and will have th
0750: 65 20 73 61 6d 65 20 73 74 72 65 61 6d 0a 20 20  e same stream.  
0760: 69 6e 74 65 72 66 61 63 65 2e 0a 0a 20 20 20 20  interface...    
0770: 43 6f 6d 70 72 65 73 73 69 6f 6e 20 63 61 6e 20  Compression can 
0780: 62 65 20 64 6f 6e 65 20 69 6e 20 61 20 73 69 6e  be done in a sin
0790: 67 6c 65 20 73 74 65 70 20 69 66 20 74 68 65 20  gle step if the 
07a0: 62 75 66 66 65 72 73 20 61 72 65 20 6c 61 72 67  buffers are larg
07b0: 65 20 65 6e 6f 75 67 68 2c 0a 20 20 6f 72 20 63  e enough,.  or c
07c0: 61 6e 20 62 65 20 64 6f 6e 65 20 62 79 20 72 65  an be done by re
07d0: 70 65 61 74 65 64 20 63 61 6c 6c 73 20 6f 66 20  peated calls of 
07e0: 74 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20  the compression 
07f0: 66 75 6e 63 74 69 6f 6e 2e 20 20 49 6e 20 74 68  function.  In th
0800: 65 20 6c 61 74 74 65 72 0a 20 20 63 61 73 65 2c  e latter.  case,
0810: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
0820: 20 6d 75 73 74 20 70 72 6f 76 69 64 65 20 6d 6f   must provide mo
0830: 72 65 20 69 6e 70 75 74 20 61 6e 64 2f 6f 72 20  re input and/or 
0840: 63 6f 6e 73 75 6d 65 20 74 68 65 20 6f 75 74 70  consume the outp
0850: 75 74 0a 20 20 28 70 72 6f 76 69 64 69 6e 67 20  ut.  (providing 
0860: 6d 6f 72 65 20 6f 75 74 70 75 74 20 73 70 61 63  more output spac
0870: 65 29 20 62 65 66 6f 72 65 20 65 61 63 68 20 63  e) before each c
0880: 61 6c 6c 2e 0a 0a 20 20 20 20 54 68 65 20 63 6f  all...    The co
0890: 6d 70 72 65 73 73 65 64 20 64 61 74 61 20 66 6f  mpressed data fo
08a0: 72 6d 61 74 20 75 73 65 64 20 62 79 20 64 65 66  rmat used by def
08b0: 61 75 6c 74 20 62 79 20 74 68 65 20 69 6e 2d 6d  ault by the in-m
08c0: 65 6d 6f 72 79 20 66 75 6e 63 74 69 6f 6e 73 20  emory functions 
08d0: 69 73 0a 20 20 74 68 65 20 7a 6c 69 62 20 66 6f  is.  the zlib fo
08e0: 72 6d 61 74 2c 20 77 68 69 63 68 20 69 73 20 61  rmat, which is a
08f0: 20 7a 6c 69 62 20 77 72 61 70 70 65 72 20 64 6f   zlib wrapper do
0900: 63 75 6d 65 6e 74 65 64 20 69 6e 20 52 46 43 20  cumented in RFC 
0910: 31 39 35 30 2c 20 77 72 61 70 70 65 64 0a 20 20  1950, wrapped.  
0920: 61 72 6f 75 6e 64 20 61 20 64 65 66 6c 61 74 65  around a deflate
0930: 20 73 74 72 65 61 6d 2c 20 77 68 69 63 68 20 69   stream, which i
0940: 73 20 69 74 73 65 6c 66 20 64 6f 63 75 6d 65 6e  s itself documen
0950: 74 65 64 20 69 6e 20 52 46 43 20 31 39 35 31 2e  ted in RFC 1951.
0960: 0a 0a 20 20 20 20 54 68 65 20 6c 69 62 72 61 72  ..    The librar
0970: 79 20 61 6c 73 6f 20 73 75 70 70 6f 72 74 73 20  y also supports 
0980: 72 65 61 64 69 6e 67 20 61 6e 64 20 77 72 69 74  reading and writ
0990: 69 6e 67 20 66 69 6c 65 73 20 69 6e 20 67 7a 69  ing files in gzi
09a0: 70 20 28 2e 67 7a 29 20 66 6f 72 6d 61 74 0a 20  p (.gz) format. 
09b0: 20 77 69 74 68 20 61 6e 20 69 6e 74 65 72 66 61   with an interfa
09c0: 63 65 20 73 69 6d 69 6c 61 72 20 74 6f 20 74 68  ce similar to th
09d0: 61 74 20 6f 66 20 73 74 64 69 6f 20 75 73 69 6e  at of stdio usin
09e0: 67 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 73 20  g the functions 
09f0: 74 68 61 74 20 73 74 61 72 74 0a 20 20 77 69 74  that start.  wit
0a00: 68 20 22 67 7a 22 2e 20 20 54 68 65 20 67 7a 69  h "gz".  The gzi
0a10: 70 20 66 6f 72 6d 61 74 20 69 73 20 64 69 66 66  p format is diff
0a20: 65 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 7a  erent from the z
0a30: 6c 69 62 20 66 6f 72 6d 61 74 2e 20 20 67 7a 69  lib format.  gzi
0a40: 70 20 69 73 20 61 0a 20 20 67 7a 69 70 20 77 72  p is a.  gzip wr
0a50: 61 70 70 65 72 2c 20 64 6f 63 75 6d 65 6e 74 65  apper, documente
0a60: 64 20 69 6e 20 52 46 43 20 31 39 35 32 2c 20 77  d in RFC 1952, w
0a70: 72 61 70 70 65 64 20 61 72 6f 75 6e 64 20 61 20  rapped around a 
0a80: 64 65 66 6c 61 74 65 20 73 74 72 65 61 6d 2e 0a  deflate stream..
0a90: 0a 20 20 20 20 54 68 69 73 20 6c 69 62 72 61 72  .    This librar
0aa0: 79 20 63 61 6e 20 6f 70 74 69 6f 6e 61 6c 6c 79  y can optionally
0ab0: 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20   read and write 
0ac0: 67 7a 69 70 20 73 74 72 65 61 6d 73 20 69 6e 20  gzip streams in 
0ad0: 6d 65 6d 6f 72 79 20 61 73 20 77 65 6c 6c 2e 0a  memory as well..
0ae0: 0a 20 20 20 20 54 68 65 20 7a 6c 69 62 20 66 6f  .    The zlib fo
0af0: 72 6d 61 74 20 77 61 73 20 64 65 73 69 67 6e 65  rmat was designe
0b00: 64 20 74 6f 20 62 65 20 63 6f 6d 70 61 63 74 20  d to be compact 
0b10: 61 6e 64 20 66 61 73 74 20 66 6f 72 20 75 73 65  and fast for use
0b20: 20 69 6e 20 6d 65 6d 6f 72 79 0a 20 20 61 6e 64   in memory.  and
0b30: 20 6f 6e 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f   on communicatio
0b40: 6e 73 20 63 68 61 6e 6e 65 6c 73 2e 20 20 54 68  ns channels.  Th
0b50: 65 20 67 7a 69 70 20 66 6f 72 6d 61 74 20 77 61  e gzip format wa
0b60: 73 20 64 65 73 69 67 6e 65 64 20 66 6f 72 20 73  s designed for s
0b70: 69 6e 67 6c 65 2d 0a 20 20 66 69 6c 65 20 63 6f  ingle-.  file co
0b80: 6d 70 72 65 73 73 69 6f 6e 20 6f 6e 20 66 69 6c  mpression on fil
0b90: 65 20 73 79 73 74 65 6d 73 2c 20 68 61 73 20 61  e systems, has a
0ba0: 20 6c 61 72 67 65 72 20 68 65 61 64 65 72 20 74   larger header t
0bb0: 68 61 6e 20 7a 6c 69 62 20 74 6f 20 6d 61 69 6e  han zlib to main
0bc0: 74 61 69 6e 0a 20 20 64 69 72 65 63 74 6f 72 79  tain.  directory
0bd0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 61 6e   information, an
0be0: 64 20 75 73 65 73 20 61 20 64 69 66 66 65 72 65  d uses a differe
0bf0: 6e 74 2c 20 73 6c 6f 77 65 72 20 63 68 65 63 6b  nt, slower check
0c00: 20 6d 65 74 68 6f 64 20 74 68 61 6e 20 7a 6c 69   method than zli
0c10: 62 2e 0a 0a 20 20 20 20 54 68 65 20 6c 69 62 72  b...    The libr
0c20: 61 72 79 20 64 6f 65 73 20 6e 6f 74 20 69 6e 73  ary does not ins
0c30: 74 61 6c 6c 20 61 6e 79 20 73 69 67 6e 61 6c 20  tall any signal 
0c40: 68 61 6e 64 6c 65 72 2e 20 20 54 68 65 20 64 65  handler.  The de
0c50: 63 6f 64 65 72 20 63 68 65 63 6b 73 0a 20 20 74  coder checks.  t
0c60: 68 65 20 63 6f 6e 73 69 73 74 65 6e 63 79 20 6f  he consistency o
0c70: 66 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65 64  f the compressed
0c80: 20 64 61 74 61 2c 20 73 6f 20 74 68 65 20 6c 69   data, so the li
0c90: 62 72 61 72 79 20 73 68 6f 75 6c 64 20 6e 65 76  brary should nev
0ca0: 65 72 20 63 72 61 73 68 0a 20 20 65 76 65 6e 20  er crash.  even 
0cb0: 69 6e 20 63 61 73 65 20 6f 66 20 63 6f 72 72 75  in case of corru
0cc0: 70 74 65 64 20 69 6e 70 75 74 2e 0a 2a 2f 0a 0a  pted input..*/..
0cd0: 74 79 70 65 64 65 66 20 76 6f 69 64 70 66 20 28  typedef voidpf (
0ce0: 2a 61 6c 6c 6f 63 5f 66 75 6e 63 29 20 4f 46 28  *alloc_func) OF(
0cf0: 28 76 6f 69 64 70 66 20 6f 70 61 71 75 65 2c 20  (voidpf opaque, 
0d00: 75 49 6e 74 20 69 74 65 6d 73 2c 20 75 49 6e 74  uInt items, uInt
0d10: 20 73 69 7a 65 29 29 3b 0a 74 79 70 65 64 65 66   size));.typedef
0d20: 20 76 6f 69 64 20 20 20 28 2a 66 72 65 65 5f 66   void   (*free_f
0d30: 75 6e 63 29 20 20 4f 46 28 28 76 6f 69 64 70 66  unc)  OF((voidpf
0d40: 20 6f 70 61 71 75 65 2c 20 76 6f 69 64 70 66 20   opaque, voidpf 
0d50: 61 64 64 72 65 73 73 29 29 3b 0a 0a 73 74 72 75  address));..stru
0d60: 63 74 20 69 6e 74 65 72 6e 61 6c 5f 73 74 61 74  ct internal_stat
0d70: 65 3b 0a 0a 74 79 70 65 64 65 66 20 73 74 72 75  e;..typedef stru
0d80: 63 74 20 7a 5f 73 74 72 65 61 6d 5f 73 20 7b 0a  ct z_stream_s {.
0d90: 20 20 20 20 7a 5f 63 6f 6e 73 74 20 42 79 74 65      z_const Byte
0da0: 66 20 2a 6e 65 78 74 5f 69 6e 3b 20 20 20 20 20  f *next_in;     
0db0: 2f 2a 20 6e 65 78 74 20 69 6e 70 75 74 20 62 79  /* next input by
0dc0: 74 65 20 2a 2f 0a 20 20 20 20 75 49 6e 74 20 20  te */.    uInt  
0dd0: 20 20 20 61 76 61 69 6c 5f 69 6e 3b 20 20 2f 2a     avail_in;  /*
0de0: 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
0df0: 20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 6e 65   available at ne
0e00: 78 74 5f 69 6e 20 2a 2f 0a 20 20 20 20 75 4c 6f  xt_in */.    uLo
0e10: 6e 67 20 20 20 20 74 6f 74 61 6c 5f 69 6e 3b 20  ng    total_in; 
0e20: 20 2f 2a 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72   /* total number
0e30: 20 6f 66 20 69 6e 70 75 74 20 62 79 74 65 73 20   of input bytes 
0e40: 72 65 61 64 20 73 6f 20 66 61 72 20 2a 2f 0a 0a  read so far */..
0e50: 20 20 20 20 42 79 74 65 66 20 20 20 20 2a 6e 65      Bytef    *ne
0e60: 78 74 5f 6f 75 74 3b 20 2f 2a 20 6e 65 78 74 20  xt_out; /* next 
0e70: 6f 75 74 70 75 74 20 62 79 74 65 20 73 68 6f 75  output byte shou
0e80: 6c 64 20 62 65 20 70 75 74 20 74 68 65 72 65 20  ld be put there 
0e90: 2a 2f 0a 20 20 20 20 75 49 6e 74 20 20 20 20 20  */.    uInt     
0ea0: 61 76 61 69 6c 5f 6f 75 74 3b 20 2f 2a 20 72 65  avail_out; /* re
0eb0: 6d 61 69 6e 69 6e 67 20 66 72 65 65 20 73 70 61  maining free spa
0ec0: 63 65 20 61 74 20 6e 65 78 74 5f 6f 75 74 20 2a  ce at next_out *
0ed0: 2f 0a 20 20 20 20 75 4c 6f 6e 67 20 20 20 20 74  /.    uLong    t
0ee0: 6f 74 61 6c 5f 6f 75 74 3b 20 2f 2a 20 74 6f 74  otal_out; /* tot
0ef0: 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  al number of byt
0f00: 65 73 20 6f 75 74 70 75 74 20 73 6f 20 66 61 72  es output so far
0f10: 20 2a 2f 0a 0a 20 20 20 20 7a 5f 63 6f 6e 73 74   */..    z_const
0f20: 20 63 68 61 72 20 2a 6d 73 67 3b 20 20 2f 2a 20   char *msg;  /* 
0f30: 6c 61 73 74 20 65 72 72 6f 72 20 6d 65 73 73 61  last error messa
0f40: 67 65 2c 20 4e 55 4c 4c 20 69 66 20 6e 6f 20 65  ge, NULL if no e
0f50: 72 72 6f 72 20 2a 2f 0a 20 20 20 20 73 74 72 75  rror */.    stru
0f60: 63 74 20 69 6e 74 65 72 6e 61 6c 5f 73 74 61 74  ct internal_stat
0f70: 65 20 46 41 52 20 2a 73 74 61 74 65 3b 20 2f 2a  e FAR *state; /*
0f80: 20 6e 6f 74 20 76 69 73 69 62 6c 65 20 62 79 20   not visible by 
0f90: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 2a 2f 0a  applications */.
0fa0: 0a 20 20 20 20 61 6c 6c 6f 63 5f 66 75 6e 63 20  .    alloc_func 
0fb0: 7a 61 6c 6c 6f 63 3b 20 20 2f 2a 20 75 73 65 64  zalloc;  /* used
0fc0: 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 74 68 65   to allocate the
0fd0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 65 20   internal state 
0fe0: 2a 2f 0a 20 20 20 20 66 72 65 65 5f 66 75 6e 63  */.    free_func
0ff0: 20 20 7a 66 72 65 65 3b 20 20 20 2f 2a 20 75 73    zfree;   /* us
1000: 65 64 20 74 6f 20 66 72 65 65 20 74 68 65 20 69  ed to free the i
1010: 6e 74 65 72 6e 61 6c 20 73 74 61 74 65 20 2a 2f  nternal state */
1020: 0a 20 20 20 20 76 6f 69 64 70 66 20 20 20 20 20  .    voidpf     
1030: 6f 70 61 71 75 65 3b 20 20 2f 2a 20 70 72 69 76  opaque;  /* priv
1040: 61 74 65 20 64 61 74 61 20 6f 62 6a 65 63 74 20  ate data object 
1050: 70 61 73 73 65 64 20 74 6f 20 7a 61 6c 6c 6f 63  passed to zalloc
1060: 20 61 6e 64 20 7a 66 72 65 65 20 2a 2f 0a 0a 20   and zfree */.. 
1070: 20 20 20 69 6e 74 20 20 20 20 20 64 61 74 61 5f     int     data_
1080: 74 79 70 65 3b 20 20 2f 2a 20 62 65 73 74 20 67  type;  /* best g
1090: 75 65 73 73 20 61 62 6f 75 74 20 74 68 65 20 64  uess about the d
10a0: 61 74 61 20 74 79 70 65 3a 20 62 69 6e 61 72 79  ata type: binary
10b0: 20 6f 72 20 74 65 78 74 20 2a 2f 0a 20 20 20 20   or text */.    
10c0: 75 4c 6f 6e 67 20 20 20 61 64 6c 65 72 3b 20 20  uLong   adler;  
10d0: 20 20 20 20 2f 2a 20 61 64 6c 65 72 33 32 20 76      /* adler32 v
10e0: 61 6c 75 65 20 6f 66 20 74 68 65 20 75 6e 63 6f  alue of the unco
10f0: 6d 70 72 65 73 73 65 64 20 64 61 74 61 20 2a 2f  mpressed data */
1100: 0a 20 20 20 20 75 4c 6f 6e 67 20 20 20 72 65 73  .    uLong   res
1110: 65 72 76 65 64 3b 20 20 20 2f 2a 20 72 65 73 65  erved;   /* rese
1120: 72 76 65 64 20 66 6f 72 20 66 75 74 75 72 65 20  rved for future 
1130: 75 73 65 20 2a 2f 0a 7d 20 7a 5f 73 74 72 65 61  use */.} z_strea
1140: 6d 3b 0a 0a 74 79 70 65 64 65 66 20 7a 5f 73 74  m;..typedef z_st
1150: 72 65 61 6d 20 46 41 52 20 2a 7a 5f 73 74 72 65  ream FAR *z_stre
1160: 61 6d 70 3b 0a 0a 2f 2a 0a 20 20 20 20 20 67 7a  amp;../*.     gz
1170: 69 70 20 68 65 61 64 65 72 20 69 6e 66 6f 72 6d  ip header inform
1180: 61 74 69 6f 6e 20 70 61 73 73 65 64 20 74 6f 20  ation passed to 
1190: 61 6e 64 20 66 72 6f 6d 20 7a 6c 69 62 20 72 6f  and from zlib ro
11a0: 75 74 69 6e 65 73 2e 20 20 53 65 65 20 52 46 43  utines.  See RFC
11b0: 20 31 39 35 32 0a 20 20 66 6f 72 20 6d 6f 72 65   1952.  for more
11c0: 20 64 65 74 61 69 6c 73 20 6f 6e 20 74 68 65 20   details on the 
11d0: 6d 65 61 6e 69 6e 67 73 20 6f 66 20 74 68 65 73  meanings of thes
11e0: 65 20 66 69 65 6c 64 73 2e 0a 2a 2f 0a 74 79 70  e fields..*/.typ
11f0: 65 64 65 66 20 73 74 72 75 63 74 20 67 7a 5f 68  edef struct gz_h
1200: 65 61 64 65 72 5f 73 20 7b 0a 20 20 20 20 69 6e  eader_s {.    in
1210: 74 20 20 20 20 20 74 65 78 74 3b 20 20 20 20 20  t     text;     
1220: 20 20 2f 2a 20 74 72 75 65 20 69 66 20 63 6f 6d    /* true if com
1230: 70 72 65 73 73 65 64 20 64 61 74 61 20 62 65 6c  pressed data bel
1240: 69 65 76 65 64 20 74 6f 20 62 65 20 74 65 78 74  ieved to be text
1250: 20 2a 2f 0a 20 20 20 20 75 4c 6f 6e 67 20 20 20   */.    uLong   
1260: 74 69 6d 65 3b 20 20 20 20 20 20 20 2f 2a 20 6d  time;       /* m
1270: 6f 64 69 66 69 63 61 74 69 6f 6e 20 74 69 6d 65  odification time
1280: 20 2a 2f 0a 20 20 20 20 69 6e 74 20 20 20 20 20   */.    int     
1290: 78 66 6c 61 67 73 3b 20 20 20 20 20 2f 2a 20 65  xflags;     /* e
12a0: 78 74 72 61 20 66 6c 61 67 73 20 28 6e 6f 74 20  xtra flags (not 
12b0: 75 73 65 64 20 77 68 65 6e 20 77 72 69 74 69 6e  used when writin
12c0: 67 20 61 20 67 7a 69 70 20 66 69 6c 65 29 20 2a  g a gzip file) *
12d0: 2f 0a 20 20 20 20 69 6e 74 20 20 20 20 20 6f 73  /.    int     os
12e0: 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 70 65  ;         /* ope
12f0: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 2a 2f  rating system */
1300: 0a 20 20 20 20 42 79 74 65 66 20 20 20 2a 65 78  .    Bytef   *ex
1310: 74 72 61 3b 20 20 20 20 20 2f 2a 20 70 6f 69 6e  tra;     /* poin
1320: 74 65 72 20 74 6f 20 65 78 74 72 61 20 66 69 65  ter to extra fie
1330: 6c 64 20 6f 72 20 5a 5f 4e 55 4c 4c 20 69 66 20  ld or Z_NULL if 
1340: 6e 6f 6e 65 20 2a 2f 0a 20 20 20 20 75 49 6e 74  none */.    uInt
1350: 20 20 20 20 65 78 74 72 61 5f 6c 65 6e 3b 20 20      extra_len;  
1360: 2f 2a 20 65 78 74 72 61 20 66 69 65 6c 64 20 6c  /* extra field l
1370: 65 6e 67 74 68 20 28 76 61 6c 69 64 20 69 66 20  ength (valid if 
1380: 65 78 74 72 61 20 21 3d 20 5a 5f 4e 55 4c 4c 29  extra != Z_NULL)
1390: 20 2a 2f 0a 20 20 20 20 75 49 6e 74 20 20 20 20   */.    uInt    
13a0: 65 78 74 72 61 5f 6d 61 78 3b 20 20 2f 2a 20 73  extra_max;  /* s
13b0: 70 61 63 65 20 61 74 20 65 78 74 72 61 20 28 6f  pace at extra (o
13c0: 6e 6c 79 20 77 68 65 6e 20 72 65 61 64 69 6e 67  nly when reading
13d0: 20 68 65 61 64 65 72 29 20 2a 2f 0a 20 20 20 20   header) */.    
13e0: 42 79 74 65 66 20 20 20 2a 6e 61 6d 65 3b 20 20  Bytef   *name;  
13f0: 20 20 20 20 2f 2a 20 70 6f 69 6e 74 65 72 20 74      /* pointer t
1400: 6f 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65  o zero-terminate
1410: 64 20 66 69 6c 65 20 6e 61 6d 65 20 6f 72 20 5a  d file name or Z
1420: 5f 4e 55 4c 4c 20 2a 2f 0a 20 20 20 20 75 49 6e  _NULL */.    uIn
1430: 74 20 20 20 20 6e 61 6d 65 5f 6d 61 78 3b 20 20  t    name_max;  
1440: 20 2f 2a 20 73 70 61 63 65 20 61 74 20 6e 61 6d   /* space at nam
1450: 65 20 28 6f 6e 6c 79 20 77 68 65 6e 20 72 65 61  e (only when rea
1460: 64 69 6e 67 20 68 65 61 64 65 72 29 20 2a 2f 0a  ding header) */.
1470: 20 20 20 20 42 79 74 65 66 20 20 20 2a 63 6f 6d      Bytef   *com
1480: 6d 65 6e 74 3b 20 20 20 2f 2a 20 70 6f 69 6e 74  ment;   /* point
1490: 65 72 20 74 6f 20 7a 65 72 6f 2d 74 65 72 6d 69  er to zero-termi
14a0: 6e 61 74 65 64 20 63 6f 6d 6d 65 6e 74 20 6f 72  nated comment or
14b0: 20 5a 5f 4e 55 4c 4c 20 2a 2f 0a 20 20 20 20 75   Z_NULL */.    u
14c0: 49 6e 74 20 20 20 20 63 6f 6d 6d 5f 6d 61 78 3b  Int    comm_max;
14d0: 20 20 20 2f 2a 20 73 70 61 63 65 20 61 74 20 63     /* space at c
14e0: 6f 6d 6d 65 6e 74 20 28 6f 6e 6c 79 20 77 68 65  omment (only whe
14f0: 6e 20 72 65 61 64 69 6e 67 20 68 65 61 64 65 72  n reading header
1500: 29 20 2a 2f 0a 20 20 20 20 69 6e 74 20 20 20 20  ) */.    int    
1510: 20 68 63 72 63 3b 20 20 20 20 20 20 20 2f 2a 20   hcrc;       /* 
1520: 74 72 75 65 20 69 66 20 74 68 65 72 65 20 77 61  true if there wa
1530: 73 20 6f 72 20 77 69 6c 6c 20 62 65 20 61 20 68  s or will be a h
1540: 65 61 64 65 72 20 63 72 63 20 2a 2f 0a 20 20 20  eader crc */.   
1550: 20 69 6e 74 20 20 20 20 20 64 6f 6e 65 3b 20 20   int     done;  
1560: 20 20 20 20 20 2f 2a 20 74 72 75 65 20 77 68 65       /* true whe
1570: 6e 20 64 6f 6e 65 20 72 65 61 64 69 6e 67 20 67  n done reading g
1580: 7a 69 70 20 68 65 61 64 65 72 20 28 6e 6f 74 20  zip header (not 
1590: 75 73 65 64 0a 20 20 20 20 20 20 20 20 20 20 20  used.           
15a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b0: 77 68 65 6e 20 77 72 69 74 69 6e 67 20 61 20 67  when writing a g
15c0: 7a 69 70 20 66 69 6c 65 29 20 2a 2f 0a 7d 20 67  zip file) */.} g
15d0: 7a 5f 68 65 61 64 65 72 3b 0a 0a 74 79 70 65 64  z_header;..typed
15e0: 65 66 20 67 7a 5f 68 65 61 64 65 72 20 46 41 52  ef gz_header FAR
15f0: 20 2a 67 7a 5f 68 65 61 64 65 72 70 3b 0a 0a 2f   *gz_headerp;../
1600: 2a 0a 20 20 20 20 20 54 68 65 20 61 70 70 6c 69  *.     The appli
1610: 63 61 74 69 6f 6e 20 6d 75 73 74 20 75 70 64 61  cation must upda
1620: 74 65 20 6e 65 78 74 5f 69 6e 20 61 6e 64 20 61  te next_in and a
1630: 76 61 69 6c 5f 69 6e 20 77 68 65 6e 20 61 76 61  vail_in when ava
1640: 69 6c 5f 69 6e 20 68 61 73 20 64 72 6f 70 70 65  il_in has droppe
1650: 64 0a 20 20 20 74 6f 20 7a 65 72 6f 2e 20 20 49  d.   to zero.  I
1660: 74 20 6d 75 73 74 20 75 70 64 61 74 65 20 6e 65  t must update ne
1670: 78 74 5f 6f 75 74 20 61 6e 64 20 61 76 61 69 6c  xt_out and avail
1680: 5f 6f 75 74 20 77 68 65 6e 20 61 76 61 69 6c 5f  _out when avail_
1690: 6f 75 74 20 68 61 73 20 64 72 6f 70 70 65 64 0a  out has dropped.
16a0: 20 20 20 74 6f 20 7a 65 72 6f 2e 20 20 54 68 65     to zero.  The
16b0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73   application mus
16c0: 74 20 69 6e 69 74 69 61 6c 69 7a 65 20 7a 61 6c  t initialize zal
16d0: 6c 6f 63 2c 20 7a 66 72 65 65 20 61 6e 64 20 6f  loc, zfree and o
16e0: 70 61 71 75 65 20 62 65 66 6f 72 65 0a 20 20 20  paque before.   
16f0: 63 61 6c 6c 69 6e 67 20 74 68 65 20 69 6e 69 74  calling the init
1700: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 41 6c 6c 20   function.  All 
1710: 6f 74 68 65 72 20 66 69 65 6c 64 73 20 61 72 65  other fields are
1720: 20 73 65 74 20 62 79 20 74 68 65 20 63 6f 6d 70   set by the comp
1730: 72 65 73 73 69 6f 6e 0a 20 20 20 6c 69 62 72 61  ression.   libra
1740: 72 79 20 61 6e 64 20 6d 75 73 74 20 6e 6f 74 20  ry and must not 
1750: 62 65 20 75 70 64 61 74 65 64 20 62 79 20 74 68  be updated by th
1760: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 0a  e application...
1770: 20 20 20 20 20 54 68 65 20 6f 70 61 71 75 65 20       The opaque 
1780: 76 61 6c 75 65 20 70 72 6f 76 69 64 65 64 20 62  value provided b
1790: 79 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  y the applicatio
17a0: 6e 20 77 69 6c 6c 20 62 65 20 70 61 73 73 65 64  n will be passed
17b0: 20 61 73 20 74 68 65 20 66 69 72 73 74 0a 20 20   as the first.  
17c0: 20 70 61 72 61 6d 65 74 65 72 20 66 6f 72 20 63   parameter for c
17d0: 61 6c 6c 73 20 6f 66 20 7a 61 6c 6c 6f 63 20 61  alls of zalloc a
17e0: 6e 64 20 7a 66 72 65 65 2e 20 20 54 68 69 73 20  nd zfree.  This 
17f0: 63 61 6e 20 62 65 20 75 73 65 66 75 6c 20 66 6f  can be useful fo
1800: 72 20 63 75 73 74 6f 6d 0a 20 20 20 6d 65 6d 6f  r custom.   memo
1810: 72 79 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 20 20  ry management.  
1820: 54 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20  The compression 
1830: 6c 69 62 72 61 72 79 20 61 74 74 61 63 68 65 73  library attaches
1840: 20 6e 6f 20 6d 65 61 6e 69 6e 67 20 74 6f 20 74   no meaning to t
1850: 68 65 0a 20 20 20 6f 70 61 71 75 65 20 76 61 6c  he.   opaque val
1860: 75 65 2e 0a 0a 20 20 20 20 20 7a 61 6c 6c 6f 63  ue...     zalloc
1870: 20 6d 75 73 74 20 72 65 74 75 72 6e 20 5a 5f 4e   must return Z_N
1880: 55 4c 4c 20 69 66 20 74 68 65 72 65 20 69 73 20  ULL if there is 
1890: 6e 6f 74 20 65 6e 6f 75 67 68 20 6d 65 6d 6f 72  not enough memor
18a0: 79 20 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74  y for the object
18b0: 2e 0a 20 20 20 49 66 20 7a 6c 69 62 20 69 73 20  ..   If zlib is 
18c0: 75 73 65 64 20 69 6e 20 61 20 6d 75 6c 74 69 2d  used in a multi-
18d0: 74 68 72 65 61 64 65 64 20 61 70 70 6c 69 63 61  threaded applica
18e0: 74 69 6f 6e 2c 20 7a 61 6c 6c 6f 63 20 61 6e 64  tion, zalloc and
18f0: 20 7a 66 72 65 65 20 6d 75 73 74 20 62 65 0a 20   zfree must be. 
1900: 20 20 74 68 72 65 61 64 20 73 61 66 65 2e 0a 0a    thread safe...
1910: 20 20 20 20 20 4f 6e 20 31 36 2d 62 69 74 20 73       On 16-bit s
1920: 79 73 74 65 6d 73 2c 20 74 68 65 20 66 75 6e 63  ystems, the func
1930: 74 69 6f 6e 73 20 7a 61 6c 6c 6f 63 20 61 6e 64  tions zalloc and
1940: 20 7a 66 72 65 65 20 6d 75 73 74 20 62 65 20 61   zfree must be a
1950: 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 0a  ble to allocate.
1960: 20 20 20 65 78 61 63 74 6c 79 20 36 35 35 33 36     exactly 65536
1970: 20 62 79 74 65 73 2c 20 62 75 74 20 77 69 6c 6c   bytes, but will
1980: 20 6e 6f 74 20 62 65 20 72 65 71 75 69 72 65 64   not be required
1990: 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 6d 6f 72   to allocate mor
19a0: 65 20 74 68 61 6e 20 74 68 69 73 20 69 66 0a 20  e than this if. 
19b0: 20 20 74 68 65 20 73 79 6d 62 6f 6c 20 4d 41 58    the symbol MAX
19c0: 53 45 47 5f 36 34 4b 20 69 73 20 64 65 66 69 6e  SEG_64K is defin
19d0: 65 64 20 28 73 65 65 20 7a 63 6f 6e 66 2e 68 29  ed (see zconf.h)
19e0: 2e 20 20 57 41 52 4e 49 4e 47 3a 20 4f 6e 20 4d  .  WARNING: On M
19f0: 53 44 4f 53 2c 20 70 6f 69 6e 74 65 72 73 0a 20  SDOS, pointers. 
1a00: 20 20 72 65 74 75 72 6e 65 64 20 62 79 20 7a 61    returned by za
1a10: 6c 6c 6f 63 20 66 6f 72 20 6f 62 6a 65 63 74 73  lloc for objects
1a20: 20 6f 66 20 65 78 61 63 74 6c 79 20 36 35 35 33   of exactly 6553
1a30: 36 20 62 79 74 65 73 20 2a 6d 75 73 74 2a 20 68  6 bytes *must* h
1a40: 61 76 65 20 74 68 65 69 72 0a 20 20 20 6f 66 66  ave their.   off
1a50: 73 65 74 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 74  set normalized t
1a60: 6f 20 7a 65 72 6f 2e 20 20 54 68 65 20 64 65 66  o zero.  The def
1a70: 61 75 6c 74 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  ault allocation 
1a80: 66 75 6e 63 74 69 6f 6e 20 70 72 6f 76 69 64 65  function provide
1a90: 64 20 62 79 20 74 68 69 73 0a 20 20 20 6c 69 62  d by this.   lib
1aa0: 72 61 72 79 20 65 6e 73 75 72 65 73 20 74 68 69  rary ensures thi
1ab0: 73 20 28 73 65 65 20 7a 75 74 69 6c 2e 63 29 2e  s (see zutil.c).
1ac0: 20 20 54 6f 20 72 65 64 75 63 65 20 6d 65 6d 6f    To reduce memo
1ad0: 72 79 20 72 65 71 75 69 72 65 6d 65 6e 74 73 20  ry requirements 
1ae0: 61 6e 64 20 61 76 6f 69 64 0a 20 20 20 61 6e 79  and avoid.   any
1af0: 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 36   allocation of 6
1b00: 34 4b 20 6f 62 6a 65 63 74 73 2c 20 61 74 20 74  4K objects, at t
1b10: 68 65 20 65 78 70 65 6e 73 65 20 6f 66 20 63 6f  he expense of co
1b20: 6d 70 72 65 73 73 69 6f 6e 20 72 61 74 69 6f 2c  mpression ratio,
1b30: 20 63 6f 6d 70 69 6c 65 0a 20 20 20 74 68 65 20   compile.   the 
1b40: 6c 69 62 72 61 72 79 20 77 69 74 68 20 2d 44 4d  library with -DM
1b50: 41 58 5f 57 42 49 54 53 3d 31 34 20 28 73 65 65  AX_WBITS=14 (see
1b60: 20 7a 63 6f 6e 66 2e 68 29 2e 0a 0a 20 20 20 20   zconf.h)...    
1b70: 20 54 68 65 20 66 69 65 6c 64 73 20 74 6f 74 61   The fields tota
1b80: 6c 5f 69 6e 20 61 6e 64 20 74 6f 74 61 6c 5f 6f  l_in and total_o
1b90: 75 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 66  ut can be used f
1ba0: 6f 72 20 73 74 61 74 69 73 74 69 63 73 20 6f 72  or statistics or
1bb0: 20 70 72 6f 67 72 65 73 73 0a 20 20 20 72 65 70   progress.   rep
1bc0: 6f 72 74 73 2e 20 20 41 66 74 65 72 20 63 6f 6d  orts.  After com
1bd0: 70 72 65 73 73 69 6f 6e 2c 20 74 6f 74 61 6c 5f  pression, total_
1be0: 69 6e 20 68 6f 6c 64 73 20 74 68 65 20 74 6f 74  in holds the tot
1bf0: 61 6c 20 73 69 7a 65 20 6f 66 20 74 68 65 0a 20  al size of the. 
1c00: 20 20 75 6e 63 6f 6d 70 72 65 73 73 65 64 20 64    uncompressed d
1c10: 61 74 61 20 61 6e 64 20 6d 61 79 20 62 65 20 73  ata and may be s
1c20: 61 76 65 64 20 66 6f 72 20 75 73 65 20 69 6e 20  aved for use in 
1c30: 74 68 65 20 64 65 63 6f 6d 70 72 65 73 73 6f 72  the decompressor
1c40: 20 28 70 61 72 74 69 63 75 6c 61 72 6c 79 0a 20   (particularly. 
1c50: 20 20 69 66 20 74 68 65 20 64 65 63 6f 6d 70 72    if the decompr
1c60: 65 73 73 6f 72 20 77 61 6e 74 73 20 74 6f 20 64  essor wants to d
1c70: 65 63 6f 6d 70 72 65 73 73 20 65 76 65 72 79 74  ecompress everyt
1c80: 68 69 6e 67 20 69 6e 20 61 20 73 69 6e 67 6c 65  hing in a single
1c90: 20 73 74 65 70 29 2e 0a 2a 2f 0a 0a 20 20 20 20   step)..*/..    
1ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb0: 20 20 20 20 2f 2a 20 63 6f 6e 73 74 61 6e 74 73      /* constants
1cc0: 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5a 5f 4e   */..#define Z_N
1cd0: 4f 5f 46 4c 55 53 48 20 20 20 20 20 20 30 0a 23  O_FLUSH      0.#
1ce0: 64 65 66 69 6e 65 20 5a 5f 50 41 52 54 49 41 4c  define Z_PARTIAL
1cf0: 5f 46 4c 55 53 48 20 31 0a 23 64 65 66 69 6e 65  _FLUSH 1.#define
1d00: 20 5a 5f 53 59 4e 43 5f 46 4c 55 53 48 20 20 20   Z_SYNC_FLUSH   
1d10: 20 32 0a 23 64 65 66 69 6e 65 20 5a 5f 46 55 4c   2.#define Z_FUL
1d20: 4c 5f 46 4c 55 53 48 20 20 20 20 33 0a 23 64 65  L_FLUSH    3.#de
1d30: 66 69 6e 65 20 5a 5f 46 49 4e 49 53 48 20 20 20  fine Z_FINISH   
1d40: 20 20 20 20 20 34 0a 23 64 65 66 69 6e 65 20 5a       4.#define Z
1d50: 5f 42 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 35  _BLOCK         5
1d60: 0a 23 64 65 66 69 6e 65 20 5a 5f 54 52 45 45 53  .#define Z_TREES
1d70: 20 20 20 20 20 20 20 20 20 36 0a 2f 2a 20 41 6c           6./* Al
1d80: 6c 6f 77 65 64 20 66 6c 75 73 68 20 76 61 6c 75  lowed flush valu
1d90: 65 73 3b 20 73 65 65 20 64 65 66 6c 61 74 65 28  es; see deflate(
1da0: 29 20 61 6e 64 20 69 6e 66 6c 61 74 65 28 29 20  ) and inflate() 
1db0: 62 65 6c 6f 77 20 66 6f 72 20 64 65 74 61 69 6c  below for detail
1dc0: 73 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5a 5f  s */..#define Z_
1dd0: 4f 4b 20 20 20 20 20 20 20 20 20 20 20 20 30 0a  OK            0.
1de0: 23 64 65 66 69 6e 65 20 5a 5f 53 54 52 45 41 4d  #define Z_STREAM
1df0: 5f 45 4e 44 20 20 20 20 31 0a 23 64 65 66 69 6e  _END    1.#defin
1e00: 65 20 5a 5f 4e 45 45 44 5f 44 49 43 54 20 20 20  e Z_NEED_DICT   
1e10: 20 20 32 0a 23 64 65 66 69 6e 65 20 5a 5f 45 52    2.#define Z_ER
1e20: 52 4e 4f 20 20 20 20 20 20 20 20 28 2d 31 29 0a  RNO        (-1).
1e30: 23 64 65 66 69 6e 65 20 5a 5f 53 54 52 45 41 4d  #define Z_STREAM
1e40: 5f 45 52 52 4f 52 20 28 2d 32 29 0a 23 64 65 66  _ERROR (-2).#def
1e50: 69 6e 65 20 5a 5f 44 41 54 41 5f 45 52 52 4f 52  ine Z_DATA_ERROR
1e60: 20 20 20 28 2d 33 29 0a 23 64 65 66 69 6e 65 20     (-3).#define 
1e70: 5a 5f 4d 45 4d 5f 45 52 52 4f 52 20 20 20 20 28  Z_MEM_ERROR    (
1e80: 2d 34 29 0a 23 64 65 66 69 6e 65 20 5a 5f 42 55  -4).#define Z_BU
1e90: 46 5f 45 52 52 4f 52 20 20 20 20 28 2d 35 29 0a  F_ERROR    (-5).
1ea0: 23 64 65 66 69 6e 65 20 5a 5f 56 45 52 53 49 4f  #define Z_VERSIO
1eb0: 4e 5f 45 52 52 4f 52 20 28 2d 36 29 0a 2f 2a 20  N_ERROR (-6)./* 
1ec0: 52 65 74 75 72 6e 20 63 6f 64 65 73 20 66 6f 72  Return codes for
1ed0: 20 74 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e   the compression
1ee0: 2f 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 66  /decompression f
1ef0: 75 6e 63 74 69 6f 6e 73 2e 20 4e 65 67 61 74 69  unctions. Negati
1f00: 76 65 20 76 61 6c 75 65 73 0a 20 2a 20 61 72 65  ve values. * are
1f10: 20 65 72 72 6f 72 73 2c 20 70 6f 73 69 74 69 76   errors, positiv
1f20: 65 20 76 61 6c 75 65 73 20 61 72 65 20 75 73 65  e values are use
1f30: 64 20 66 6f 72 20 73 70 65 63 69 61 6c 20 62 75  d for special bu
1f40: 74 20 6e 6f 72 6d 61 6c 20 65 76 65 6e 74 73 2e  t normal events.
1f50: 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5a 5f  . */..#define Z_
1f60: 4e 4f 5f 43 4f 4d 50 52 45 53 53 49 4f 4e 20 20  NO_COMPRESSION  
1f70: 20 20 20 20 20 20 20 30 0a 23 64 65 66 69 6e 65         0.#define
1f80: 20 5a 5f 42 45 53 54 5f 53 50 45 45 44 20 20 20   Z_BEST_SPEED   
1f90: 20 20 20 20 20 20 20 20 20 20 31 0a 23 64 65 66            1.#def
1fa0: 69 6e 65 20 5a 5f 42 45 53 54 5f 43 4f 4d 50 52  ine Z_BEST_COMPR
1fb0: 45 53 53 49 4f 4e 20 20 20 20 20 20 20 39 0a 23  ESSION       9.#
1fc0: 64 65 66 69 6e 65 20 5a 5f 44 45 46 41 55 4c 54  define Z_DEFAULT
1fd0: 5f 43 4f 4d 50 52 45 53 53 49 4f 4e 20 20 28 2d  _COMPRESSION  (-
1fe0: 31 29 0a 2f 2a 20 63 6f 6d 70 72 65 73 73 69 6f  1)./* compressio
1ff0: 6e 20 6c 65 76 65 6c 73 20 2a 2f 0a 0a 23 64 65  n levels */..#de
2000: 66 69 6e 65 20 5a 5f 46 49 4c 54 45 52 45 44 20  fine Z_FILTERED 
2010: 20 20 20 20 20 20 20 20 20 20 20 31 0a 23 64 65             1.#de
2020: 66 69 6e 65 20 5a 5f 48 55 46 46 4d 41 4e 5f 4f  fine Z_HUFFMAN_O
2030: 4e 4c 59 20 20 20 20 20 20 20 20 32 0a 23 64 65  NLY        2.#de
2040: 66 69 6e 65 20 5a 5f 52 4c 45 20 20 20 20 20 20  fine Z_RLE      
2050: 20 20 20 20 20 20 20 20 20 20 20 33 0a 23 64 65             3.#de
2060: 66 69 6e 65 20 5a 5f 46 49 58 45 44 20 20 20 20  fine Z_FIXED    
2070: 20 20 20 20 20 20 20 20 20 20 20 34 0a 23 64 65             4.#de
2080: 66 69 6e 65 20 5a 5f 44 45 46 41 55 4c 54 5f 53  fine Z_DEFAULT_S
2090: 54 52 41 54 45 47 59 20 20 20 20 30 0a 2f 2a 20  TRATEGY    0./* 
20a0: 63 6f 6d 70 72 65 73 73 69 6f 6e 20 73 74 72 61  compression stra
20b0: 74 65 67 79 3b 20 73 65 65 20 64 65 66 6c 61 74  tegy; see deflat
20c0: 65 49 6e 69 74 32 28 29 20 62 65 6c 6f 77 20 66  eInit2() below f
20d0: 6f 72 20 64 65 74 61 69 6c 73 20 2a 2f 0a 0a 23  or details */..#
20e0: 64 65 66 69 6e 65 20 5a 5f 42 49 4e 41 52 59 20  define Z_BINARY 
20f0: 20 20 30 0a 23 64 65 66 69 6e 65 20 5a 5f 54 45    0.#define Z_TE
2100: 58 54 20 20 20 20 20 31 0a 23 64 65 66 69 6e 65  XT     1.#define
2110: 20 5a 5f 41 53 43 49 49 20 20 20 20 5a 5f 54 45   Z_ASCII    Z_TE
2120: 58 54 20 20 20 2f 2a 20 66 6f 72 20 63 6f 6d 70  XT   /* for comp
2130: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 31  atibility with 1
2140: 2e 32 2e 32 20 61 6e 64 20 65 61 72 6c 69 65 72  .2.2 and earlier
2150: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5a 5f 55 4e   */.#define Z_UN
2160: 4b 4e 4f 57 4e 20 20 32 0a 2f 2a 20 50 6f 73 73  KNOWN  2./* Poss
2170: 69 62 6c 65 20 76 61 6c 75 65 73 20 6f 66 20 74  ible values of t
2180: 68 65 20 64 61 74 61 5f 74 79 70 65 20 66 69 65  he data_type fie
2190: 6c 64 20 28 74 68 6f 75 67 68 20 73 65 65 20 69  ld (though see i
21a0: 6e 66 6c 61 74 65 28 29 29 20 2a 2f 0a 0a 23 64  nflate()) */..#d
21b0: 65 66 69 6e 65 20 5a 5f 44 45 46 4c 41 54 45 44  efine Z_DEFLATED
21c0: 20 20 20 38 0a 2f 2a 20 54 68 65 20 64 65 66 6c     8./* The defl
21d0: 61 74 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20  ate compression 
21e0: 6d 65 74 68 6f 64 20 28 74 68 65 20 6f 6e 6c 79  method (the only
21f0: 20 6f 6e 65 20 73 75 70 70 6f 72 74 65 64 20 69   one supported i
2200: 6e 20 74 68 69 73 20 76 65 72 73 69 6f 6e 29 20  n this version) 
2210: 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5a 5f 4e 55  */..#define Z_NU
2220: 4c 4c 20 20 30 20 20 2f 2a 20 66 6f 72 20 69 6e  LL  0  /* for in
2230: 69 74 69 61 6c 69 7a 69 6e 67 20 7a 61 6c 6c 6f  itializing zallo
2240: 63 2c 20 7a 66 72 65 65 2c 20 6f 70 61 71 75 65  c, zfree, opaque
2250: 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 7a 6c 69   */..#define zli
2260: 62 5f 76 65 72 73 69 6f 6e 20 7a 6c 69 62 56 65  b_version zlibVe
2270: 72 73 69 6f 6e 28 29 0a 2f 2a 20 66 6f 72 20 63  rsion()./* for c
2280: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74  ompatibility wit
2290: 68 20 76 65 72 73 69 6f 6e 73 20 3c 20 31 2e 30  h versions < 1.0
22a0: 2e 32 20 2a 2f 0a 0a 0a 20 20 20 20 20 20 20 20  .2 */...        
22b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c0: 2f 2a 20 62 61 73 69 63 20 66 75 6e 63 74 69 6f  /* basic functio
22d0: 6e 73 20 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 63  ns */..ZEXTERN c
22e0: 6f 6e 73 74 20 63 68 61 72 20 2a 20 5a 45 58 50  onst char * ZEXP
22f0: 4f 52 54 20 7a 6c 69 62 56 65 72 73 69 6f 6e 20  ORT zlibVersion 
2300: 4f 46 28 28 76 6f 69 64 29 29 3b 0a 2f 2a 20 54  OF((void));./* T
2310: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63  he application c
2320: 61 6e 20 63 6f 6d 70 61 72 65 20 7a 6c 69 62 56  an compare zlibV
2330: 65 72 73 69 6f 6e 20 61 6e 64 20 5a 4c 49 42 5f  ersion and ZLIB_
2340: 56 45 52 53 49 4f 4e 20 66 6f 72 20 63 6f 6e 73  VERSION for cons
2350: 69 73 74 65 6e 63 79 2e 0a 20 20 20 49 66 20 74  istency..   If t
2360: 68 65 20 66 69 72 73 74 20 63 68 61 72 61 63 74  he first charact
2370: 65 72 20 64 69 66 66 65 72 73 2c 20 74 68 65 20  er differs, the 
2380: 6c 69 62 72 61 72 79 20 63 6f 64 65 20 61 63 74  library code act
2390: 75 61 6c 6c 79 20 75 73 65 64 20 69 73 20 6e 6f  ually used is no
23a0: 74 0a 20 20 20 63 6f 6d 70 61 74 69 62 6c 65 20  t.   compatible 
23b0: 77 69 74 68 20 74 68 65 20 7a 6c 69 62 2e 68 20  with the zlib.h 
23c0: 68 65 61 64 65 72 20 66 69 6c 65 20 75 73 65 64  header file used
23d0: 20 62 79 20 74 68 65 20 61 70 70 6c 69 63 61 74   by the applicat
23e0: 69 6f 6e 2e 20 20 54 68 69 73 20 63 68 65 63 6b  ion.  This check
23f0: 0a 20 20 20 69 73 20 61 75 74 6f 6d 61 74 69 63  .   is automatic
2400: 61 6c 6c 79 20 6d 61 64 65 20 62 79 20 64 65 66  ally made by def
2410: 6c 61 74 65 49 6e 69 74 20 61 6e 64 20 69 6e 66  lateInit and inf
2420: 6c 61 74 65 49 6e 69 74 2e 0a 20 2a 2f 0a 0a 2f  lateInit.. */../
2430: 2a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45  *.ZEXTERN int ZE
2440: 58 50 4f 52 54 20 64 65 66 6c 61 74 65 49 6e 69  XPORT deflateIni
2450: 74 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70 20  t OF((z_streamp 
2460: 73 74 72 6d 2c 20 69 6e 74 20 6c 65 76 65 6c 29  strm, int level)
2470: 29 3b 0a 0a 20 20 20 20 20 49 6e 69 74 69 61 6c  );..     Initial
2480: 69 7a 65 73 20 74 68 65 20 69 6e 74 65 72 6e 61  izes the interna
2490: 6c 20 73 74 72 65 61 6d 20 73 74 61 74 65 20 66  l stream state f
24a0: 6f 72 20 63 6f 6d 70 72 65 73 73 69 6f 6e 2e 20  or compression. 
24b0: 20 54 68 65 20 66 69 65 6c 64 73 0a 20 20 20 7a   The fields.   z
24c0: 61 6c 6c 6f 63 2c 20 7a 66 72 65 65 20 61 6e 64  alloc, zfree and
24d0: 20 6f 70 61 71 75 65 20 6d 75 73 74 20 62 65 20   opaque must be 
24e0: 69 6e 69 74 69 61 6c 69 7a 65 64 20 62 65 66 6f  initialized befo
24f0: 72 65 20 62 79 20 74 68 65 20 63 61 6c 6c 65 72  re by the caller
2500: 2e 20 20 49 66 0a 20 20 20 7a 61 6c 6c 6f 63 20  .  If.   zalloc 
2510: 61 6e 64 20 7a 66 72 65 65 20 61 72 65 20 73 65  and zfree are se
2520: 74 20 74 6f 20 5a 5f 4e 55 4c 4c 2c 20 64 65 66  t to Z_NULL, def
2530: 6c 61 74 65 49 6e 69 74 20 75 70 64 61 74 65 73  lateInit updates
2540: 20 74 68 65 6d 20 74 6f 20 75 73 65 20 64 65 66   them to use def
2550: 61 75 6c 74 0a 20 20 20 61 6c 6c 6f 63 61 74 69  ault.   allocati
2560: 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 0a 20  on functions... 
2570: 20 20 20 20 54 68 65 20 63 6f 6d 70 72 65 73 73      The compress
2580: 69 6f 6e 20 6c 65 76 65 6c 20 6d 75 73 74 20 62  ion level must b
2590: 65 20 5a 5f 44 45 46 41 55 4c 54 5f 43 4f 4d 50  e Z_DEFAULT_COMP
25a0: 52 45 53 53 49 4f 4e 2c 20 6f 72 20 62 65 74 77  RESSION, or betw
25b0: 65 65 6e 20 30 20 61 6e 64 20 39 3a 0a 20 20 20  een 0 and 9:.   
25c0: 31 20 67 69 76 65 73 20 62 65 73 74 20 73 70 65  1 gives best spe
25d0: 65 64 2c 20 39 20 67 69 76 65 73 20 62 65 73 74  ed, 9 gives best
25e0: 20 63 6f 6d 70 72 65 73 73 69 6f 6e 2c 20 30 20   compression, 0 
25f0: 67 69 76 65 73 20 6e 6f 20 63 6f 6d 70 72 65 73  gives no compres
2600: 73 69 6f 6e 20 61 74 20 61 6c 6c 0a 20 20 20 28  sion at all.   (
2610: 74 68 65 20 69 6e 70 75 74 20 64 61 74 61 20 69  the input data i
2620: 73 20 73 69 6d 70 6c 79 20 63 6f 70 69 65 64 20  s simply copied 
2630: 61 20 62 6c 6f 63 6b 20 61 74 20 61 20 74 69 6d  a block at a tim
2640: 65 29 2e 20 20 5a 5f 44 45 46 41 55 4c 54 5f 43  e).  Z_DEFAULT_C
2650: 4f 4d 50 52 45 53 53 49 4f 4e 0a 20 20 20 72 65  OMPRESSION.   re
2660: 71 75 65 73 74 73 20 61 20 64 65 66 61 75 6c 74  quests a default
2670: 20 63 6f 6d 70 72 6f 6d 69 73 65 20 62 65 74 77   compromise betw
2680: 65 65 6e 20 73 70 65 65 64 20 61 6e 64 20 63 6f  een speed and co
2690: 6d 70 72 65 73 73 69 6f 6e 20 28 63 75 72 72 65  mpression (curre
26a0: 6e 74 6c 79 0a 20 20 20 65 71 75 69 76 61 6c 65  ntly.   equivale
26b0: 6e 74 20 74 6f 20 6c 65 76 65 6c 20 36 29 2e 0a  nt to level 6)..
26c0: 0a 20 20 20 20 20 64 65 66 6c 61 74 65 49 6e 69  .     deflateIni
26d0: 74 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20 69  t returns Z_OK i
26e0: 66 20 73 75 63 63 65 73 73 2c 20 5a 5f 4d 45 4d  f success, Z_MEM
26f0: 5f 45 52 52 4f 52 20 69 66 20 74 68 65 72 65 20  _ERROR if there 
2700: 77 61 73 20 6e 6f 74 20 65 6e 6f 75 67 68 0a 20  was not enough. 
2710: 20 20 6d 65 6d 6f 72 79 2c 20 5a 5f 53 54 52 45    memory, Z_STRE
2720: 41 4d 5f 45 52 52 4f 52 20 69 66 20 6c 65 76 65  AM_ERROR if leve
2730: 6c 20 69 73 20 6e 6f 74 20 61 20 76 61 6c 69 64  l is not a valid
2740: 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c 65 76   compression lev
2750: 65 6c 2c 20 6f 72 0a 20 20 20 5a 5f 56 45 52 53  el, or.   Z_VERS
2760: 49 4f 4e 5f 45 52 52 4f 52 20 69 66 20 74 68 65  ION_ERROR if the
2770: 20 7a 6c 69 62 20 6c 69 62 72 61 72 79 20 76 65   zlib library ve
2780: 72 73 69 6f 6e 20 28 7a 6c 69 62 5f 76 65 72 73  rsion (zlib_vers
2790: 69 6f 6e 29 20 69 73 20 69 6e 63 6f 6d 70 61 74  ion) is incompat
27a0: 69 62 6c 65 0a 20 20 20 77 69 74 68 20 74 68 65  ible.   with the
27b0: 20 76 65 72 73 69 6f 6e 20 61 73 73 75 6d 65 64   version assumed
27c0: 20 62 79 20 74 68 65 20 63 61 6c 6c 65 72 20 28   by the caller (
27d0: 5a 4c 49 42 5f 56 45 52 53 49 4f 4e 29 2e 20 20  ZLIB_VERSION).  
27e0: 6d 73 67 20 69 73 20 73 65 74 20 74 6f 20 6e 75  msg is set to nu
27f0: 6c 6c 0a 20 20 20 69 66 20 74 68 65 72 65 20 69  ll.   if there i
2800: 73 20 6e 6f 20 65 72 72 6f 72 20 6d 65 73 73 61  s no error messa
2810: 67 65 2e 20 20 64 65 66 6c 61 74 65 49 6e 69 74  ge.  deflateInit
2820: 20 64 6f 65 73 20 6e 6f 74 20 70 65 72 66 6f 72   does not perfor
2830: 6d 20 61 6e 79 20 63 6f 6d 70 72 65 73 73 69 6f  m any compressio
2840: 6e 3a 0a 20 20 20 74 68 69 73 20 77 69 6c 6c 20  n:.   this will 
2850: 62 65 20 64 6f 6e 65 20 62 79 20 64 65 66 6c 61  be done by defla
2860: 74 65 28 29 2e 0a 2a 2f 0a 0a 0a 5a 45 58 54 45  te()..*/...ZEXTE
2870: 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 64  RN int ZEXPORT d
2880: 65 66 6c 61 74 65 20 4f 46 28 28 7a 5f 73 74 72  eflate OF((z_str
2890: 65 61 6d 70 20 73 74 72 6d 2c 20 69 6e 74 20 66  eamp strm, int f
28a0: 6c 75 73 68 29 29 3b 0a 2f 2a 0a 20 20 20 20 64  lush));./*.    d
28b0: 65 66 6c 61 74 65 20 63 6f 6d 70 72 65 73 73 65  eflate compresse
28c0: 73 20 61 73 20 6d 75 63 68 20 64 61 74 61 20 61  s as much data a
28d0: 73 20 70 6f 73 73 69 62 6c 65 2c 20 61 6e 64 20  s possible, and 
28e0: 73 74 6f 70 73 20 77 68 65 6e 20 74 68 65 20 69  stops when the i
28f0: 6e 70 75 74 0a 20 20 62 75 66 66 65 72 20 62 65  nput.  buffer be
2900: 63 6f 6d 65 73 20 65 6d 70 74 79 20 6f 72 20 74  comes empty or t
2910: 68 65 20 6f 75 74 70 75 74 20 62 75 66 66 65 72  he output buffer
2920: 20 62 65 63 6f 6d 65 73 20 66 75 6c 6c 2e 20 20   becomes full.  
2930: 49 74 20 6d 61 79 20 69 6e 74 72 6f 64 75 63 65  It may introduce
2940: 0a 20 20 73 6f 6d 65 20 6f 75 74 70 75 74 20 6c  .  some output l
2950: 61 74 65 6e 63 79 20 28 72 65 61 64 69 6e 67 20  atency (reading 
2960: 69 6e 70 75 74 20 77 69 74 68 6f 75 74 20 70 72  input without pr
2970: 6f 64 75 63 69 6e 67 20 61 6e 79 20 6f 75 74 70  oducing any outp
2980: 75 74 29 20 65 78 63 65 70 74 20 77 68 65 6e 0a  ut) except when.
2990: 20 20 66 6f 72 63 65 64 20 74 6f 20 66 6c 75 73    forced to flus
29a0: 68 2e 0a 0a 20 20 20 20 54 68 65 20 64 65 74 61  h...    The deta
29b0: 69 6c 65 64 20 73 65 6d 61 6e 74 69 63 73 20 61  iled semantics a
29c0: 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73 2e 20 20  re as follows.  
29d0: 64 65 66 6c 61 74 65 20 70 65 72 66 6f 72 6d 73  deflate performs
29e0: 20 6f 6e 65 20 6f 72 20 62 6f 74 68 20 6f 66 20   one or both of 
29f0: 74 68 65 0a 20 20 66 6f 6c 6c 6f 77 69 6e 67 20  the.  following 
2a00: 61 63 74 69 6f 6e 73 3a 0a 0a 20 20 2d 20 43 6f  actions:..  - Co
2a10: 6d 70 72 65 73 73 20 6d 6f 72 65 20 69 6e 70 75  mpress more inpu
2a20: 74 20 73 74 61 72 74 69 6e 67 20 61 74 20 6e 65  t starting at ne
2a30: 78 74 5f 69 6e 20 61 6e 64 20 75 70 64 61 74 65  xt_in and update
2a40: 20 6e 65 78 74 5f 69 6e 20 61 6e 64 20 61 76 61   next_in and ava
2a50: 69 6c 5f 69 6e 0a 20 20 20 20 61 63 63 6f 72 64  il_in.    accord
2a60: 69 6e 67 6c 79 2e 20 20 49 66 20 6e 6f 74 20 61  ingly.  If not a
2a70: 6c 6c 20 69 6e 70 75 74 20 63 61 6e 20 62 65 20  ll input can be 
2a80: 70 72 6f 63 65 73 73 65 64 20 28 62 65 63 61 75  processed (becau
2a90: 73 65 20 74 68 65 72 65 20 69 73 20 6e 6f 74 0a  se there is not.
2aa0: 20 20 20 20 65 6e 6f 75 67 68 20 72 6f 6f 6d 20      enough room 
2ab0: 69 6e 20 74 68 65 20 6f 75 74 70 75 74 20 62 75  in the output bu
2ac0: 66 66 65 72 29 2c 20 6e 65 78 74 5f 69 6e 20 61  ffer), next_in a
2ad0: 6e 64 20 61 76 61 69 6c 5f 69 6e 20 61 72 65 20  nd avail_in are 
2ae0: 75 70 64 61 74 65 64 20 61 6e 64 0a 20 20 20 20  updated and.    
2af0: 70 72 6f 63 65 73 73 69 6e 67 20 77 69 6c 6c 20  processing will 
2b00: 72 65 73 75 6d 65 20 61 74 20 74 68 69 73 20 70  resume at this p
2b10: 6f 69 6e 74 20 66 6f 72 20 74 68 65 20 6e 65 78  oint for the nex
2b20: 74 20 63 61 6c 6c 20 6f 66 20 64 65 66 6c 61 74  t call of deflat
2b30: 65 28 29 2e 0a 0a 20 20 2d 20 50 72 6f 76 69 64  e()...  - Provid
2b40: 65 20 6d 6f 72 65 20 6f 75 74 70 75 74 20 73 74  e more output st
2b50: 61 72 74 69 6e 67 20 61 74 20 6e 65 78 74 5f 6f  arting at next_o
2b60: 75 74 20 61 6e 64 20 75 70 64 61 74 65 20 6e 65  ut and update ne
2b70: 78 74 5f 6f 75 74 20 61 6e 64 20 61 76 61 69 6c  xt_out and avail
2b80: 5f 6f 75 74 0a 20 20 20 20 61 63 63 6f 72 64 69  _out.    accordi
2b90: 6e 67 6c 79 2e 20 20 54 68 69 73 20 61 63 74 69  ngly.  This acti
2ba0: 6f 6e 20 69 73 20 66 6f 72 63 65 64 20 69 66 20  on is forced if 
2bb0: 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 66 6c  the parameter fl
2bc0: 75 73 68 20 69 73 20 6e 6f 6e 20 7a 65 72 6f 2e  ush is non zero.
2bd0: 0a 20 20 20 20 46 6f 72 63 69 6e 67 20 66 6c 75  .    Forcing flu
2be0: 73 68 20 66 72 65 71 75 65 6e 74 6c 79 20 64 65  sh frequently de
2bf0: 67 72 61 64 65 73 20 74 68 65 20 63 6f 6d 70 72  grades the compr
2c00: 65 73 73 69 6f 6e 20 72 61 74 69 6f 2c 20 73 6f  ession ratio, so
2c10: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 0a   this parameter.
2c20: 20 20 20 20 73 68 6f 75 6c 64 20 62 65 20 73 65      should be se
2c30: 74 20 6f 6e 6c 79 20 77 68 65 6e 20 6e 65 63 65  t only when nece
2c40: 73 73 61 72 79 20 28 69 6e 20 69 6e 74 65 72 61  ssary (in intera
2c50: 63 74 69 76 65 20 61 70 70 6c 69 63 61 74 69 6f  ctive applicatio
2c60: 6e 73 29 2e 20 20 53 6f 6d 65 0a 20 20 20 20 6f  ns).  Some.    o
2c70: 75 74 70 75 74 20 6d 61 79 20 62 65 20 70 72 6f  utput may be pro
2c80: 76 69 64 65 64 20 65 76 65 6e 20 69 66 20 66 6c  vided even if fl
2c90: 75 73 68 20 69 73 20 6e 6f 74 20 73 65 74 2e 0a  ush is not set..
2ca0: 0a 20 20 20 20 42 65 66 6f 72 65 20 74 68 65 20  .    Before the 
2cb0: 63 61 6c 6c 20 6f 66 20 64 65 66 6c 61 74 65 28  call of deflate(
2cc0: 29 2c 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  ), the applicati
2cd0: 6f 6e 20 73 68 6f 75 6c 64 20 65 6e 73 75 72 65  on should ensure
2ce0: 20 74 68 61 74 20 61 74 20 6c 65 61 73 74 0a 20   that at least. 
2cf0: 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 63 74 69   one of the acti
2d00: 6f 6e 73 20 69 73 20 70 6f 73 73 69 62 6c 65 2c  ons is possible,
2d10: 20 62 79 20 70 72 6f 76 69 64 69 6e 67 20 6d 6f   by providing mo
2d20: 72 65 20 69 6e 70 75 74 20 61 6e 64 2f 6f 72 20  re input and/or 
2d30: 63 6f 6e 73 75 6d 69 6e 67 20 6d 6f 72 65 0a 20  consuming more. 
2d40: 20 6f 75 74 70 75 74 2c 20 61 6e 64 20 75 70 64   output, and upd
2d50: 61 74 69 6e 67 20 61 76 61 69 6c 5f 69 6e 20 6f  ating avail_in o
2d60: 72 20 61 76 61 69 6c 5f 6f 75 74 20 61 63 63 6f  r avail_out acco
2d70: 72 64 69 6e 67 6c 79 3b 20 61 76 61 69 6c 5f 6f  rdingly; avail_o
2d80: 75 74 20 73 68 6f 75 6c 64 0a 20 20 6e 65 76 65  ut should.  neve
2d90: 72 20 62 65 20 7a 65 72 6f 20 62 65 66 6f 72 65  r be zero before
2da0: 20 74 68 65 20 63 61 6c 6c 2e 20 20 54 68 65 20   the call.  The 
2db0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 61 6e 20  application can 
2dc0: 63 6f 6e 73 75 6d 65 20 74 68 65 20 63 6f 6d 70  consume the comp
2dd0: 72 65 73 73 65 64 0a 20 20 6f 75 74 70 75 74 20  ressed.  output 
2de0: 77 68 65 6e 20 69 74 20 77 61 6e 74 73 2c 20 66  when it wants, f
2df0: 6f 72 20 65 78 61 6d 70 6c 65 20 77 68 65 6e 20  or example when 
2e00: 74 68 65 20 6f 75 74 70 75 74 20 62 75 66 66 65  the output buffe
2e10: 72 20 69 73 20 66 75 6c 6c 20 28 61 76 61 69 6c  r is full (avail
2e20: 5f 6f 75 74 0a 20 20 3d 3d 20 30 29 2c 20 6f 72  _out.  == 0), or
2e30: 20 61 66 74 65 72 20 65 61 63 68 20 63 61 6c 6c   after each call
2e40: 20 6f 66 20 64 65 66 6c 61 74 65 28 29 2e 20 20   of deflate().  
2e50: 49 66 20 64 65 66 6c 61 74 65 20 72 65 74 75 72  If deflate retur
2e60: 6e 73 20 5a 5f 4f 4b 20 61 6e 64 20 77 69 74 68  ns Z_OK and with
2e70: 0a 20 20 7a 65 72 6f 20 61 76 61 69 6c 5f 6f 75  .  zero avail_ou
2e80: 74 2c 20 69 74 20 6d 75 73 74 20 62 65 20 63 61  t, it must be ca
2e90: 6c 6c 65 64 20 61 67 61 69 6e 20 61 66 74 65 72  lled again after
2ea0: 20 6d 61 6b 69 6e 67 20 72 6f 6f 6d 20 69 6e 20   making room in 
2eb0: 74 68 65 20 6f 75 74 70 75 74 0a 20 20 62 75 66  the output.  buf
2ec0: 66 65 72 20 62 65 63 61 75 73 65 20 74 68 65 72  fer because ther
2ed0: 65 20 6d 69 67 68 74 20 62 65 20 6d 6f 72 65 20  e might be more 
2ee0: 6f 75 74 70 75 74 20 70 65 6e 64 69 6e 67 2e 0a  output pending..
2ef0: 0a 20 20 20 20 4e 6f 72 6d 61 6c 6c 79 20 74 68  .    Normally th
2f00: 65 20 70 61 72 61 6d 65 74 65 72 20 66 6c 75 73  e parameter flus
2f10: 68 20 69 73 20 73 65 74 20 74 6f 20 5a 5f 4e 4f  h is set to Z_NO
2f20: 5f 46 4c 55 53 48 2c 20 77 68 69 63 68 20 61 6c  _FLUSH, which al
2f30: 6c 6f 77 73 20 64 65 66 6c 61 74 65 20 74 6f 0a  lows deflate to.
2f40: 20 20 64 65 63 69 64 65 20 68 6f 77 20 6d 75 63    decide how muc
2f50: 68 20 64 61 74 61 20 74 6f 20 61 63 63 75 6d 75  h data to accumu
2f60: 6c 61 74 65 20 62 65 66 6f 72 65 20 70 72 6f 64  late before prod
2f70: 75 63 69 6e 67 20 6f 75 74 70 75 74 2c 20 69 6e  ucing output, in
2f80: 20 6f 72 64 65 72 20 74 6f 0a 20 20 6d 61 78 69   order to.  maxi
2f90: 6d 69 7a 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e  mize compression
2fa0: 2e 0a 0a 20 20 20 20 49 66 20 74 68 65 20 70 61  ...    If the pa
2fb0: 72 61 6d 65 74 65 72 20 66 6c 75 73 68 20 69 73  rameter flush is
2fc0: 20 73 65 74 20 74 6f 20 5a 5f 53 59 4e 43 5f 46   set to Z_SYNC_F
2fd0: 4c 55 53 48 2c 20 61 6c 6c 20 70 65 6e 64 69 6e  LUSH, all pendin
2fe0: 67 20 6f 75 74 70 75 74 20 69 73 0a 20 20 66 6c  g output is.  fl
2ff0: 75 73 68 65 64 20 74 6f 20 74 68 65 20 6f 75 74  ushed to the out
3000: 70 75 74 20 62 75 66 66 65 72 20 61 6e 64 20 74  put buffer and t
3010: 68 65 20 6f 75 74 70 75 74 20 69 73 20 61 6c 69  he output is ali
3020: 67 6e 65 64 20 6f 6e 20 61 20 62 79 74 65 20 62  gned on a byte b
3030: 6f 75 6e 64 61 72 79 2c 20 73 6f 0a 20 20 74 68  oundary, so.  th
3040: 61 74 20 74 68 65 20 64 65 63 6f 6d 70 72 65 73  at the decompres
3050: 73 6f 72 20 63 61 6e 20 67 65 74 20 61 6c 6c 20  sor can get all 
3060: 69 6e 70 75 74 20 64 61 74 61 20 61 76 61 69 6c  input data avail
3070: 61 62 6c 65 20 73 6f 20 66 61 72 2e 20 20 28 49  able so far.  (I
3080: 6e 0a 20 20 70 61 72 74 69 63 75 6c 61 72 20 61  n.  particular a
3090: 76 61 69 6c 5f 69 6e 20 69 73 20 7a 65 72 6f 20  vail_in is zero 
30a0: 61 66 74 65 72 20 74 68 65 20 63 61 6c 6c 20 69  after the call i
30b0: 66 20 65 6e 6f 75 67 68 20 6f 75 74 70 75 74 20  f enough output 
30c0: 73 70 61 63 65 20 68 61 73 20 62 65 65 6e 0a 20  space has been. 
30d0: 20 70 72 6f 76 69 64 65 64 20 62 65 66 6f 72 65   provided before
30e0: 20 74 68 65 20 63 61 6c 6c 2e 29 20 46 6c 75 73   the call.) Flus
30f0: 68 69 6e 67 20 6d 61 79 20 64 65 67 72 61 64 65  hing may degrade
3100: 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 66 6f 72   compression for
3110: 20 73 6f 6d 65 0a 20 20 63 6f 6d 70 72 65 73 73   some.  compress
3120: 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 73 20 61  ion algorithms a
3130: 6e 64 20 73 6f 20 69 74 20 73 68 6f 75 6c 64 20  nd so it should 
3140: 62 65 20 75 73 65 64 20 6f 6e 6c 79 20 77 68 65  be used only whe
3150: 6e 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68  n necessary.  Th
3160: 69 73 0a 20 20 63 6f 6d 70 6c 65 74 65 73 20 74  is.  completes t
3170: 68 65 20 63 75 72 72 65 6e 74 20 64 65 66 6c 61  he current defla
3180: 74 65 20 62 6c 6f 63 6b 20 61 6e 64 20 66 6f 6c  te block and fol
3190: 6c 6f 77 73 20 69 74 20 77 69 74 68 20 61 6e 20  lows it with an 
31a0: 65 6d 70 74 79 20 73 74 6f 72 65 64 20 62 6c 6f  empty stored blo
31b0: 63 6b 0a 20 20 74 68 61 74 20 69 73 20 74 68 72  ck.  that is thr
31c0: 65 65 20 62 69 74 73 20 70 6c 75 73 20 66 69 6c  ee bits plus fil
31d0: 6c 65 72 20 62 69 74 73 20 74 6f 20 74 68 65 20  ler bits to the 
31e0: 6e 65 78 74 20 62 79 74 65 2c 20 66 6f 6c 6c 6f  next byte, follo
31f0: 77 65 64 20 62 79 20 66 6f 75 72 20 62 79 74 65  wed by four byte
3200: 73 0a 20 20 28 30 30 20 30 30 20 66 66 20 66 66  s.  (00 00 ff ff
3210: 29 2e 0a 0a 20 20 20 20 49 66 20 66 6c 75 73 68  )...    If flush
3220: 20 69 73 20 73 65 74 20 74 6f 20 5a 5f 50 41 52   is set to Z_PAR
3230: 54 49 41 4c 5f 46 4c 55 53 48 2c 20 61 6c 6c 20  TIAL_FLUSH, all 
3240: 70 65 6e 64 69 6e 67 20 6f 75 74 70 75 74 20 69  pending output i
3250: 73 20 66 6c 75 73 68 65 64 20 74 6f 20 74 68 65  s flushed to the
3260: 0a 20 20 6f 75 74 70 75 74 20 62 75 66 66 65 72  .  output buffer
3270: 2c 20 62 75 74 20 74 68 65 20 6f 75 74 70 75 74  , but the output
3280: 20 69 73 20 6e 6f 74 20 61 6c 69 67 6e 65 64 20   is not aligned 
3290: 74 6f 20 61 20 62 79 74 65 20 62 6f 75 6e 64 61  to a byte bounda
32a0: 72 79 2e 20 20 41 6c 6c 20 6f 66 20 74 68 65 0a  ry.  All of the.
32b0: 20 20 69 6e 70 75 74 20 64 61 74 61 20 73 6f 20    input data so 
32c0: 66 61 72 20 77 69 6c 6c 20 62 65 20 61 76 61 69  far will be avai
32d0: 6c 61 62 6c 65 20 74 6f 20 74 68 65 20 64 65 63  lable to the dec
32e0: 6f 6d 70 72 65 73 73 6f 72 2c 20 61 73 20 66 6f  ompressor, as fo
32f0: 72 20 5a 5f 53 59 4e 43 5f 46 4c 55 53 48 2e 0a  r Z_SYNC_FLUSH..
3300: 20 20 54 68 69 73 20 63 6f 6d 70 6c 65 74 65 73    This completes
3310: 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 65 66   the current def
3320: 6c 61 74 65 20 62 6c 6f 63 6b 20 61 6e 64 20 66  late block and f
3330: 6f 6c 6c 6f 77 73 20 69 74 20 77 69 74 68 20 61  ollows it with a
3340: 6e 20 65 6d 70 74 79 20 66 69 78 65 64 0a 20 20  n empty fixed.  
3350: 63 6f 64 65 73 20 62 6c 6f 63 6b 20 74 68 61 74  codes block that
3360: 20 69 73 20 31 30 20 62 69 74 73 20 6c 6f 6e 67   is 10 bits long
3370: 2e 20 20 54 68 69 73 20 61 73 73 75 72 65 73 20  .  This assures 
3380: 74 68 61 74 20 65 6e 6f 75 67 68 20 62 79 74 65  that enough byte
3390: 73 20 61 72 65 20 6f 75 74 70 75 74 0a 20 20 69  s are output.  i
33a0: 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65 20  n order for the 
33b0: 64 65 63 6f 6d 70 72 65 73 73 6f 72 20 74 6f 20  decompressor to 
33c0: 66 69 6e 69 73 68 20 74 68 65 20 62 6c 6f 63 6b  finish the block
33d0: 20 62 65 66 6f 72 65 20 74 68 65 20 65 6d 70 74   before the empt
33e0: 79 20 66 69 78 65 64 20 63 6f 64 65 0a 20 20 62  y fixed code.  b
33f0: 6c 6f 63 6b 2e 0a 0a 20 20 20 20 49 66 20 66 6c  lock...    If fl
3400: 75 73 68 20 69 73 20 73 65 74 20 74 6f 20 5a 5f  ush is set to Z_
3410: 42 4c 4f 43 4b 2c 20 61 20 64 65 66 6c 61 74 65  BLOCK, a deflate
3420: 20 62 6c 6f 63 6b 20 69 73 20 63 6f 6d 70 6c 65   block is comple
3430: 74 65 64 20 61 6e 64 20 65 6d 69 74 74 65 64 2c  ted and emitted,
3440: 20 61 73 0a 20 20 66 6f 72 20 5a 5f 53 59 4e 43   as.  for Z_SYNC
3450: 5f 46 4c 55 53 48 2c 20 62 75 74 20 74 68 65 20  _FLUSH, but the 
3460: 6f 75 74 70 75 74 20 69 73 20 6e 6f 74 20 61 6c  output is not al
3470: 69 67 6e 65 64 20 6f 6e 20 61 20 62 79 74 65 20  igned on a byte 
3480: 62 6f 75 6e 64 61 72 79 2c 20 61 6e 64 20 75 70  boundary, and up
3490: 20 74 6f 0a 20 20 73 65 76 65 6e 20 62 69 74 73   to.  seven bits
34a0: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
34b0: 62 6c 6f 63 6b 20 61 72 65 20 68 65 6c 64 20 74  block are held t
34c0: 6f 20 62 65 20 77 72 69 74 74 65 6e 20 61 73 20  o be written as 
34d0: 74 68 65 20 6e 65 78 74 20 62 79 74 65 20 61 66  the next byte af
34e0: 74 65 72 0a 20 20 74 68 65 20 6e 65 78 74 20 64  ter.  the next d
34f0: 65 66 6c 61 74 65 20 62 6c 6f 63 6b 20 69 73 20  eflate block is 
3500: 63 6f 6d 70 6c 65 74 65 64 2e 20 20 49 6e 20 74  completed.  In t
3510: 68 69 73 20 63 61 73 65 2c 20 74 68 65 20 64 65  his case, the de
3520: 63 6f 6d 70 72 65 73 73 6f 72 20 6d 61 79 20 6e  compressor may n
3530: 6f 74 0a 20 20 62 65 20 70 72 6f 76 69 64 65 64  ot.  be provided
3540: 20 65 6e 6f 75 67 68 20 62 69 74 73 20 61 74 20   enough bits at 
3550: 74 68 69 73 20 70 6f 69 6e 74 20 69 6e 20 6f 72  this point in or
3560: 64 65 72 20 74 6f 20 63 6f 6d 70 6c 65 74 65 20  der to complete 
3570: 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6f 66  decompression of
3580: 0a 20 20 74 68 65 20 64 61 74 61 20 70 72 6f 76  .  the data prov
3590: 69 64 65 64 20 73 6f 20 66 61 72 20 74 6f 20 74  ided so far to t
35a0: 68 65 20 63 6f 6d 70 72 65 73 73 6f 72 2e 20 20  he compressor.  
35b0: 49 74 20 6d 61 79 20 6e 65 65 64 20 74 6f 20 77  It may need to w
35c0: 61 69 74 20 66 6f 72 20 74 68 65 20 6e 65 78 74  ait for the next
35d0: 0a 20 20 62 6c 6f 63 6b 20 74 6f 20 62 65 20 65  .  block to be e
35e0: 6d 69 74 74 65 64 2e 20 20 54 68 69 73 20 69 73  mitted.  This is
35f0: 20 66 6f 72 20 61 64 76 61 6e 63 65 64 20 61 70   for advanced ap
3600: 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20  plications that 
3610: 6e 65 65 64 20 74 6f 20 63 6f 6e 74 72 6f 6c 0a  need to control.
3620: 20 20 74 68 65 20 65 6d 69 73 73 69 6f 6e 20 6f    the emission o
3630: 66 20 64 65 66 6c 61 74 65 20 62 6c 6f 63 6b 73  f deflate blocks
3640: 2e 0a 0a 20 20 20 20 49 66 20 66 6c 75 73 68 20  ...    If flush 
3650: 69 73 20 73 65 74 20 74 6f 20 5a 5f 46 55 4c 4c  is set to Z_FULL
3660: 5f 46 4c 55 53 48 2c 20 61 6c 6c 20 6f 75 74 70  _FLUSH, all outp
3670: 75 74 20 69 73 20 66 6c 75 73 68 65 64 20 61 73  ut is flushed as
3680: 20 77 69 74 68 0a 20 20 5a 5f 53 59 4e 43 5f 46   with.  Z_SYNC_F
3690: 4c 55 53 48 2c 20 61 6e 64 20 74 68 65 20 63 6f  LUSH, and the co
36a0: 6d 70 72 65 73 73 69 6f 6e 20 73 74 61 74 65 20  mpression state 
36b0: 69 73 20 72 65 73 65 74 20 73 6f 20 74 68 61 74  is reset so that
36c0: 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 63   decompression c
36d0: 61 6e 0a 20 20 72 65 73 74 61 72 74 20 66 72 6f  an.  restart fro
36e0: 6d 20 74 68 69 73 20 70 6f 69 6e 74 20 69 66 20  m this point if 
36f0: 70 72 65 76 69 6f 75 73 20 63 6f 6d 70 72 65 73  previous compres
3700: 73 65 64 20 64 61 74 61 20 68 61 73 20 62 65 65  sed data has bee
3710: 6e 20 64 61 6d 61 67 65 64 20 6f 72 20 69 66 0a  n damaged or if.
3720: 20 20 72 61 6e 64 6f 6d 20 61 63 63 65 73 73 20    random access 
3730: 69 73 20 64 65 73 69 72 65 64 2e 20 20 55 73 69  is desired.  Usi
3740: 6e 67 20 5a 5f 46 55 4c 4c 5f 46 4c 55 53 48 20  ng Z_FULL_FLUSH 
3750: 74 6f 6f 20 6f 66 74 65 6e 20 63 61 6e 20 73 65  too often can se
3760: 72 69 6f 75 73 6c 79 20 64 65 67 72 61 64 65 0a  riously degrade.
3770: 20 20 63 6f 6d 70 72 65 73 73 69 6f 6e 2e 0a 0a    compression...
3780: 20 20 20 20 49 66 20 64 65 66 6c 61 74 65 20 72      If deflate r
3790: 65 74 75 72 6e 73 20 77 69 74 68 20 61 76 61 69  eturns with avai
37a0: 6c 5f 6f 75 74 20 3d 3d 20 30 2c 20 74 68 69 73  l_out == 0, this
37b0: 20 66 75 6e 63 74 69 6f 6e 20 6d 75 73 74 20 62   function must b
37c0: 65 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 0a 20  e called again. 
37d0: 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 76   with the same v
37e0: 61 6c 75 65 20 6f 66 20 74 68 65 20 66 6c 75 73  alue of the flus
37f0: 68 20 70 61 72 61 6d 65 74 65 72 20 61 6e 64 20  h parameter and 
3800: 6d 6f 72 65 20 6f 75 74 70 75 74 20 73 70 61 63  more output spac
3810: 65 20 28 75 70 64 61 74 65 64 0a 20 20 61 76 61  e (updated.  ava
3820: 69 6c 5f 6f 75 74 29 2c 20 75 6e 74 69 6c 20 74  il_out), until t
3830: 68 65 20 66 6c 75 73 68 20 69 73 20 63 6f 6d 70  he flush is comp
3840: 6c 65 74 65 20 28 64 65 66 6c 61 74 65 20 72 65  lete (deflate re
3850: 74 75 72 6e 73 20 77 69 74 68 20 6e 6f 6e 2d 7a  turns with non-z
3860: 65 72 6f 0a 20 20 61 76 61 69 6c 5f 6f 75 74 29  ero.  avail_out)
3870: 2e 20 20 49 6e 20 74 68 65 20 63 61 73 65 20 6f  .  In the case o
3880: 66 20 61 20 5a 5f 46 55 4c 4c 5f 46 4c 55 53 48  f a Z_FULL_FLUSH
3890: 20 6f 72 20 5a 5f 53 59 4e 43 5f 46 4c 55 53 48   or Z_SYNC_FLUSH
38a0: 2c 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74  , make sure that
38b0: 0a 20 20 61 76 61 69 6c 5f 6f 75 74 20 69 73 20  .  avail_out is 
38c0: 67 72 65 61 74 65 72 20 74 68 61 6e 20 73 69 78  greater than six
38d0: 20 74 6f 20 61 76 6f 69 64 20 72 65 70 65 61 74   to avoid repeat
38e0: 65 64 20 66 6c 75 73 68 20 6d 61 72 6b 65 72 73  ed flush markers
38f0: 20 64 75 65 20 74 6f 0a 20 20 61 76 61 69 6c 5f   due to.  avail_
3900: 6f 75 74 20 3d 3d 20 30 20 6f 6e 20 72 65 74 75  out == 0 on retu
3910: 72 6e 2e 0a 0a 20 20 20 20 49 66 20 74 68 65 20  rn...    If the 
3920: 70 61 72 61 6d 65 74 65 72 20 66 6c 75 73 68 20  parameter flush 
3930: 69 73 20 73 65 74 20 74 6f 20 5a 5f 46 49 4e 49  is set to Z_FINI
3940: 53 48 2c 20 70 65 6e 64 69 6e 67 20 69 6e 70 75  SH, pending inpu
3950: 74 20 69 73 20 70 72 6f 63 65 73 73 65 64 2c 0a  t is processed,.
3960: 20 20 70 65 6e 64 69 6e 67 20 6f 75 74 70 75 74    pending output
3970: 20 69 73 20 66 6c 75 73 68 65 64 20 61 6e 64 20   is flushed and 
3980: 64 65 66 6c 61 74 65 20 72 65 74 75 72 6e 73 20  deflate returns 
3990: 77 69 74 68 20 5a 5f 53 54 52 45 41 4d 5f 45 4e  with Z_STREAM_EN
39a0: 44 20 69 66 20 74 68 65 72 65 20 77 61 73 0a 20  D if there was. 
39b0: 20 65 6e 6f 75 67 68 20 6f 75 74 70 75 74 20 73   enough output s
39c0: 70 61 63 65 3b 20 69 66 20 64 65 66 6c 61 74 65  pace; if deflate
39d0: 20 72 65 74 75 72 6e 73 20 77 69 74 68 20 5a 5f   returns with Z_
39e0: 4f 4b 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f  OK, this functio
39f0: 6e 20 6d 75 73 74 20 62 65 0a 20 20 63 61 6c 6c  n must be.  call
3a00: 65 64 20 61 67 61 69 6e 20 77 69 74 68 20 5a 5f  ed again with Z_
3a10: 46 49 4e 49 53 48 20 61 6e 64 20 6d 6f 72 65 20  FINISH and more 
3a20: 6f 75 74 70 75 74 20 73 70 61 63 65 20 28 75 70  output space (up
3a30: 64 61 74 65 64 20 61 76 61 69 6c 5f 6f 75 74 29  dated avail_out)
3a40: 20 62 75 74 20 6e 6f 0a 20 20 6d 6f 72 65 20 69   but no.  more i
3a50: 6e 70 75 74 20 64 61 74 61 2c 20 75 6e 74 69 6c  nput data, until
3a60: 20 69 74 20 72 65 74 75 72 6e 73 20 77 69 74 68   it returns with
3a70: 20 5a 5f 53 54 52 45 41 4d 5f 45 4e 44 20 6f 72   Z_STREAM_END or
3a80: 20 61 6e 20 65 72 72 6f 72 2e 20 20 41 66 74 65   an error.  Afte
3a90: 72 0a 20 20 64 65 66 6c 61 74 65 20 68 61 73 20  r.  deflate has 
3aa0: 72 65 74 75 72 6e 65 64 20 5a 5f 53 54 52 45 41  returned Z_STREA
3ab0: 4d 5f 45 4e 44 2c 20 74 68 65 20 6f 6e 6c 79 20  M_END, the only 
3ac0: 70 6f 73 73 69 62 6c 65 20 6f 70 65 72 61 74 69  possible operati
3ad0: 6f 6e 73 20 6f 6e 20 74 68 65 20 73 74 72 65 61  ons on the strea
3ae0: 6d 0a 20 20 61 72 65 20 64 65 66 6c 61 74 65 52  m.  are deflateR
3af0: 65 73 65 74 20 6f 72 20 64 65 66 6c 61 74 65 45  eset or deflateE
3b00: 6e 64 2e 0a 0a 20 20 20 20 5a 5f 46 49 4e 49 53  nd...    Z_FINIS
3b10: 48 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6d  H can be used im
3b20: 6d 65 64 69 61 74 65 6c 79 20 61 66 74 65 72 20  mediately after 
3b30: 64 65 66 6c 61 74 65 49 6e 69 74 20 69 66 20 61  deflateInit if a
3b40: 6c 6c 20 74 68 65 20 63 6f 6d 70 72 65 73 73 69  ll the compressi
3b50: 6f 6e 0a 20 20 69 73 20 74 6f 20 62 65 20 64 6f  on.  is to be do
3b60: 6e 65 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 73  ne in a single s
3b70: 74 65 70 2e 20 20 49 6e 20 74 68 69 73 20 63 61  tep.  In this ca
3b80: 73 65 2c 20 61 76 61 69 6c 5f 6f 75 74 20 6d 75  se, avail_out mu
3b90: 73 74 20 62 65 20 61 74 20 6c 65 61 73 74 20 74  st be at least t
3ba0: 68 65 0a 20 20 76 61 6c 75 65 20 72 65 74 75 72  he.  value retur
3bb0: 6e 65 64 20 62 79 20 64 65 66 6c 61 74 65 42 6f  ned by deflateBo
3bc0: 75 6e 64 20 28 73 65 65 20 62 65 6c 6f 77 29 2e  und (see below).
3bd0: 20 20 54 68 65 6e 20 64 65 66 6c 61 74 65 20 69    Then deflate i
3be0: 73 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f 0a  s guaranteed to.
3bf0: 20 20 72 65 74 75 72 6e 20 5a 5f 53 54 52 45 41    return Z_STREA
3c00: 4d 5f 45 4e 44 2e 20 20 49 66 20 6e 6f 74 20 65  M_END.  If not e
3c10: 6e 6f 75 67 68 20 6f 75 74 70 75 74 20 73 70 61  nough output spa
3c20: 63 65 20 69 73 20 70 72 6f 76 69 64 65 64 2c 20  ce is provided, 
3c30: 64 65 66 6c 61 74 65 20 77 69 6c 6c 0a 20 20 6e  deflate will.  n
3c40: 6f 74 20 72 65 74 75 72 6e 20 5a 5f 53 54 52 45  ot return Z_STRE
3c50: 41 4d 5f 45 4e 44 2c 20 61 6e 64 20 69 74 20 6d  AM_END, and it m
3c60: 75 73 74 20 62 65 20 63 61 6c 6c 65 64 20 61 67  ust be called ag
3c70: 61 69 6e 20 61 73 20 64 65 73 63 72 69 62 65 64  ain as described
3c80: 20 61 62 6f 76 65 2e 0a 0a 20 20 20 20 64 65 66   above...    def
3c90: 6c 61 74 65 28 29 20 73 65 74 73 20 73 74 72 6d  late() sets strm
3ca0: 2d 3e 61 64 6c 65 72 20 74 6f 20 74 68 65 20 61  ->adler to the a
3cb0: 64 6c 65 72 33 32 20 63 68 65 63 6b 73 75 6d 20  dler32 checksum 
3cc0: 6f 66 20 61 6c 6c 20 69 6e 70 75 74 20 72 65 61  of all input rea
3cd0: 64 0a 20 20 73 6f 20 66 61 72 20 28 74 68 61 74  d.  so far (that
3ce0: 20 69 73 2c 20 74 6f 74 61 6c 5f 69 6e 20 62 79   is, total_in by
3cf0: 74 65 73 29 2e 0a 0a 20 20 20 20 64 65 66 6c 61  tes)...    defla
3d00: 74 65 28 29 20 6d 61 79 20 75 70 64 61 74 65 20  te() may update 
3d10: 73 74 72 6d 2d 3e 64 61 74 61 5f 74 79 70 65 20  strm->data_type 
3d20: 69 66 20 69 74 20 63 61 6e 20 6d 61 6b 65 20 61  if it can make a
3d30: 20 67 6f 6f 64 20 67 75 65 73 73 20 61 62 6f 75   good guess abou
3d40: 74 0a 20 20 74 68 65 20 69 6e 70 75 74 20 64 61  t.  the input da
3d50: 74 61 20 74 79 70 65 20 28 5a 5f 42 49 4e 41 52  ta type (Z_BINAR
3d60: 59 20 6f 72 20 5a 5f 54 45 58 54 29 2e 20 20 49  Y or Z_TEXT).  I
3d70: 6e 20 64 6f 75 62 74 2c 20 74 68 65 20 64 61 74  n doubt, the dat
3d80: 61 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64 0a  a is considered.
3d90: 20 20 62 69 6e 61 72 79 2e 20 20 54 68 69 73 20    binary.  This 
3da0: 66 69 65 6c 64 20 69 73 20 6f 6e 6c 79 20 66 6f  field is only fo
3db0: 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 70 75  r information pu
3dc0: 72 70 6f 73 65 73 20 61 6e 64 20 64 6f 65 73 20  rposes and does 
3dd0: 6e 6f 74 20 61 66 66 65 63 74 20 74 68 65 0a 20  not affect the. 
3de0: 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 61 6c 67   compression alg
3df0: 6f 72 69 74 68 6d 20 69 6e 20 61 6e 79 20 6d 61  orithm in any ma
3e00: 6e 6e 65 72 2e 0a 0a 20 20 20 20 64 65 66 6c 61  nner...    defla
3e10: 74 65 28 29 20 72 65 74 75 72 6e 73 20 5a 5f 4f  te() returns Z_O
3e20: 4b 20 69 66 20 73 6f 6d 65 20 70 72 6f 67 72 65  K if some progre
3e30: 73 73 20 68 61 73 20 62 65 65 6e 20 6d 61 64 65  ss has been made
3e40: 20 28 6d 6f 72 65 20 69 6e 70 75 74 0a 20 20 70   (more input.  p
3e50: 72 6f 63 65 73 73 65 64 20 6f 72 20 6d 6f 72 65  rocessed or more
3e60: 20 6f 75 74 70 75 74 20 70 72 6f 64 75 63 65 64   output produced
3e70: 29 2c 20 5a 5f 53 54 52 45 41 4d 5f 45 4e 44 20  ), Z_STREAM_END 
3e80: 69 66 20 61 6c 6c 20 69 6e 70 75 74 20 68 61 73  if all input has
3e90: 20 62 65 65 6e 0a 20 20 63 6f 6e 73 75 6d 65 64   been.  consumed
3ea0: 20 61 6e 64 20 61 6c 6c 20 6f 75 74 70 75 74 20   and all output 
3eb0: 68 61 73 20 62 65 65 6e 20 70 72 6f 64 75 63 65  has been produce
3ec0: 64 20 28 6f 6e 6c 79 20 77 68 65 6e 20 66 6c 75  d (only when flu
3ed0: 73 68 20 69 73 20 73 65 74 20 74 6f 0a 20 20 5a  sh is set to.  Z
3ee0: 5f 46 49 4e 49 53 48 29 2c 20 5a 5f 53 54 52 45  _FINISH), Z_STRE
3ef0: 41 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20  AM_ERROR if the 
3f00: 73 74 72 65 61 6d 20 73 74 61 74 65 20 77 61 73  stream state was
3f10: 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74 20 28 66   inconsistent (f
3f20: 6f 72 20 65 78 61 6d 70 6c 65 0a 20 20 69 66 20  or example.  if 
3f30: 6e 65 78 74 5f 69 6e 20 6f 72 20 6e 65 78 74 5f  next_in or next_
3f40: 6f 75 74 20 77 61 73 20 5a 5f 4e 55 4c 4c 29 2c  out was Z_NULL),
3f50: 20 5a 5f 42 55 46 5f 45 52 52 4f 52 20 69 66 20   Z_BUF_ERROR if 
3f60: 6e 6f 20 70 72 6f 67 72 65 73 73 20 69 73 20 70  no progress is p
3f70: 6f 73 73 69 62 6c 65 0a 20 20 28 66 6f 72 20 65  ossible.  (for e
3f80: 78 61 6d 70 6c 65 20 61 76 61 69 6c 5f 69 6e 20  xample avail_in 
3f90: 6f 72 20 61 76 61 69 6c 5f 6f 75 74 20 77 61 73  or avail_out was
3fa0: 20 7a 65 72 6f 29 2e 20 20 4e 6f 74 65 20 74 68   zero).  Note th
3fb0: 61 74 20 5a 5f 42 55 46 5f 45 52 52 4f 52 20 69  at Z_BUF_ERROR i
3fc0: 73 20 6e 6f 74 0a 20 20 66 61 74 61 6c 2c 20 61  s not.  fatal, a
3fd0: 6e 64 20 64 65 66 6c 61 74 65 28 29 20 63 61 6e  nd deflate() can
3fe0: 20 62 65 20 63 61 6c 6c 65 64 20 61 67 61 69 6e   be called again
3ff0: 20 77 69 74 68 20 6d 6f 72 65 20 69 6e 70 75 74   with more input
4000: 20 61 6e 64 20 6d 6f 72 65 20 6f 75 74 70 75 74   and more output
4010: 0a 20 20 73 70 61 63 65 20 74 6f 20 63 6f 6e 74  .  space to cont
4020: 69 6e 75 65 20 63 6f 6d 70 72 65 73 73 69 6e 67  inue compressing
4030: 2e 0a 2a 2f 0a 0a 0a 5a 45 58 54 45 52 4e 20 69  ..*/...ZEXTERN i
4040: 6e 74 20 5a 45 58 50 4f 52 54 20 64 65 66 6c 61  nt ZEXPORT defla
4050: 74 65 45 6e 64 20 4f 46 28 28 7a 5f 73 74 72 65  teEnd OF((z_stre
4060: 61 6d 70 20 73 74 72 6d 29 29 3b 0a 2f 2a 0a 20  amp strm));./*. 
4070: 20 20 20 20 41 6c 6c 20 64 79 6e 61 6d 69 63 61      All dynamica
4080: 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64 20 64 61  lly allocated da
4090: 74 61 20 73 74 72 75 63 74 75 72 65 73 20 66 6f  ta structures fo
40a0: 72 20 74 68 69 73 20 73 74 72 65 61 6d 20 61 72  r this stream ar
40b0: 65 20 66 72 65 65 64 2e 0a 20 20 20 54 68 69 73  e freed..   This
40c0: 20 66 75 6e 63 74 69 6f 6e 20 64 69 73 63 61 72   function discar
40d0: 64 73 20 61 6e 79 20 75 6e 70 72 6f 63 65 73 73  ds any unprocess
40e0: 65 64 20 69 6e 70 75 74 20 61 6e 64 20 64 6f 65  ed input and doe
40f0: 73 20 6e 6f 74 20 66 6c 75 73 68 20 61 6e 79 20  s not flush any 
4100: 70 65 6e 64 69 6e 67 0a 20 20 20 6f 75 74 70 75  pending.   outpu
4110: 74 2e 0a 0a 20 20 20 20 20 64 65 66 6c 61 74 65  t...     deflate
4120: 45 6e 64 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b  End returns Z_OK
4130: 20 69 66 20 73 75 63 63 65 73 73 2c 20 5a 5f 53   if success, Z_S
4140: 54 52 45 41 4d 5f 45 52 52 4f 52 20 69 66 20 74  TREAM_ERROR if t
4150: 68 65 0a 20 20 20 73 74 72 65 61 6d 20 73 74 61  he.   stream sta
4160: 74 65 20 77 61 73 20 69 6e 63 6f 6e 73 69 73 74  te was inconsist
4170: 65 6e 74 2c 20 5a 5f 44 41 54 41 5f 45 52 52 4f  ent, Z_DATA_ERRO
4180: 52 20 69 66 20 74 68 65 20 73 74 72 65 61 6d 20  R if the stream 
4190: 77 61 73 20 66 72 65 65 64 0a 20 20 20 70 72 65  was freed.   pre
41a0: 6d 61 74 75 72 65 6c 79 20 28 73 6f 6d 65 20 69  maturely (some i
41b0: 6e 70 75 74 20 6f 72 20 6f 75 74 70 75 74 20 77  nput or output w
41c0: 61 73 20 64 69 73 63 61 72 64 65 64 29 2e 20 20  as discarded).  
41d0: 49 6e 20 74 68 65 20 65 72 72 6f 72 20 63 61 73  In the error cas
41e0: 65 2c 20 6d 73 67 0a 20 20 20 6d 61 79 20 62 65  e, msg.   may be
41f0: 20 73 65 74 20 62 75 74 20 74 68 65 6e 20 70 6f   set but then po
4200: 69 6e 74 73 20 74 6f 20 61 20 73 74 61 74 69 63  ints to a static
4210: 20 73 74 72 69 6e 67 20 28 77 68 69 63 68 20 6d   string (which m
4220: 75 73 74 20 6e 6f 74 20 62 65 0a 20 20 20 64 65  ust not be.   de
4230: 61 6c 6c 6f 63 61 74 65 64 29 2e 0a 2a 2f 0a 0a  allocated)..*/..
4240: 0a 2f 2a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20  ./*.ZEXTERN int 
4250: 5a 45 58 50 4f 52 54 20 69 6e 66 6c 61 74 65 49  ZEXPORT inflateI
4260: 6e 69 74 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d  nit OF((z_stream
4270: 70 20 73 74 72 6d 29 29 3b 0a 0a 20 20 20 20 20  p strm));..     
4280: 49 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20  Initializes the 
4290: 69 6e 74 65 72 6e 61 6c 20 73 74 72 65 61 6d 20  internal stream 
42a0: 73 74 61 74 65 20 66 6f 72 20 64 65 63 6f 6d 70  state for decomp
42b0: 72 65 73 73 69 6f 6e 2e 20 20 54 68 65 20 66 69  ression.  The fi
42c0: 65 6c 64 73 0a 20 20 20 6e 65 78 74 5f 69 6e 2c  elds.   next_in,
42d0: 20 61 76 61 69 6c 5f 69 6e 2c 20 7a 61 6c 6c 6f   avail_in, zallo
42e0: 63 2c 20 7a 66 72 65 65 20 61 6e 64 20 6f 70 61  c, zfree and opa
42f0: 71 75 65 20 6d 75 73 74 20 62 65 20 69 6e 69 74  que must be init
4300: 69 61 6c 69 7a 65 64 20 62 65 66 6f 72 65 20 62  ialized before b
4310: 79 0a 20 20 20 74 68 65 20 63 61 6c 6c 65 72 2e  y.   the caller.
4320: 20 20 49 66 20 6e 65 78 74 5f 69 6e 20 69 73 20    If next_in is 
4330: 6e 6f 74 20 5a 5f 4e 55 4c 4c 20 61 6e 64 20 61  not Z_NULL and a
4340: 76 61 69 6c 5f 69 6e 20 69 73 20 6c 61 72 67 65  vail_in is large
4350: 20 65 6e 6f 75 67 68 20 28 74 68 65 0a 20 20 20   enough (the.   
4360: 65 78 61 63 74 20 76 61 6c 75 65 20 64 65 70 65  exact value depe
4370: 6e 64 73 20 6f 6e 20 74 68 65 20 63 6f 6d 70 72  nds on the compr
4380: 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 29 2c 20  ession method), 
4390: 69 6e 66 6c 61 74 65 49 6e 69 74 20 64 65 74 65  inflateInit dete
43a0: 72 6d 69 6e 65 73 20 74 68 65 0a 20 20 20 63 6f  rmines the.   co
43b0: 6d 70 72 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64  mpression method
43c0: 20 66 72 6f 6d 20 74 68 65 20 7a 6c 69 62 20 68   from the zlib h
43d0: 65 61 64 65 72 20 61 6e 64 20 61 6c 6c 6f 63 61  eader and alloca
43e0: 74 65 73 20 61 6c 6c 20 64 61 74 61 20 73 74 72  tes all data str
43f0: 75 63 74 75 72 65 73 0a 20 20 20 61 63 63 6f 72  uctures.   accor
4400: 64 69 6e 67 6c 79 3b 20 6f 74 68 65 72 77 69 73  dingly; otherwis
4410: 65 20 74 68 65 20 61 6c 6c 6f 63 61 74 69 6f 6e  e the allocation
4420: 20 77 69 6c 6c 20 62 65 20 64 65 66 65 72 72 65   will be deferre
4430: 64 20 74 6f 20 74 68 65 20 66 69 72 73 74 20 63  d to the first c
4440: 61 6c 6c 20 6f 66 0a 20 20 20 69 6e 66 6c 61 74  all of.   inflat
4450: 65 2e 20 20 49 66 20 7a 61 6c 6c 6f 63 20 61 6e  e.  If zalloc an
4460: 64 20 7a 66 72 65 65 20 61 72 65 20 73 65 74 20  d zfree are set 
4470: 74 6f 20 5a 5f 4e 55 4c 4c 2c 20 69 6e 66 6c 61  to Z_NULL, infla
4480: 74 65 49 6e 69 74 20 75 70 64 61 74 65 73 20 74  teInit updates t
4490: 68 65 6d 20 74 6f 0a 20 20 20 75 73 65 20 64 65  hem to.   use de
44a0: 66 61 75 6c 74 20 61 6c 6c 6f 63 61 74 69 6f 6e  fault allocation
44b0: 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 0a 20 20 20   functions...   
44c0: 20 20 69 6e 66 6c 61 74 65 49 6e 69 74 20 72 65    inflateInit re
44d0: 74 75 72 6e 73 20 5a 5f 4f 4b 20 69 66 20 73 75  turns Z_OK if su
44e0: 63 63 65 73 73 2c 20 5a 5f 4d 45 4d 5f 45 52 52  ccess, Z_MEM_ERR
44f0: 4f 52 20 69 66 20 74 68 65 72 65 20 77 61 73 20  OR if there was 
4500: 6e 6f 74 20 65 6e 6f 75 67 68 0a 20 20 20 6d 65  not enough.   me
4510: 6d 6f 72 79 2c 20 5a 5f 56 45 52 53 49 4f 4e 5f  mory, Z_VERSION_
4520: 45 52 52 4f 52 20 69 66 20 74 68 65 20 7a 6c 69  ERROR if the zli
4530: 62 20 6c 69 62 72 61 72 79 20 76 65 72 73 69 6f  b library versio
4540: 6e 20 69 73 20 69 6e 63 6f 6d 70 61 74 69 62 6c  n is incompatibl
4550: 65 20 77 69 74 68 20 74 68 65 0a 20 20 20 76 65  e with the.   ve
4560: 72 73 69 6f 6e 20 61 73 73 75 6d 65 64 20 62 79  rsion assumed by
4570: 20 74 68 65 20 63 61 6c 6c 65 72 2c 20 6f 72 20   the caller, or 
4580: 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 69  Z_STREAM_ERROR i
4590: 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73  f the parameters
45a0: 20 61 72 65 0a 20 20 20 69 6e 76 61 6c 69 64 2c   are.   invalid,
45b0: 20 73 75 63 68 20 61 73 20 61 20 6e 75 6c 6c 20   such as a null 
45c0: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
45d0: 74 72 75 63 74 75 72 65 2e 20 20 6d 73 67 20 69  tructure.  msg i
45e0: 73 20 73 65 74 20 74 6f 20 6e 75 6c 6c 20 69 66  s set to null if
45f0: 0a 20 20 20 74 68 65 72 65 20 69 73 20 6e 6f 20  .   there is no 
4600: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 20 20  error message.  
4610: 69 6e 66 6c 61 74 65 49 6e 69 74 20 64 6f 65 73  inflateInit does
4620: 20 6e 6f 74 20 70 65 72 66 6f 72 6d 20 61 6e 79   not perform any
4630: 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 0a 20   decompression. 
4640: 20 20 61 70 61 72 74 20 66 72 6f 6d 20 70 6f 73    apart from pos
4650: 73 69 62 6c 79 20 72 65 61 64 69 6e 67 20 74 68  sibly reading th
4660: 65 20 7a 6c 69 62 20 68 65 61 64 65 72 20 69 66  e zlib header if
4670: 20 70 72 65 73 65 6e 74 3a 20 61 63 74 75 61 6c   present: actual
4680: 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 0a 20   decompression. 
4690: 20 20 77 69 6c 6c 20 62 65 20 64 6f 6e 65 20 62    will be done b
46a0: 79 20 69 6e 66 6c 61 74 65 28 29 2e 20 20 28 53  y inflate().  (S
46b0: 6f 20 6e 65 78 74 5f 69 6e 20 61 6e 64 20 61 76  o next_in and av
46c0: 61 69 6c 5f 69 6e 20 6d 61 79 20 62 65 20 6d 6f  ail_in may be mo
46d0: 64 69 66 69 65 64 2c 20 62 75 74 0a 20 20 20 6e  dified, but.   n
46e0: 65 78 74 5f 6f 75 74 20 61 6e 64 20 61 76 61 69  ext_out and avai
46f0: 6c 5f 6f 75 74 20 61 72 65 20 75 6e 75 73 65 64  l_out are unused
4700: 20 61 6e 64 20 75 6e 63 68 61 6e 67 65 64 2e 29   and unchanged.)
4710: 20 54 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70   The current imp
4720: 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 20 20 20 6f  lementation.   o
4730: 66 20 69 6e 66 6c 61 74 65 49 6e 69 74 28 29 20  f inflateInit() 
4740: 64 6f 65 73 20 6e 6f 74 20 70 72 6f 63 65 73 73  does not process
4750: 20 61 6e 79 20 68 65 61 64 65 72 20 69 6e 66 6f   any header info
4760: 72 6d 61 74 69 6f 6e 20 2d 2d 20 74 68 61 74 20  rmation -- that 
4770: 69 73 20 64 65 66 65 72 72 65 64 0a 20 20 20 75  is deferred.   u
4780: 6e 74 69 6c 20 69 6e 66 6c 61 74 65 28 29 20 69  ntil inflate() i
4790: 73 20 63 61 6c 6c 65 64 2e 0a 2a 2f 0a 0a 0a 5a  s called..*/...Z
47a0: 45 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f  EXTERN int ZEXPO
47b0: 52 54 20 69 6e 66 6c 61 74 65 20 4f 46 28 28 7a  RT inflate OF((z
47c0: 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 2c 20 69  _streamp strm, i
47d0: 6e 74 20 66 6c 75 73 68 29 29 3b 0a 2f 2a 0a 20  nt flush));./*. 
47e0: 20 20 20 69 6e 66 6c 61 74 65 20 64 65 63 6f 6d     inflate decom
47f0: 70 72 65 73 73 65 73 20 61 73 20 6d 75 63 68 20  presses as much 
4800: 64 61 74 61 20 61 73 20 70 6f 73 73 69 62 6c 65  data as possible
4810: 2c 20 61 6e 64 20 73 74 6f 70 73 20 77 68 65 6e  , and stops when
4820: 20 74 68 65 20 69 6e 70 75 74 0a 20 20 62 75 66   the input.  buf
4830: 66 65 72 20 62 65 63 6f 6d 65 73 20 65 6d 70 74  fer becomes empt
4840: 79 20 6f 72 20 74 68 65 20 6f 75 74 70 75 74 20  y or the output 
4850: 62 75 66 66 65 72 20 62 65 63 6f 6d 65 73 20 66  buffer becomes f
4860: 75 6c 6c 2e 20 20 49 74 20 6d 61 79 20 69 6e 74  ull.  It may int
4870: 72 6f 64 75 63 65 0a 20 20 73 6f 6d 65 20 6f 75  roduce.  some ou
4880: 74 70 75 74 20 6c 61 74 65 6e 63 79 20 28 72 65  tput latency (re
4890: 61 64 69 6e 67 20 69 6e 70 75 74 20 77 69 74 68  ading input with
48a0: 6f 75 74 20 70 72 6f 64 75 63 69 6e 67 20 61 6e  out producing an
48b0: 79 20 6f 75 74 70 75 74 29 20 65 78 63 65 70 74  y output) except
48c0: 20 77 68 65 6e 0a 20 20 66 6f 72 63 65 64 20 74   when.  forced t
48d0: 6f 20 66 6c 75 73 68 2e 0a 0a 20 20 54 68 65 20  o flush...  The 
48e0: 64 65 74 61 69 6c 65 64 20 73 65 6d 61 6e 74 69  detailed semanti
48f0: 63 73 20 61 72 65 20 61 73 20 66 6f 6c 6c 6f 77  cs are as follow
4900: 73 2e 20 20 69 6e 66 6c 61 74 65 20 70 65 72 66  s.  inflate perf
4910: 6f 72 6d 73 20 6f 6e 65 20 6f 72 20 62 6f 74 68  orms one or both
4920: 20 6f 66 20 74 68 65 0a 20 20 66 6f 6c 6c 6f 77   of the.  follow
4930: 69 6e 67 20 61 63 74 69 6f 6e 73 3a 0a 0a 20 20  ing actions:..  
4940: 2d 20 44 65 63 6f 6d 70 72 65 73 73 20 6d 6f 72  - Decompress mor
4950: 65 20 69 6e 70 75 74 20 73 74 61 72 74 69 6e 67  e input starting
4960: 20 61 74 20 6e 65 78 74 5f 69 6e 20 61 6e 64 20   at next_in and 
4970: 75 70 64 61 74 65 20 6e 65 78 74 5f 69 6e 20 61  update next_in a
4980: 6e 64 20 61 76 61 69 6c 5f 69 6e 0a 20 20 20 20  nd avail_in.    
4990: 61 63 63 6f 72 64 69 6e 67 6c 79 2e 20 20 49 66  accordingly.  If
49a0: 20 6e 6f 74 20 61 6c 6c 20 69 6e 70 75 74 20 63   not all input c
49b0: 61 6e 20 62 65 20 70 72 6f 63 65 73 73 65 64 20  an be processed 
49c0: 28 62 65 63 61 75 73 65 20 74 68 65 72 65 20 69  (because there i
49d0: 73 20 6e 6f 74 0a 20 20 20 20 65 6e 6f 75 67 68  s not.    enough
49e0: 20 72 6f 6f 6d 20 69 6e 20 74 68 65 20 6f 75 74   room in the out
49f0: 70 75 74 20 62 75 66 66 65 72 29 2c 20 6e 65 78  put buffer), nex
4a00: 74 5f 69 6e 20 69 73 20 75 70 64 61 74 65 64 20  t_in is updated 
4a10: 61 6e 64 20 70 72 6f 63 65 73 73 69 6e 67 20 77  and processing w
4a20: 69 6c 6c 0a 20 20 20 20 72 65 73 75 6d 65 20 61  ill.    resume a
4a30: 74 20 74 68 69 73 20 70 6f 69 6e 74 20 66 6f 72  t this point for
4a40: 20 74 68 65 20 6e 65 78 74 20 63 61 6c 6c 20 6f   the next call o
4a50: 66 20 69 6e 66 6c 61 74 65 28 29 2e 0a 0a 20 20  f inflate()...  
4a60: 2d 20 50 72 6f 76 69 64 65 20 6d 6f 72 65 20 6f  - Provide more o
4a70: 75 74 70 75 74 20 73 74 61 72 74 69 6e 67 20 61  utput starting a
4a80: 74 20 6e 65 78 74 5f 6f 75 74 20 61 6e 64 20 75  t next_out and u
4a90: 70 64 61 74 65 20 6e 65 78 74 5f 6f 75 74 20 61  pdate next_out a
4aa0: 6e 64 20 61 76 61 69 6c 5f 6f 75 74 0a 20 20 20  nd avail_out.   
4ab0: 20 61 63 63 6f 72 64 69 6e 67 6c 79 2e 20 20 69   accordingly.  i
4ac0: 6e 66 6c 61 74 65 28 29 20 70 72 6f 76 69 64 65  nflate() provide
4ad0: 73 20 61 73 20 6d 75 63 68 20 6f 75 74 70 75 74  s as much output
4ae0: 20 61 73 20 70 6f 73 73 69 62 6c 65 2c 20 75 6e   as possible, un
4af0: 74 69 6c 20 74 68 65 72 65 20 69 73 0a 20 20 20  til there is.   
4b00: 20 6e 6f 20 6d 6f 72 65 20 69 6e 70 75 74 20 64   no more input d
4b10: 61 74 61 20 6f 72 20 6e 6f 20 6d 6f 72 65 20 73  ata or no more s
4b20: 70 61 63 65 20 69 6e 20 74 68 65 20 6f 75 74 70  pace in the outp
4b30: 75 74 20 62 75 66 66 65 72 20 28 73 65 65 20 62  ut buffer (see b
4b40: 65 6c 6f 77 20 61 62 6f 75 74 0a 20 20 20 20 74  elow about.    t
4b50: 68 65 20 66 6c 75 73 68 20 70 61 72 61 6d 65 74  he flush paramet
4b60: 65 72 29 2e 0a 0a 20 20 20 20 42 65 66 6f 72 65  er)...    Before
4b70: 20 74 68 65 20 63 61 6c 6c 20 6f 66 20 69 6e 66   the call of inf
4b80: 6c 61 74 65 28 29 2c 20 74 68 65 20 61 70 70 6c  late(), the appl
4b90: 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 65  ication should e
4ba0: 6e 73 75 72 65 20 74 68 61 74 20 61 74 20 6c 65  nsure that at le
4bb0: 61 73 74 0a 20 20 6f 6e 65 20 6f 66 20 74 68 65  ast.  one of the
4bc0: 20 61 63 74 69 6f 6e 73 20 69 73 20 70 6f 73 73   actions is poss
4bd0: 69 62 6c 65 2c 20 62 79 20 70 72 6f 76 69 64 69  ible, by providi
4be0: 6e 67 20 6d 6f 72 65 20 69 6e 70 75 74 20 61 6e  ng more input an
4bf0: 64 2f 6f 72 20 63 6f 6e 73 75 6d 69 6e 67 20 6d  d/or consuming m
4c00: 6f 72 65 0a 20 20 6f 75 74 70 75 74 2c 20 61 6e  ore.  output, an
4c10: 64 20 75 70 64 61 74 69 6e 67 20 74 68 65 20 6e  d updating the n
4c20: 65 78 74 5f 2a 20 61 6e 64 20 61 76 61 69 6c 5f  ext_* and avail_
4c30: 2a 20 76 61 6c 75 65 73 20 61 63 63 6f 72 64 69  * values accordi
4c40: 6e 67 6c 79 2e 20 20 54 68 65 0a 20 20 61 70 70  ngly.  The.  app
4c50: 6c 69 63 61 74 69 6f 6e 20 63 61 6e 20 63 6f 6e  lication can con
4c60: 73 75 6d 65 20 74 68 65 20 75 6e 63 6f 6d 70 72  sume the uncompr
4c70: 65 73 73 65 64 20 6f 75 74 70 75 74 20 77 68 65  essed output whe
4c80: 6e 20 69 74 20 77 61 6e 74 73 2c 20 66 6f 72 20  n it wants, for 
4c90: 65 78 61 6d 70 6c 65 0a 20 20 77 68 65 6e 20 74  example.  when t
4ca0: 68 65 20 6f 75 74 70 75 74 20 62 75 66 66 65 72  he output buffer
4cb0: 20 69 73 20 66 75 6c 6c 20 28 61 76 61 69 6c 5f   is full (avail_
4cc0: 6f 75 74 20 3d 3d 20 30 29 2c 20 6f 72 20 61 66  out == 0), or af
4cd0: 74 65 72 20 65 61 63 68 20 63 61 6c 6c 20 6f 66  ter each call of
4ce0: 0a 20 20 69 6e 66 6c 61 74 65 28 29 2e 20 20 49  .  inflate().  I
4cf0: 66 20 69 6e 66 6c 61 74 65 20 72 65 74 75 72 6e  f inflate return
4d00: 73 20 5a 5f 4f 4b 20 61 6e 64 20 77 69 74 68 20  s Z_OK and with 
4d10: 7a 65 72 6f 20 61 76 61 69 6c 5f 6f 75 74 2c 20  zero avail_out, 
4d20: 69 74 20 6d 75 73 74 20 62 65 0a 20 20 63 61 6c  it must be.  cal
4d30: 6c 65 64 20 61 67 61 69 6e 20 61 66 74 65 72 20  led again after 
4d40: 6d 61 6b 69 6e 67 20 72 6f 6f 6d 20 69 6e 20 74  making room in t
4d50: 68 65 20 6f 75 74 70 75 74 20 62 75 66 66 65 72  he output buffer
4d60: 20 62 65 63 61 75 73 65 20 74 68 65 72 65 20 6d   because there m
4d70: 69 67 68 74 20 62 65 0a 20 20 6d 6f 72 65 20 6f  ight be.  more o
4d80: 75 74 70 75 74 20 70 65 6e 64 69 6e 67 2e 0a 0a  utput pending...
4d90: 20 20 20 20 54 68 65 20 66 6c 75 73 68 20 70 61      The flush pa
4da0: 72 61 6d 65 74 65 72 20 6f 66 20 69 6e 66 6c 61  rameter of infla
4db0: 74 65 28 29 20 63 61 6e 20 62 65 20 5a 5f 4e 4f  te() can be Z_NO
4dc0: 5f 46 4c 55 53 48 2c 20 5a 5f 53 59 4e 43 5f 46  _FLUSH, Z_SYNC_F
4dd0: 4c 55 53 48 2c 20 5a 5f 46 49 4e 49 53 48 2c 0a  LUSH, Z_FINISH,.
4de0: 20 20 5a 5f 42 4c 4f 43 4b 2c 20 6f 72 20 5a 5f    Z_BLOCK, or Z_
4df0: 54 52 45 45 53 2e 20 20 5a 5f 53 59 4e 43 5f 46  TREES.  Z_SYNC_F
4e00: 4c 55 53 48 20 72 65 71 75 65 73 74 73 20 74 68  LUSH requests th
4e10: 61 74 20 69 6e 66 6c 61 74 65 28 29 20 66 6c 75  at inflate() flu
4e20: 73 68 20 61 73 20 6d 75 63 68 0a 20 20 6f 75 74  sh as much.  out
4e30: 70 75 74 20 61 73 20 70 6f 73 73 69 62 6c 65 20  put as possible 
4e40: 74 6f 20 74 68 65 20 6f 75 74 70 75 74 20 62 75  to the output bu
4e50: 66 66 65 72 2e 20 20 5a 5f 42 4c 4f 43 4b 20 72  ffer.  Z_BLOCK r
4e60: 65 71 75 65 73 74 73 20 74 68 61 74 20 69 6e 66  equests that inf
4e70: 6c 61 74 65 28 29 0a 20 20 73 74 6f 70 20 69 66  late().  stop if
4e80: 20 61 6e 64 20 77 68 65 6e 20 69 74 20 67 65 74   and when it get
4e90: 73 20 74 6f 20 74 68 65 20 6e 65 78 74 20 64 65  s to the next de
4ea0: 66 6c 61 74 65 20 62 6c 6f 63 6b 20 62 6f 75 6e  flate block boun
4eb0: 64 61 72 79 2e 20 20 57 68 65 6e 20 64 65 63 6f  dary.  When deco
4ec0: 64 69 6e 67 0a 20 20 74 68 65 20 7a 6c 69 62 20  ding.  the zlib 
4ed0: 6f 72 20 67 7a 69 70 20 66 6f 72 6d 61 74 2c 20  or gzip format, 
4ee0: 74 68 69 73 20 77 69 6c 6c 20 63 61 75 73 65 20  this will cause 
4ef0: 69 6e 66 6c 61 74 65 28 29 20 74 6f 20 72 65 74  inflate() to ret
4f00: 75 72 6e 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a  urn immediately.
4f10: 20 20 61 66 74 65 72 20 74 68 65 20 68 65 61 64    after the head
4f20: 65 72 20 61 6e 64 20 62 65 66 6f 72 65 20 74 68  er and before th
4f30: 65 20 66 69 72 73 74 20 62 6c 6f 63 6b 2e 20 20  e first block.  
4f40: 57 68 65 6e 20 64 6f 69 6e 67 20 61 20 72 61 77  When doing a raw
4f50: 20 69 6e 66 6c 61 74 65 2c 0a 20 20 69 6e 66 6c   inflate,.  infl
4f60: 61 74 65 28 29 20 77 69 6c 6c 20 67 6f 20 61 68  ate() will go ah
4f70: 65 61 64 20 61 6e 64 20 70 72 6f 63 65 73 73 20  ead and process 
4f80: 74 68 65 20 66 69 72 73 74 20 62 6c 6f 63 6b 2c  the first block,
4f90: 20 61 6e 64 20 77 69 6c 6c 20 72 65 74 75 72 6e   and will return
4fa0: 20 77 68 65 6e 20 69 74 0a 20 20 67 65 74 73 20   when it.  gets 
4fb0: 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68  to the end of th
4fc0: 61 74 20 62 6c 6f 63 6b 2c 20 6f 72 20 77 68 65  at block, or whe
4fd0: 6e 20 69 74 20 72 75 6e 73 20 6f 75 74 20 6f 66  n it runs out of
4fe0: 20 64 61 74 61 2e 0a 0a 20 20 20 20 54 68 65 20   data...    The 
4ff0: 5a 5f 42 4c 4f 43 4b 20 6f 70 74 69 6f 6e 20 61  Z_BLOCK option a
5000: 73 73 69 73 74 73 20 69 6e 20 61 70 70 65 6e 64  ssists in append
5010: 69 6e 67 20 74 6f 20 6f 72 20 63 6f 6d 62 69 6e  ing to or combin
5020: 69 6e 67 20 64 65 66 6c 61 74 65 20 73 74 72 65  ing deflate stre
5030: 61 6d 73 2e 0a 20 20 41 6c 73 6f 20 74 6f 20 61  ams..  Also to a
5040: 73 73 69 73 74 20 69 6e 20 74 68 69 73 2c 20 6f  ssist in this, o
5050: 6e 20 72 65 74 75 72 6e 20 69 6e 66 6c 61 74 65  n return inflate
5060: 28 29 20 77 69 6c 6c 20 73 65 74 20 73 74 72 6d  () will set strm
5070: 2d 3e 64 61 74 61 5f 74 79 70 65 20 74 6f 20 74  ->data_type to t
5080: 68 65 0a 20 20 6e 75 6d 62 65 72 20 6f 66 20 75  he.  number of u
5090: 6e 75 73 65 64 20 62 69 74 73 20 69 6e 20 74 68  nused bits in th
50a0: 65 20 6c 61 73 74 20 62 79 74 65 20 74 61 6b 65  e last byte take
50b0: 6e 20 66 72 6f 6d 20 73 74 72 6d 2d 3e 6e 65 78  n from strm->nex
50c0: 74 5f 69 6e 2c 20 70 6c 75 73 20 36 34 20 69 66  t_in, plus 64 if
50d0: 0a 20 20 69 6e 66 6c 61 74 65 28 29 20 69 73 20  .  inflate() is 
50e0: 63 75 72 72 65 6e 74 6c 79 20 64 65 63 6f 64 69  currently decodi
50f0: 6e 67 20 74 68 65 20 6c 61 73 74 20 62 6c 6f 63  ng the last bloc
5100: 6b 20 69 6e 20 74 68 65 20 64 65 66 6c 61 74 65  k in the deflate
5110: 20 73 74 72 65 61 6d 2c 20 70 6c 75 73 0a 20 20   stream, plus.  
5120: 31 32 38 20 69 66 20 69 6e 66 6c 61 74 65 28 29  128 if inflate()
5130: 20 72 65 74 75 72 6e 65 64 20 69 6d 6d 65 64 69   returned immedi
5140: 61 74 65 6c 79 20 61 66 74 65 72 20 64 65 63 6f  ately after deco
5150: 64 69 6e 67 20 61 6e 20 65 6e 64 2d 6f 66 2d 62  ding an end-of-b
5160: 6c 6f 63 6b 20 63 6f 64 65 20 6f 72 0a 20 20 64  lock code or.  d
5170: 65 63 6f 64 69 6e 67 20 74 68 65 20 63 6f 6d 70  ecoding the comp
5180: 6c 65 74 65 20 68 65 61 64 65 72 20 75 70 20 74  lete header up t
5190: 6f 20 6a 75 73 74 20 62 65 66 6f 72 65 20 74 68  o just before th
51a0: 65 20 66 69 72 73 74 20 62 79 74 65 20 6f 66 20  e first byte of 
51b0: 74 68 65 20 64 65 66 6c 61 74 65 0a 20 20 73 74  the deflate.  st
51c0: 72 65 61 6d 2e 20 20 54 68 65 20 65 6e 64 2d 6f  ream.  The end-o
51d0: 66 2d 62 6c 6f 63 6b 20 77 69 6c 6c 20 6e 6f 74  f-block will not
51e0: 20 62 65 20 69 6e 64 69 63 61 74 65 64 20 75 6e   be indicated un
51f0: 74 69 6c 20 61 6c 6c 20 6f 66 20 74 68 65 20 75  til all of the u
5200: 6e 63 6f 6d 70 72 65 73 73 65 64 0a 20 20 64 61  ncompressed.  da
5210: 74 61 20 66 72 6f 6d 20 74 68 61 74 20 62 6c 6f  ta from that blo
5220: 63 6b 20 68 61 73 20 62 65 65 6e 20 77 72 69 74  ck has been writ
5230: 74 65 6e 20 74 6f 20 73 74 72 6d 2d 3e 6e 65 78  ten to strm->nex
5240: 74 5f 6f 75 74 2e 20 20 54 68 65 20 6e 75 6d 62  t_out.  The numb
5250: 65 72 20 6f 66 0a 20 20 75 6e 75 73 65 64 20 62  er of.  unused b
5260: 69 74 73 20 6d 61 79 20 69 6e 20 67 65 6e 65 72  its may in gener
5270: 61 6c 20 62 65 20 67 72 65 61 74 65 72 20 74 68  al be greater th
5280: 61 6e 20 73 65 76 65 6e 2c 20 65 78 63 65 70 74  an seven, except
5290: 20 77 68 65 6e 20 62 69 74 20 37 20 6f 66 0a 20   when bit 7 of. 
52a0: 20 64 61 74 61 5f 74 79 70 65 20 69 73 20 73 65   data_type is se
52b0: 74 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73 65  t, in which case
52c0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 75   the number of u
52d0: 6e 75 73 65 64 20 62 69 74 73 20 77 69 6c 6c 20  nused bits will 
52e0: 62 65 20 6c 65 73 73 20 74 68 61 6e 0a 20 20 65  be less than.  e
52f0: 69 67 68 74 2e 20 20 64 61 74 61 5f 74 79 70 65  ight.  data_type
5300: 20 69 73 20 73 65 74 20 61 73 20 6e 6f 74 65 64   is set as noted
5310: 20 68 65 72 65 20 65 76 65 72 79 20 74 69 6d 65   here every time
5320: 20 69 6e 66 6c 61 74 65 28 29 20 72 65 74 75 72   inflate() retur
5330: 6e 73 20 66 6f 72 20 61 6c 6c 0a 20 20 66 6c 75  ns for all.  flu
5340: 73 68 20 6f 70 74 69 6f 6e 73 2c 20 61 6e 64 20  sh options, and 
5350: 73 6f 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  so can be used t
5360: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
5370: 61 6d 6f 75 6e 74 20 6f 66 20 63 75 72 72 65 6e  amount of curren
5380: 74 6c 79 0a 20 20 63 6f 6e 73 75 6d 65 64 20 69  tly.  consumed i
5390: 6e 70 75 74 20 69 6e 20 62 69 74 73 2e 0a 0a 20  nput in bits... 
53a0: 20 20 20 54 68 65 20 5a 5f 54 52 45 45 53 20 6f     The Z_TREES o
53b0: 70 74 69 6f 6e 20 62 65 68 61 76 65 73 20 61 73  ption behaves as
53c0: 20 5a 5f 42 4c 4f 43 4b 20 64 6f 65 73 2c 20 62   Z_BLOCK does, b
53d0: 75 74 20 69 74 20 61 6c 73 6f 20 72 65 74 75 72  ut it also retur
53e0: 6e 73 20 77 68 65 6e 20 74 68 65 0a 20 20 65 6e  ns when the.  en
53f0: 64 20 6f 66 20 65 61 63 68 20 64 65 66 6c 61 74  d of each deflat
5400: 65 20 62 6c 6f 63 6b 20 68 65 61 64 65 72 20 69  e block header i
5410: 73 20 72 65 61 63 68 65 64 2c 20 62 65 66 6f 72  s reached, befor
5420: 65 20 61 6e 79 20 61 63 74 75 61 6c 20 64 61 74  e any actual dat
5430: 61 20 69 6e 20 74 68 61 74 0a 20 20 62 6c 6f 63  a in that.  bloc
5440: 6b 20 69 73 20 64 65 63 6f 64 65 64 2e 20 20 54  k is decoded.  T
5450: 68 69 73 20 61 6c 6c 6f 77 73 20 74 68 65 20 63  his allows the c
5460: 61 6c 6c 65 72 20 74 6f 20 64 65 74 65 72 6d 69  aller to determi
5470: 6e 65 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66  ne the length of
5480: 20 74 68 65 0a 20 20 64 65 66 6c 61 74 65 20 62   the.  deflate b
5490: 6c 6f 63 6b 20 68 65 61 64 65 72 20 66 6f 72 20  lock header for 
54a0: 6c 61 74 65 72 20 75 73 65 20 69 6e 20 72 61 6e  later use in ran
54b0: 64 6f 6d 20 61 63 63 65 73 73 20 77 69 74 68 69  dom access withi
54c0: 6e 20 61 20 64 65 66 6c 61 74 65 20 62 6c 6f 63  n a deflate bloc
54d0: 6b 2e 0a 20 20 32 35 36 20 69 73 20 61 64 64 65  k..  256 is adde
54e0: 64 20 74 6f 20 74 68 65 20 76 61 6c 75 65 20 6f  d to the value o
54f0: 66 20 73 74 72 6d 2d 3e 64 61 74 61 5f 74 79 70  f strm->data_typ
5500: 65 20 77 68 65 6e 20 69 6e 66 6c 61 74 65 28 29  e when inflate()
5510: 20 72 65 74 75 72 6e 73 0a 20 20 69 6d 6d 65 64   returns.  immed
5520: 69 61 74 65 6c 79 20 61 66 74 65 72 20 72 65 61  iately after rea
5530: 63 68 69 6e 67 20 74 68 65 20 65 6e 64 20 6f 66  ching the end of
5540: 20 74 68 65 20 64 65 66 6c 61 74 65 20 62 6c 6f   the deflate blo
5550: 63 6b 20 68 65 61 64 65 72 2e 0a 0a 20 20 20 20  ck header...    
5560: 69 6e 66 6c 61 74 65 28 29 20 73 68 6f 75 6c 64  inflate() should
5570: 20 6e 6f 72 6d 61 6c 6c 79 20 62 65 20 63 61 6c   normally be cal
5580: 6c 65 64 20 75 6e 74 69 6c 20 69 74 20 72 65 74  led until it ret
5590: 75 72 6e 73 20 5a 5f 53 54 52 45 41 4d 5f 45 4e  urns Z_STREAM_EN
55a0: 44 20 6f 72 20 61 6e 0a 20 20 65 72 72 6f 72 2e  D or an.  error.
55b0: 20 20 48 6f 77 65 76 65 72 20 69 66 20 61 6c 6c    However if all
55c0: 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 69   decompression i
55d0: 73 20 74 6f 20 62 65 20 70 65 72 66 6f 72 6d 65  s to be performe
55e0: 64 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 73 74  d in a single st
55f0: 65 70 20 28 61 0a 20 20 73 69 6e 67 6c 65 20 63  ep (a.  single c
5600: 61 6c 6c 20 6f 66 20 69 6e 66 6c 61 74 65 29 2c  all of inflate),
5610: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 66   the parameter f
5620: 6c 75 73 68 20 73 68 6f 75 6c 64 20 62 65 20 73  lush should be s
5630: 65 74 20 74 6f 20 5a 5f 46 49 4e 49 53 48 2e 20  et to Z_FINISH. 
5640: 20 49 6e 0a 20 20 74 68 69 73 20 63 61 73 65 20   In.  this case 
5650: 61 6c 6c 20 70 65 6e 64 69 6e 67 20 69 6e 70 75  all pending inpu
5660: 74 20 69 73 20 70 72 6f 63 65 73 73 65 64 20 61  t is processed a
5670: 6e 64 20 61 6c 6c 20 70 65 6e 64 69 6e 67 20 6f  nd all pending o
5680: 75 74 70 75 74 20 69 73 20 66 6c 75 73 68 65 64  utput is flushed
5690: 3b 0a 20 20 61 76 61 69 6c 5f 6f 75 74 20 6d 75  ;.  avail_out mu
56a0: 73 74 20 62 65 20 6c 61 72 67 65 20 65 6e 6f 75  st be large enou
56b0: 67 68 20 74 6f 20 68 6f 6c 64 20 61 6c 6c 20 6f  gh to hold all o
56c0: 66 20 74 68 65 20 75 6e 63 6f 6d 70 72 65 73 73  f the uncompress
56d0: 65 64 20 64 61 74 61 20 66 6f 72 20 74 68 65 0a  ed data for the.
56e0: 20 20 6f 70 65 72 61 74 69 6f 6e 20 74 6f 20 63    operation to c
56f0: 6f 6d 70 6c 65 74 65 2e 20 20 28 54 68 65 20 73  omplete.  (The s
5700: 69 7a 65 20 6f 66 20 74 68 65 20 75 6e 63 6f 6d  ize of the uncom
5710: 70 72 65 73 73 65 64 20 64 61 74 61 20 6d 61 79  pressed data may
5720: 20 68 61 76 65 20 62 65 65 6e 0a 20 20 73 61 76   have been.  sav
5730: 65 64 20 62 79 20 74 68 65 20 63 6f 6d 70 72 65  ed by the compre
5740: 73 73 6f 72 20 66 6f 72 20 74 68 69 73 20 70 75  ssor for this pu
5750: 72 70 6f 73 65 2e 29 20 54 68 65 20 75 73 65 20  rpose.) The use 
5760: 6f 66 20 5a 5f 46 49 4e 49 53 48 20 69 73 20 6e  of Z_FINISH is n
5770: 6f 74 0a 20 20 72 65 71 75 69 72 65 64 20 74 6f  ot.  required to
5780: 20 70 65 72 66 6f 72 6d 20 61 6e 20 69 6e 66 6c   perform an infl
5790: 61 74 69 6f 6e 20 69 6e 20 6f 6e 65 20 73 74 65  ation in one ste
57a0: 70 2e 20 20 48 6f 77 65 76 65 72 20 69 74 20 6d  p.  However it m
57b0: 61 79 20 62 65 20 75 73 65 64 20 74 6f 0a 20 20  ay be used to.  
57c0: 69 6e 66 6f 72 6d 20 69 6e 66 6c 61 74 65 20 74  inform inflate t
57d0: 68 61 74 20 61 20 66 61 73 74 65 72 20 61 70 70  hat a faster app
57e0: 72 6f 61 63 68 20 63 61 6e 20 62 65 20 75 73 65  roach can be use
57f0: 64 20 66 6f 72 20 74 68 65 20 73 69 6e 67 6c 65  d for the single
5800: 20 69 6e 66 6c 61 74 65 28 29 0a 20 20 63 61 6c   inflate().  cal
5810: 6c 2e 20 20 5a 5f 46 49 4e 49 53 48 20 61 6c 73  l.  Z_FINISH als
5820: 6f 20 69 6e 66 6f 72 6d 73 20 69 6e 66 6c 61 74  o informs inflat
5830: 65 20 74 6f 20 6e 6f 74 20 6d 61 69 6e 74 61 69  e to not maintai
5840: 6e 20 61 20 73 6c 69 64 69 6e 67 20 77 69 6e 64  n a sliding wind
5850: 6f 77 20 69 66 20 74 68 65 0a 20 20 73 74 72 65  ow if the.  stre
5860: 61 6d 20 63 6f 6d 70 6c 65 74 65 73 2c 20 77 68  am completes, wh
5870: 69 63 68 20 72 65 64 75 63 65 73 20 69 6e 66 6c  ich reduces infl
5880: 61 74 65 27 73 20 6d 65 6d 6f 72 79 20 66 6f 6f  ate's memory foo
5890: 74 70 72 69 6e 74 2e 20 20 49 66 20 74 68 65 20  tprint.  If the 
58a0: 73 74 72 65 61 6d 0a 20 20 64 6f 65 73 20 6e 6f  stream.  does no
58b0: 74 20 63 6f 6d 70 6c 65 74 65 2c 20 65 69 74 68  t complete, eith
58c0: 65 72 20 62 65 63 61 75 73 65 20 6e 6f 74 20 61  er because not a
58d0: 6c 6c 20 6f 66 20 74 68 65 20 73 74 72 65 61 6d  ll of the stream
58e0: 20 69 73 20 70 72 6f 76 69 64 65 64 20 6f 72 20   is provided or 
58f0: 6e 6f 74 0a 20 20 65 6e 6f 75 67 68 20 6f 75 74  not.  enough out
5900: 70 75 74 20 73 70 61 63 65 20 69 73 20 70 72 6f  put space is pro
5910: 76 69 64 65 64 2c 20 74 68 65 6e 20 61 20 73 6c  vided, then a sl
5920: 69 64 69 6e 67 20 77 69 6e 64 6f 77 20 77 69 6c  iding window wil
5930: 6c 20 62 65 20 61 6c 6c 6f 63 61 74 65 64 20 61  l be allocated a
5940: 6e 64 0a 20 20 69 6e 66 6c 61 74 65 28 29 20 63  nd.  inflate() c
5950: 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 61 67 61  an be called aga
5960: 69 6e 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74  in to continue t
5970: 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 61 73 20  he operation as 
5980: 69 66 20 5a 5f 4e 4f 5f 46 4c 55 53 48 20 68 61  if Z_NO_FLUSH ha
5990: 64 0a 20 20 62 65 65 6e 20 75 73 65 64 2e 0a 0a  d.  been used...
59a0: 20 20 20 20 20 49 6e 20 74 68 69 73 20 69 6d 70       In this imp
59b0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 69 6e 66  lementation, inf
59c0: 6c 61 74 65 28 29 20 61 6c 77 61 79 73 20 66 6c  late() always fl
59d0: 75 73 68 65 73 20 61 73 20 6d 75 63 68 20 6f 75  ushes as much ou
59e0: 74 70 75 74 20 61 73 0a 20 20 70 6f 73 73 69 62  tput as.  possib
59f0: 6c 65 20 74 6f 20 74 68 65 20 6f 75 74 70 75 74  le to the output
5a00: 20 62 75 66 66 65 72 2c 20 61 6e 64 20 61 6c 77   buffer, and alw
5a10: 61 79 73 20 75 73 65 73 20 74 68 65 20 66 61 73  ays uses the fas
5a20: 74 65 72 20 61 70 70 72 6f 61 63 68 20 6f 6e 20  ter approach on 
5a30: 74 68 65 0a 20 20 66 69 72 73 74 20 63 61 6c 6c  the.  first call
5a40: 2e 20 20 53 6f 20 74 68 65 20 65 66 66 65 63 74  .  So the effect
5a50: 73 20 6f 66 20 74 68 65 20 66 6c 75 73 68 20 70  s of the flush p
5a60: 61 72 61 6d 65 74 65 72 20 69 6e 20 74 68 69 73  arameter in this
5a70: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
5a80: 61 72 65 0a 20 20 6f 6e 20 74 68 65 20 72 65 74  are.  on the ret
5a90: 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 69 6e 66  urn value of inf
5aa0: 6c 61 74 65 28 29 20 61 73 20 6e 6f 74 65 64 20  late() as noted 
5ab0: 62 65 6c 6f 77 2c 20 77 68 65 6e 20 69 6e 66 6c  below, when infl
5ac0: 61 74 65 28 29 20 72 65 74 75 72 6e 73 20 65 61  ate() returns ea
5ad0: 72 6c 79 0a 20 20 77 68 65 6e 20 5a 5f 42 4c 4f  rly.  when Z_BLO
5ae0: 43 4b 20 6f 72 20 5a 5f 54 52 45 45 53 20 69 73  CK or Z_TREES is
5af0: 20 75 73 65 64 2c 20 61 6e 64 20 77 68 65 6e 20   used, and when 
5b00: 69 6e 66 6c 61 74 65 28 29 20 61 76 6f 69 64 73  inflate() avoids
5b10: 20 74 68 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20   the allocation 
5b20: 6f 66 0a 20 20 6d 65 6d 6f 72 79 20 66 6f 72 20  of.  memory for 
5b30: 61 20 73 6c 69 64 69 6e 67 20 77 69 6e 64 6f 77  a sliding window
5b40: 20 77 68 65 6e 20 5a 5f 46 49 4e 49 53 48 20 69   when Z_FINISH i
5b50: 73 20 75 73 65 64 2e 0a 0a 20 20 20 20 20 49 66  s used...     If
5b60: 20 61 20 70 72 65 73 65 74 20 64 69 63 74 69 6f   a preset dictio
5b70: 6e 61 72 79 20 69 73 20 6e 65 65 64 65 64 20 61  nary is needed a
5b80: 66 74 65 72 20 74 68 69 73 20 63 61 6c 6c 20 28  fter this call (
5b90: 73 65 65 20 69 6e 66 6c 61 74 65 53 65 74 44 69  see inflateSetDi
5ba0: 63 74 69 6f 6e 61 72 79 0a 20 20 62 65 6c 6f 77  ctionary.  below
5bb0: 29 2c 20 69 6e 66 6c 61 74 65 20 73 65 74 73 20  ), inflate sets 
5bc0: 73 74 72 6d 2d 3e 61 64 6c 65 72 20 74 6f 20 74  strm->adler to t
5bd0: 68 65 20 41 64 6c 65 72 2d 33 32 20 63 68 65 63  he Adler-32 chec
5be0: 6b 73 75 6d 20 6f 66 20 74 68 65 20 64 69 63 74  ksum of the dict
5bf0: 69 6f 6e 61 72 79 0a 20 20 63 68 6f 73 65 6e 20  ionary.  chosen 
5c00: 62 79 20 74 68 65 20 63 6f 6d 70 72 65 73 73 6f  by the compresso
5c10: 72 20 61 6e 64 20 72 65 74 75 72 6e 73 20 5a 5f  r and returns Z_
5c20: 4e 45 45 44 5f 44 49 43 54 3b 20 6f 74 68 65 72  NEED_DICT; other
5c30: 77 69 73 65 20 69 74 20 73 65 74 73 0a 20 20 73  wise it sets.  s
5c40: 74 72 6d 2d 3e 61 64 6c 65 72 20 74 6f 20 74 68  trm->adler to th
5c50: 65 20 41 64 6c 65 72 2d 33 32 20 63 68 65 63 6b  e Adler-32 check
5c60: 73 75 6d 20 6f 66 20 61 6c 6c 20 6f 75 74 70 75  sum of all outpu
5c70: 74 20 70 72 6f 64 75 63 65 64 20 73 6f 20 66 61  t produced so fa
5c80: 72 20 28 74 68 61 74 20 69 73 2c 0a 20 20 74 6f  r (that is,.  to
5c90: 74 61 6c 5f 6f 75 74 20 62 79 74 65 73 29 20 61  tal_out bytes) a
5ca0: 6e 64 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 2c  nd returns Z_OK,
5cb0: 20 5a 5f 53 54 52 45 41 4d 5f 45 4e 44 20 6f 72   Z_STREAM_END or
5cc0: 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 61   an error code a
5cd0: 73 20 64 65 73 63 72 69 62 65 64 0a 20 20 62 65  s described.  be
5ce0: 6c 6f 77 2e 20 20 41 74 20 74 68 65 20 65 6e 64  low.  At the end
5cf0: 20 6f 66 20 74 68 65 20 73 74 72 65 61 6d 2c 20   of the stream, 
5d00: 69 6e 66 6c 61 74 65 28 29 20 63 68 65 63 6b 73  inflate() checks
5d10: 20 74 68 61 74 20 69 74 73 20 63 6f 6d 70 75 74   that its comput
5d20: 65 64 20 61 64 6c 65 72 33 32 0a 20 20 63 68 65  ed adler32.  che
5d30: 63 6b 73 75 6d 20 69 73 20 65 71 75 61 6c 20 74  cksum is equal t
5d40: 6f 20 74 68 61 74 20 73 61 76 65 64 20 62 79 20  o that saved by 
5d50: 74 68 65 20 63 6f 6d 70 72 65 73 73 6f 72 20 61  the compressor a
5d60: 6e 64 20 72 65 74 75 72 6e 73 20 5a 5f 53 54 52  nd returns Z_STR
5d70: 45 41 4d 5f 45 4e 44 0a 20 20 6f 6e 6c 79 20 69  EAM_END.  only i
5d80: 66 20 74 68 65 20 63 68 65 63 6b 73 75 6d 20 69  f the checksum i
5d90: 73 20 63 6f 72 72 65 63 74 2e 0a 0a 20 20 20 20  s correct...    
5da0: 69 6e 66 6c 61 74 65 28 29 20 63 61 6e 20 64 65  inflate() can de
5db0: 63 6f 6d 70 72 65 73 73 20 61 6e 64 20 63 68 65  compress and che
5dc0: 63 6b 20 65 69 74 68 65 72 20 7a 6c 69 62 2d 77  ck either zlib-w
5dd0: 72 61 70 70 65 64 20 6f 72 20 67 7a 69 70 2d 77  rapped or gzip-w
5de0: 72 61 70 70 65 64 0a 20 20 64 65 66 6c 61 74 65  rapped.  deflate
5df0: 20 64 61 74 61 2e 20 20 54 68 65 20 68 65 61 64   data.  The head
5e00: 65 72 20 74 79 70 65 20 69 73 20 64 65 74 65 63  er type is detec
5e10: 74 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ted automaticall
5e20: 79 2c 20 69 66 20 72 65 71 75 65 73 74 65 64 20  y, if requested 
5e30: 77 68 65 6e 0a 20 20 69 6e 69 74 69 61 6c 69 7a  when.  initializ
5e40: 69 6e 67 20 77 69 74 68 20 69 6e 66 6c 61 74 65  ing with inflate
5e50: 49 6e 69 74 32 28 29 2e 20 20 41 6e 79 20 69 6e  Init2().  Any in
5e60: 66 6f 72 6d 61 74 69 6f 6e 20 63 6f 6e 74 61 69  formation contai
5e70: 6e 65 64 20 69 6e 20 74 68 65 20 67 7a 69 70 0a  ned in the gzip.
5e80: 20 20 68 65 61 64 65 72 20 69 73 20 6e 6f 74 20    header is not 
5e90: 72 65 74 61 69 6e 65 64 2c 20 73 6f 20 61 70 70  retained, so app
5ea0: 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 6e  lications that n
5eb0: 65 65 64 20 74 68 61 74 20 69 6e 66 6f 72 6d 61  eed that informa
5ec0: 74 69 6f 6e 20 73 68 6f 75 6c 64 0a 20 20 69 6e  tion should.  in
5ed0: 73 74 65 61 64 20 75 73 65 20 72 61 77 20 69 6e  stead use raw in
5ee0: 66 6c 61 74 65 2c 20 73 65 65 20 69 6e 66 6c 61  flate, see infla
5ef0: 74 65 49 6e 69 74 32 28 29 20 62 65 6c 6f 77 2c  teInit2() below,
5f00: 20 6f 72 20 69 6e 66 6c 61 74 65 42 61 63 6b 28   or inflateBack(
5f10: 29 20 61 6e 64 0a 20 20 70 65 72 66 6f 72 6d 20  ) and.  perform 
5f20: 74 68 65 69 72 20 6f 77 6e 20 70 72 6f 63 65 73  their own proces
5f30: 73 69 6e 67 20 6f 66 20 74 68 65 20 67 7a 69 70  sing of the gzip
5f40: 20 68 65 61 64 65 72 20 61 6e 64 20 74 72 61 69   header and trai
5f50: 6c 65 72 2e 20 20 57 68 65 6e 20 70 72 6f 63 65  ler.  When proce
5f60: 73 73 69 6e 67 0a 20 20 67 7a 69 70 2d 77 72 61  ssing.  gzip-wra
5f70: 70 70 65 64 20 64 65 66 6c 61 74 65 20 64 61 74  pped deflate dat
5f80: 61 2c 20 73 74 72 6d 2d 3e 61 64 6c 65 72 33 32  a, strm->adler32
5f90: 20 69 73 20 73 65 74 20 74 6f 20 74 68 65 20 43   is set to the C
5fa0: 52 43 2d 33 32 20 6f 66 20 74 68 65 20 6f 75 74  RC-32 of the out
5fb0: 70 75 74 0a 20 20 70 72 6f 64 75 63 74 65 64 20  put.  producted 
5fc0: 73 6f 20 66 61 72 2e 20 20 54 68 65 20 43 52 43  so far.  The CRC
5fd0: 2d 33 32 20 69 73 20 63 68 65 63 6b 65 64 20 61  -32 is checked a
5fe0: 67 61 69 6e 73 74 20 74 68 65 20 67 7a 69 70 20  gainst the gzip 
5ff0: 74 72 61 69 6c 65 72 2e 0a 0a 20 20 20 20 69 6e  trailer...    in
6000: 66 6c 61 74 65 28 29 20 72 65 74 75 72 6e 73 20  flate() returns 
6010: 5a 5f 4f 4b 20 69 66 20 73 6f 6d 65 20 70 72 6f  Z_OK if some pro
6020: 67 72 65 73 73 20 68 61 73 20 62 65 65 6e 20 6d  gress has been m
6030: 61 64 65 20 28 6d 6f 72 65 20 69 6e 70 75 74 20  ade (more input 
6040: 70 72 6f 63 65 73 73 65 64 0a 20 20 6f 72 20 6d  processed.  or m
6050: 6f 72 65 20 6f 75 74 70 75 74 20 70 72 6f 64 75  ore output produ
6060: 63 65 64 29 2c 20 5a 5f 53 54 52 45 41 4d 5f 45  ced), Z_STREAM_E
6070: 4e 44 20 69 66 20 74 68 65 20 65 6e 64 20 6f 66  ND if the end of
6080: 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65 64 20   the compressed 
6090: 64 61 74 61 20 68 61 73 0a 20 20 62 65 65 6e 20  data has.  been 
60a0: 72 65 61 63 68 65 64 20 61 6e 64 20 61 6c 6c 20  reached and all 
60b0: 75 6e 63 6f 6d 70 72 65 73 73 65 64 20 6f 75 74  uncompressed out
60c0: 70 75 74 20 68 61 73 20 62 65 65 6e 20 70 72 6f  put has been pro
60d0: 64 75 63 65 64 2c 20 5a 5f 4e 45 45 44 5f 44 49  duced, Z_NEED_DI
60e0: 43 54 20 69 66 20 61 0a 20 20 70 72 65 73 65 74  CT if a.  preset
60f0: 20 64 69 63 74 69 6f 6e 61 72 79 20 69 73 20 6e   dictionary is n
6100: 65 65 64 65 64 20 61 74 20 74 68 69 73 20 70 6f  eeded at this po
6110: 69 6e 74 2c 20 5a 5f 44 41 54 41 5f 45 52 52 4f  int, Z_DATA_ERRO
6120: 52 20 69 66 20 74 68 65 20 69 6e 70 75 74 20 64  R if the input d
6130: 61 74 61 20 77 61 73 0a 20 20 63 6f 72 72 75 70  ata was.  corrup
6140: 74 65 64 20 28 69 6e 70 75 74 20 73 74 72 65 61  ted (input strea
6150: 6d 20 6e 6f 74 20 63 6f 6e 66 6f 72 6d 69 6e 67  m not conforming
6160: 20 74 6f 20 74 68 65 20 7a 6c 69 62 20 66 6f 72   to the zlib for
6170: 6d 61 74 20 6f 72 20 69 6e 63 6f 72 72 65 63 74  mat or incorrect
6180: 20 63 68 65 63 6b 0a 20 20 76 61 6c 75 65 29 2c   check.  value),
6190: 20 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20   Z_STREAM_ERROR 
61a0: 69 66 20 74 68 65 20 73 74 72 65 61 6d 20 73 74  if the stream st
61b0: 72 75 63 74 75 72 65 20 77 61 73 20 69 6e 63 6f  ructure was inco
61c0: 6e 73 69 73 74 65 6e 74 20 28 66 6f 72 20 65 78  nsistent (for ex
61d0: 61 6d 70 6c 65 0a 20 20 6e 65 78 74 5f 69 6e 20  ample.  next_in 
61e0: 6f 72 20 6e 65 78 74 5f 6f 75 74 20 77 61 73 20  or next_out was 
61f0: 5a 5f 4e 55 4c 4c 29 2c 20 5a 5f 4d 45 4d 5f 45  Z_NULL), Z_MEM_E
6200: 52 52 4f 52 20 69 66 20 74 68 65 72 65 20 77 61  RROR if there wa
6210: 73 20 6e 6f 74 20 65 6e 6f 75 67 68 20 6d 65 6d  s not enough mem
6220: 6f 72 79 2c 0a 20 20 5a 5f 42 55 46 5f 45 52 52  ory,.  Z_BUF_ERR
6230: 4f 52 20 69 66 20 6e 6f 20 70 72 6f 67 72 65 73  OR if no progres
6240: 73 20 69 73 20 70 6f 73 73 69 62 6c 65 20 6f 72  s is possible or
6250: 20 69 66 20 74 68 65 72 65 20 77 61 73 20 6e 6f   if there was no
6260: 74 20 65 6e 6f 75 67 68 20 72 6f 6f 6d 20 69 6e  t enough room in
6270: 20 74 68 65 0a 20 20 6f 75 74 70 75 74 20 62 75   the.  output bu
6280: 66 66 65 72 20 77 68 65 6e 20 5a 5f 46 49 4e 49  ffer when Z_FINI
6290: 53 48 20 69 73 20 75 73 65 64 2e 20 20 4e 6f 74  SH is used.  Not
62a0: 65 20 74 68 61 74 20 5a 5f 42 55 46 5f 45 52 52  e that Z_BUF_ERR
62b0: 4f 52 20 69 73 20 6e 6f 74 20 66 61 74 61 6c 2c  OR is not fatal,
62c0: 20 61 6e 64 0a 20 20 69 6e 66 6c 61 74 65 28 29   and.  inflate()
62d0: 20 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 61   can be called a
62e0: 67 61 69 6e 20 77 69 74 68 20 6d 6f 72 65 20 69  gain with more i
62f0: 6e 70 75 74 20 61 6e 64 20 6d 6f 72 65 20 6f 75  nput and more ou
6300: 74 70 75 74 20 73 70 61 63 65 20 74 6f 0a 20 20  tput space to.  
6310: 63 6f 6e 74 69 6e 75 65 20 64 65 63 6f 6d 70 72  continue decompr
6320: 65 73 73 69 6e 67 2e 20 20 49 66 20 5a 5f 44 41  essing.  If Z_DA
6330: 54 41 5f 45 52 52 4f 52 20 69 73 20 72 65 74 75  TA_ERROR is retu
6340: 72 6e 65 64 2c 20 74 68 65 20 61 70 70 6c 69 63  rned, the applic
6350: 61 74 69 6f 6e 20 6d 61 79 0a 20 20 74 68 65 6e  ation may.  then
6360: 20 63 61 6c 6c 20 69 6e 66 6c 61 74 65 53 79 6e   call inflateSyn
6370: 63 28 29 20 74 6f 20 6c 6f 6f 6b 20 66 6f 72 20  c() to look for 
6380: 61 20 67 6f 6f 64 20 63 6f 6d 70 72 65 73 73 69  a good compressi
6390: 6f 6e 20 62 6c 6f 63 6b 20 69 66 20 61 20 70 61  on block if a pa
63a0: 72 74 69 61 6c 0a 20 20 72 65 63 6f 76 65 72 79  rtial.  recovery
63b0: 20 6f 66 20 74 68 65 20 64 61 74 61 20 69 73 20   of the data is 
63c0: 64 65 73 69 72 65 64 2e 0a 2a 2f 0a 0a 0a 5a 45  desired..*/...ZE
63d0: 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52  XTERN int ZEXPOR
63e0: 54 20 69 6e 66 6c 61 74 65 45 6e 64 20 4f 46 28  T inflateEnd OF(
63f0: 28 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 29  (z_streamp strm)
6400: 29 3b 0a 2f 2a 0a 20 20 20 20 20 41 6c 6c 20 64  );./*.     All d
6410: 79 6e 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f 63  ynamically alloc
6420: 61 74 65 64 20 64 61 74 61 20 73 74 72 75 63 74  ated data struct
6430: 75 72 65 73 20 66 6f 72 20 74 68 69 73 20 73 74  ures for this st
6440: 72 65 61 6d 20 61 72 65 20 66 72 65 65 64 2e 0a  ream are freed..
6450: 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e     This function
6460: 20 64 69 73 63 61 72 64 73 20 61 6e 79 20 75 6e   discards any un
6470: 70 72 6f 63 65 73 73 65 64 20 69 6e 70 75 74 20  processed input 
6480: 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 66 6c 75  and does not flu
6490: 73 68 20 61 6e 79 20 70 65 6e 64 69 6e 67 0a 20  sh any pending. 
64a0: 20 20 6f 75 74 70 75 74 2e 0a 0a 20 20 20 20 20    output...     
64b0: 69 6e 66 6c 61 74 65 45 6e 64 20 72 65 74 75 72  inflateEnd retur
64c0: 6e 73 20 5a 5f 4f 4b 20 69 66 20 73 75 63 63 65  ns Z_OK if succe
64d0: 73 73 2c 20 5a 5f 53 54 52 45 41 4d 5f 45 52 52  ss, Z_STREAM_ERR
64e0: 4f 52 20 69 66 20 74 68 65 20 73 74 72 65 61 6d  OR if the stream
64f0: 20 73 74 61 74 65 0a 20 20 20 77 61 73 20 69 6e   state.   was in
6500: 63 6f 6e 73 69 73 74 65 6e 74 2e 20 20 49 6e 20  consistent.  In 
6510: 74 68 65 20 65 72 72 6f 72 20 63 61 73 65 2c 20  the error case, 
6520: 6d 73 67 20 6d 61 79 20 62 65 20 73 65 74 20 62  msg may be set b
6530: 75 74 20 74 68 65 6e 20 70 6f 69 6e 74 73 20 74  ut then points t
6540: 6f 20 61 0a 20 20 20 73 74 61 74 69 63 20 73 74  o a.   static st
6550: 72 69 6e 67 20 28 77 68 69 63 68 20 6d 75 73 74  ring (which must
6560: 20 6e 6f 74 20 62 65 20 64 65 61 6c 6c 6f 63 61   not be dealloca
6570: 74 65 64 29 2e 0a 2a 2f 0a 0a 0a 20 20 20 20 20  ted)..*/...     
6580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6590: 20 20 20 2f 2a 20 41 64 76 61 6e 63 65 64 20 66     /* Advanced f
65a0: 75 6e 63 74 69 6f 6e 73 20 2a 2f 0a 0a 2f 2a 0a  unctions */../*.
65b0: 20 20 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e      The followin
65c0: 67 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20  g functions are 
65d0: 6e 65 65 64 65 64 20 6f 6e 6c 79 20 69 6e 20 73  needed only in s
65e0: 6f 6d 65 20 73 70 65 63 69 61 6c 20 61 70 70 6c  ome special appl
65f0: 69 63 61 74 69 6f 6e 73 2e 0a 2a 2f 0a 0a 2f 2a  ications..*/../*
6600: 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45 58  .ZEXTERN int ZEX
6610: 50 4f 52 54 20 64 65 66 6c 61 74 65 49 6e 69 74  PORT deflateInit
6620: 32 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70 20  2 OF((z_streamp 
6630: 73 74 72 6d 2c 0a 20 20 20 20 20 20 20 20 20 20  strm,.          
6640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6650: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 20             int  
6660: 6c 65 76 65 6c 2c 0a 20 20 20 20 20 20 20 20 20  level,.         
6670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6680: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
6690: 20 6d 65 74 68 6f 64 2c 0a 20 20 20 20 20 20 20   method,.       
66a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
66c0: 74 20 20 77 69 6e 64 6f 77 42 69 74 73 2c 0a 20  t  windowBits,. 
66d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66f0: 20 20 20 20 69 6e 74 20 20 6d 65 6d 4c 65 76 65      int  memLeve
6700: 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  l,.             
6710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6720: 20 20 20 20 20 20 20 20 69 6e 74 20 20 73 74 72          int  str
6730: 61 74 65 67 79 29 29 3b 0a 0a 20 20 20 20 20 54  ategy));..     T
6740: 68 69 73 20 69 73 20 61 6e 6f 74 68 65 72 20 76  his is another v
6750: 65 72 73 69 6f 6e 20 6f 66 20 64 65 66 6c 61 74  ersion of deflat
6760: 65 49 6e 69 74 20 77 69 74 68 20 6d 6f 72 65 20  eInit with more 
6770: 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6f 70 74 69  compression opti
6780: 6f 6e 73 2e 20 20 54 68 65 0a 20 20 20 66 69 65  ons.  The.   fie
6790: 6c 64 73 20 6e 65 78 74 5f 69 6e 2c 20 7a 61 6c  lds next_in, zal
67a0: 6c 6f 63 2c 20 7a 66 72 65 65 20 61 6e 64 20 6f  loc, zfree and o
67b0: 70 61 71 75 65 20 6d 75 73 74 20 62 65 20 69 6e  paque must be in
67c0: 69 74 69 61 6c 69 7a 65 64 20 62 65 66 6f 72 65  itialized before
67d0: 20 62 79 20 74 68 65 0a 20 20 20 63 61 6c 6c 65   by the.   calle
67e0: 72 2e 0a 0a 20 20 20 20 20 54 68 65 20 6d 65 74  r...     The met
67f0: 68 6f 64 20 70 61 72 61 6d 65 74 65 72 20 69 73  hod parameter is
6800: 20 74 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e   the compression
6810: 20 6d 65 74 68 6f 64 2e 20 20 49 74 20 6d 75 73   method.  It mus
6820: 74 20 62 65 20 5a 5f 44 45 46 4c 41 54 45 44 20  t be Z_DEFLATED 
6830: 69 6e 0a 20 20 20 74 68 69 73 20 76 65 72 73 69  in.   this versi
6840: 6f 6e 20 6f 66 20 74 68 65 20 6c 69 62 72 61 72  on of the librar
6850: 79 2e 0a 0a 20 20 20 20 20 54 68 65 20 77 69 6e  y...     The win
6860: 64 6f 77 42 69 74 73 20 70 61 72 61 6d 65 74 65  dowBits paramete
6870: 72 20 69 73 20 74 68 65 20 62 61 73 65 20 74 77  r is the base tw
6880: 6f 20 6c 6f 67 61 72 69 74 68 6d 20 6f 66 20 74  o logarithm of t
6890: 68 65 20 77 69 6e 64 6f 77 20 73 69 7a 65 0a 20  he window size. 
68a0: 20 20 28 74 68 65 20 73 69 7a 65 20 6f 66 20 74    (the size of t
68b0: 68 65 20 68 69 73 74 6f 72 79 20 62 75 66 66 65  he history buffe
68c0: 72 29 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62  r).  It should b
68d0: 65 20 69 6e 20 74 68 65 20 72 61 6e 67 65 20 38  e in the range 8
68e0: 2e 2e 31 35 20 66 6f 72 20 74 68 69 73 0a 20 20  ..15 for this.  
68f0: 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20   version of the 
6900: 6c 69 62 72 61 72 79 2e 20 20 4c 61 72 67 65 72  library.  Larger
6910: 20 76 61 6c 75 65 73 20 6f 66 20 74 68 69 73 20   values of this 
6920: 70 61 72 61 6d 65 74 65 72 20 72 65 73 75 6c 74  parameter result
6930: 20 69 6e 20 62 65 74 74 65 72 0a 20 20 20 63 6f   in better.   co
6940: 6d 70 72 65 73 73 69 6f 6e 20 61 74 20 74 68 65  mpression at the
6950: 20 65 78 70 65 6e 73 65 20 6f 66 20 6d 65 6d 6f   expense of memo
6960: 72 79 20 75 73 61 67 65 2e 20 20 54 68 65 20 64  ry usage.  The d
6970: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
6980: 31 35 20 69 66 0a 20 20 20 64 65 66 6c 61 74 65  15 if.   deflate
6990: 49 6e 69 74 20 69 73 20 75 73 65 64 20 69 6e 73  Init is used ins
69a0: 74 65 61 64 2e 0a 0a 20 20 20 20 20 77 69 6e 64  tead...     wind
69b0: 6f 77 42 69 74 73 20 63 61 6e 20 61 6c 73 6f 20  owBits can also 
69c0: 62 65 20 2d 38 2e 2e 2d 31 35 20 66 6f 72 20 72  be -8..-15 for r
69d0: 61 77 20 64 65 66 6c 61 74 65 2e 20 20 49 6e 20  aw deflate.  In 
69e0: 74 68 69 73 20 63 61 73 65 2c 20 2d 77 69 6e 64  this case, -wind
69f0: 6f 77 42 69 74 73 0a 20 20 20 64 65 74 65 72 6d  owBits.   determ
6a00: 69 6e 65 73 20 74 68 65 20 77 69 6e 64 6f 77 20  ines the window 
6a10: 73 69 7a 65 2e 20 20 64 65 66 6c 61 74 65 28 29  size.  deflate()
6a20: 20 77 69 6c 6c 20 74 68 65 6e 20 67 65 6e 65 72   will then gener
6a30: 61 74 65 20 72 61 77 20 64 65 66 6c 61 74 65 20  ate raw deflate 
6a40: 64 61 74 61 0a 20 20 20 77 69 74 68 20 6e 6f 20  data.   with no 
6a50: 7a 6c 69 62 20 68 65 61 64 65 72 20 6f 72 20 74  zlib header or t
6a60: 72 61 69 6c 65 72 2c 20 61 6e 64 20 77 69 6c 6c  railer, and will
6a70: 20 6e 6f 74 20 63 6f 6d 70 75 74 65 20 61 6e 20   not compute an 
6a80: 61 64 6c 65 72 33 32 20 63 68 65 63 6b 20 76 61  adler32 check va
6a90: 6c 75 65 2e 0a 0a 20 20 20 20 20 77 69 6e 64 6f  lue...     windo
6aa0: 77 42 69 74 73 20 63 61 6e 20 61 6c 73 6f 20 62  wBits can also b
6ab0: 65 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 31  e greater than 1
6ac0: 35 20 66 6f 72 20 6f 70 74 69 6f 6e 61 6c 20 67  5 for optional g
6ad0: 7a 69 70 20 65 6e 63 6f 64 69 6e 67 2e 20 20 41  zip encoding.  A
6ae0: 64 64 0a 20 20 20 31 36 20 74 6f 20 77 69 6e 64  dd.   16 to wind
6af0: 6f 77 42 69 74 73 20 74 6f 20 77 72 69 74 65 20  owBits to write 
6b00: 61 20 73 69 6d 70 6c 65 20 67 7a 69 70 20 68 65  a simple gzip he
6b10: 61 64 65 72 20 61 6e 64 20 74 72 61 69 6c 65 72  ader and trailer
6b20: 20 61 72 6f 75 6e 64 20 74 68 65 0a 20 20 20 63   around the.   c
6b30: 6f 6d 70 72 65 73 73 65 64 20 64 61 74 61 20 69  ompressed data i
6b40: 6e 73 74 65 61 64 20 6f 66 20 61 20 7a 6c 69 62  nstead of a zlib
6b50: 20 77 72 61 70 70 65 72 2e 20 20 54 68 65 20 67   wrapper.  The g
6b60: 7a 69 70 20 68 65 61 64 65 72 20 77 69 6c 6c 20  zip header will 
6b70: 68 61 76 65 20 6e 6f 0a 20 20 20 66 69 6c 65 20  have no.   file 
6b80: 6e 61 6d 65 2c 20 6e 6f 20 65 78 74 72 61 20 64  name, no extra d
6b90: 61 74 61 2c 20 6e 6f 20 63 6f 6d 6d 65 6e 74 2c  ata, no comment,
6ba0: 20 6e 6f 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e   no modification
6bb0: 20 74 69 6d 65 20 28 73 65 74 20 74 6f 20 7a 65   time (set to ze
6bc0: 72 6f 29 2c 20 6e 6f 0a 20 20 20 68 65 61 64 65  ro), no.   heade
6bd0: 72 20 63 72 63 2c 20 61 6e 64 20 74 68 65 20 6f  r crc, and the o
6be0: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
6bf0: 77 69 6c 6c 20 62 65 20 73 65 74 20 74 6f 20 32  will be set to 2
6c00: 35 35 20 28 75 6e 6b 6e 6f 77 6e 29 2e 20 20 49  55 (unknown).  I
6c10: 66 20 61 0a 20 20 20 67 7a 69 70 20 73 74 72 65  f a.   gzip stre
6c20: 61 6d 20 69 73 20 62 65 69 6e 67 20 77 72 69 74  am is being writ
6c30: 74 65 6e 2c 20 73 74 72 6d 2d 3e 61 64 6c 65 72  ten, strm->adler
6c40: 20 69 73 20 61 20 63 72 63 33 32 20 69 6e 73 74   is a crc32 inst
6c50: 65 61 64 20 6f 66 20 61 6e 20 61 64 6c 65 72 33  ead of an adler3
6c60: 32 2e 0a 0a 20 20 20 20 20 54 68 65 20 6d 65 6d  2...     The mem
6c70: 4c 65 76 65 6c 20 70 61 72 61 6d 65 74 65 72 20  Level parameter 
6c80: 73 70 65 63 69 66 69 65 73 20 68 6f 77 20 6d 75  specifies how mu
6c90: 63 68 20 6d 65 6d 6f 72 79 20 73 68 6f 75 6c 64  ch memory should
6ca0: 20 62 65 20 61 6c 6c 6f 63 61 74 65 64 0a 20 20   be allocated.  
6cb0: 20 66 6f 72 20 74 68 65 20 69 6e 74 65 72 6e 61   for the interna
6cc0: 6c 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 73 74  l compression st
6cd0: 61 74 65 2e 20 20 6d 65 6d 4c 65 76 65 6c 3d 31  ate.  memLevel=1
6ce0: 20 75 73 65 73 20 6d 69 6e 69 6d 75 6d 20 6d 65   uses minimum me
6cf0: 6d 6f 72 79 20 62 75 74 20 69 73 0a 20 20 20 73  mory but is.   s
6d00: 6c 6f 77 20 61 6e 64 20 72 65 64 75 63 65 73 20  low and reduces 
6d10: 63 6f 6d 70 72 65 73 73 69 6f 6e 20 72 61 74 69  compression rati
6d20: 6f 3b 20 6d 65 6d 4c 65 76 65 6c 3d 39 20 75 73  o; memLevel=9 us
6d30: 65 73 20 6d 61 78 69 6d 75 6d 20 6d 65 6d 6f 72  es maximum memor
6d40: 79 20 66 6f 72 0a 20 20 20 6f 70 74 69 6d 61 6c  y for.   optimal
6d50: 20 73 70 65 65 64 2e 20 20 54 68 65 20 64 65 66   speed.  The def
6d60: 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 38 2e  ault value is 8.
6d70: 20 20 53 65 65 20 7a 63 6f 6e 66 2e 68 20 66 6f    See zconf.h fo
6d80: 72 20 74 6f 74 61 6c 20 6d 65 6d 6f 72 79 20 75  r total memory u
6d90: 73 61 67 65 0a 20 20 20 61 73 20 61 20 66 75 6e  sage.   as a fun
6da0: 63 74 69 6f 6e 20 6f 66 20 77 69 6e 64 6f 77 42  ction of windowB
6db0: 69 74 73 20 61 6e 64 20 6d 65 6d 4c 65 76 65 6c  its and memLevel
6dc0: 2e 0a 0a 20 20 20 20 20 54 68 65 20 73 74 72 61  ...     The stra
6dd0: 74 65 67 79 20 70 61 72 61 6d 65 74 65 72 20 69  tegy parameter i
6de0: 73 20 75 73 65 64 20 74 6f 20 74 75 6e 65 20 74  s used to tune t
6df0: 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 61  he compression a
6e00: 6c 67 6f 72 69 74 68 6d 2e 20 20 55 73 65 20 74  lgorithm.  Use t
6e10: 68 65 0a 20 20 20 76 61 6c 75 65 20 5a 5f 44 45  he.   value Z_DE
6e20: 46 41 55 4c 54 5f 53 54 52 41 54 45 47 59 20 66  FAULT_STRATEGY f
6e30: 6f 72 20 6e 6f 72 6d 61 6c 20 64 61 74 61 2c 20  or normal data, 
6e40: 5a 5f 46 49 4c 54 45 52 45 44 20 66 6f 72 20 64  Z_FILTERED for d
6e50: 61 74 61 20 70 72 6f 64 75 63 65 64 20 62 79 20  ata produced by 
6e60: 61 0a 20 20 20 66 69 6c 74 65 72 20 28 6f 72 20  a.   filter (or 
6e70: 70 72 65 64 69 63 74 6f 72 29 2c 20 5a 5f 48 55  predictor), Z_HU
6e80: 46 46 4d 41 4e 5f 4f 4e 4c 59 20 74 6f 20 66 6f  FFMAN_ONLY to fo
6e90: 72 63 65 20 48 75 66 66 6d 61 6e 20 65 6e 63 6f  rce Huffman enco
6ea0: 64 69 6e 67 20 6f 6e 6c 79 20 28 6e 6f 0a 20 20  ding only (no.  
6eb0: 20 73 74 72 69 6e 67 20 6d 61 74 63 68 29 2c 20   string match), 
6ec0: 6f 72 20 5a 5f 52 4c 45 20 74 6f 20 6c 69 6d 69  or Z_RLE to limi
6ed0: 74 20 6d 61 74 63 68 20 64 69 73 74 61 6e 63 65  t match distance
6ee0: 73 20 74 6f 20 6f 6e 65 20 28 72 75 6e 2d 6c 65  s to one (run-le
6ef0: 6e 67 74 68 0a 20 20 20 65 6e 63 6f 64 69 6e 67  ngth.   encoding
6f00: 29 2e 20 20 46 69 6c 74 65 72 65 64 20 64 61 74  ).  Filtered dat
6f10: 61 20 63 6f 6e 73 69 73 74 73 20 6d 6f 73 74 6c  a consists mostl
6f20: 79 20 6f 66 20 73 6d 61 6c 6c 20 76 61 6c 75 65  y of small value
6f30: 73 20 77 69 74 68 20 61 20 73 6f 6d 65 77 68 61  s with a somewha
6f40: 74 0a 20 20 20 72 61 6e 64 6f 6d 20 64 69 73 74  t.   random dist
6f50: 72 69 62 75 74 69 6f 6e 2e 20 20 49 6e 20 74 68  ribution.  In th
6f60: 69 73 20 63 61 73 65 2c 20 74 68 65 20 63 6f 6d  is case, the com
6f70: 70 72 65 73 73 69 6f 6e 20 61 6c 67 6f 72 69 74  pression algorit
6f80: 68 6d 20 69 73 20 74 75 6e 65 64 20 74 6f 0a 20  hm is tuned to. 
6f90: 20 20 63 6f 6d 70 72 65 73 73 20 74 68 65 6d 20    compress them 
6fa0: 62 65 74 74 65 72 2e 20 20 54 68 65 20 65 66 66  better.  The eff
6fb0: 65 63 74 20 6f 66 20 5a 5f 46 49 4c 54 45 52 45  ect of Z_FILTERE
6fc0: 44 20 69 73 20 74 6f 20 66 6f 72 63 65 20 6d 6f  D is to force mo
6fd0: 72 65 20 48 75 66 66 6d 61 6e 0a 20 20 20 63 6f  re Huffman.   co
6fe0: 64 69 6e 67 20 61 6e 64 20 6c 65 73 73 20 73 74  ding and less st
6ff0: 72 69 6e 67 20 6d 61 74 63 68 69 6e 67 3b 20 69  ring matching; i
7000: 74 20 69 73 20 73 6f 6d 65 77 68 61 74 20 69 6e  t is somewhat in
7010: 74 65 72 6d 65 64 69 61 74 65 20 62 65 74 77 65  termediate betwe
7020: 65 6e 0a 20 20 20 5a 5f 44 45 46 41 55 4c 54 5f  en.   Z_DEFAULT_
7030: 53 54 52 41 54 45 47 59 20 61 6e 64 20 5a 5f 48  STRATEGY and Z_H
7040: 55 46 46 4d 41 4e 5f 4f 4e 4c 59 2e 20 20 5a 5f  UFFMAN_ONLY.  Z_
7050: 52 4c 45 20 69 73 20 64 65 73 69 67 6e 65 64 20  RLE is designed 
7060: 74 6f 20 62 65 20 61 6c 6d 6f 73 74 20 61 73 0a  to be almost as.
7070: 20 20 20 66 61 73 74 20 61 73 20 5a 5f 48 55 46     fast as Z_HUF
7080: 46 4d 41 4e 5f 4f 4e 4c 59 2c 20 62 75 74 20 67  FMAN_ONLY, but g
7090: 69 76 65 20 62 65 74 74 65 72 20 63 6f 6d 70 72  ive better compr
70a0: 65 73 73 69 6f 6e 20 66 6f 72 20 50 4e 47 20 69  ession for PNG i
70b0: 6d 61 67 65 20 64 61 74 61 2e 20 20 54 68 65 0a  mage data.  The.
70c0: 20 20 20 73 74 72 61 74 65 67 79 20 70 61 72 61     strategy para
70d0: 6d 65 74 65 72 20 6f 6e 6c 79 20 61 66 66 65 63  meter only affec
70e0: 74 73 20 74 68 65 20 63 6f 6d 70 72 65 73 73 69  ts the compressi
70f0: 6f 6e 20 72 61 74 69 6f 20 62 75 74 20 6e 6f 74  on ratio but not
7100: 20 74 68 65 0a 20 20 20 63 6f 72 72 65 63 74 6e   the.   correctn
7110: 65 73 73 20 6f 66 20 74 68 65 20 63 6f 6d 70 72  ess of the compr
7120: 65 73 73 65 64 20 6f 75 74 70 75 74 20 65 76 65  essed output eve
7130: 6e 20 69 66 20 69 74 20 69 73 20 6e 6f 74 20 73  n if it is not s
7140: 65 74 20 61 70 70 72 6f 70 72 69 61 74 65 6c 79  et appropriately
7150: 2e 0a 20 20 20 5a 5f 46 49 58 45 44 20 70 72 65  ..   Z_FIXED pre
7160: 76 65 6e 74 73 20 74 68 65 20 75 73 65 20 6f 66  vents the use of
7170: 20 64 79 6e 61 6d 69 63 20 48 75 66 66 6d 61 6e   dynamic Huffman
7180: 20 63 6f 64 65 73 2c 20 61 6c 6c 6f 77 69 6e 67   codes, allowing
7190: 20 66 6f 72 20 61 20 73 69 6d 70 6c 65 72 0a 20   for a simpler. 
71a0: 20 20 64 65 63 6f 64 65 72 20 66 6f 72 20 73 70    decoder for sp
71b0: 65 63 69 61 6c 20 61 70 70 6c 69 63 61 74 69 6f  ecial applicatio
71c0: 6e 73 2e 0a 0a 20 20 20 20 20 64 65 66 6c 61 74  ns...     deflat
71d0: 65 49 6e 69 74 32 20 72 65 74 75 72 6e 73 20 5a  eInit2 returns Z
71e0: 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73 2c 20  _OK if success, 
71f0: 5a 5f 4d 45 4d 5f 45 52 52 4f 52 20 69 66 20 74  Z_MEM_ERROR if t
7200: 68 65 72 65 20 77 61 73 20 6e 6f 74 20 65 6e 6f  here was not eno
7210: 75 67 68 0a 20 20 20 6d 65 6d 6f 72 79 2c 20 5a  ugh.   memory, Z
7220: 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 69 66  _STREAM_ERROR if
7230: 20 61 6e 79 20 70 61 72 61 6d 65 74 65 72 20 69   any parameter i
7240: 73 20 69 6e 76 61 6c 69 64 20 28 73 75 63 68 20  s invalid (such 
7250: 61 73 20 61 6e 20 69 6e 76 61 6c 69 64 0a 20 20  as an invalid.  
7260: 20 6d 65 74 68 6f 64 29 2c 20 6f 72 20 5a 5f 56   method), or Z_V
7270: 45 52 53 49 4f 4e 5f 45 52 52 4f 52 20 69 66 20  ERSION_ERROR if 
7280: 74 68 65 20 7a 6c 69 62 20 6c 69 62 72 61 72 79  the zlib library
7290: 20 76 65 72 73 69 6f 6e 20 28 7a 6c 69 62 5f 76   version (zlib_v
72a0: 65 72 73 69 6f 6e 29 20 69 73 0a 20 20 20 69 6e  ersion) is.   in
72b0: 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20  compatible with 
72c0: 74 68 65 20 76 65 72 73 69 6f 6e 20 61 73 73 75  the version assu
72d0: 6d 65 64 20 62 79 20 74 68 65 20 63 61 6c 6c 65  med by the calle
72e0: 72 20 28 5a 4c 49 42 5f 56 45 52 53 49 4f 4e 29  r (ZLIB_VERSION)
72f0: 2e 20 20 6d 73 67 20 69 73 0a 20 20 20 73 65 74  .  msg is.   set
7300: 20 74 6f 20 6e 75 6c 6c 20 69 66 20 74 68 65 72   to null if ther
7310: 65 20 69 73 20 6e 6f 20 65 72 72 6f 72 20 6d 65  e is no error me
7320: 73 73 61 67 65 2e 20 20 64 65 66 6c 61 74 65 49  ssage.  deflateI
7330: 6e 69 74 32 20 64 6f 65 73 20 6e 6f 74 20 70 65  nit2 does not pe
7340: 72 66 6f 72 6d 20 61 6e 79 0a 20 20 20 63 6f 6d  rform any.   com
7350: 70 72 65 73 73 69 6f 6e 3a 20 74 68 69 73 20 77  pression: this w
7360: 69 6c 6c 20 62 65 20 64 6f 6e 65 20 62 79 20 64  ill be done by d
7370: 65 66 6c 61 74 65 28 29 2e 0a 2a 2f 0a 0a 5a 45  eflate()..*/..ZE
7380: 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52  XTERN int ZEXPOR
7390: 54 20 64 65 66 6c 61 74 65 53 65 74 44 69 63 74  T deflateSetDict
73a0: 69 6f 6e 61 72 79 20 4f 46 28 28 7a 5f 73 74 72  ionary OF((z_str
73b0: 65 61 6d 70 20 73 74 72 6d 2c 0a 20 20 20 20 20  eamp strm,.     
73c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
73d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
73e0: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 42 79          const By
73f0: 74 65 66 20 2a 64 69 63 74 69 6f 6e 61 72 79 2c  tef *dictionary,
7400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 49                uI
7430: 6e 74 20 20 64 69 63 74 4c 65 6e 67 74 68 29 29  nt  dictLength))
7440: 3b 0a 2f 2a 0a 20 20 20 20 20 49 6e 69 74 69 61  ;./*.     Initia
7450: 6c 69 7a 65 73 20 74 68 65 20 63 6f 6d 70 72 65  lizes the compre
7460: 73 73 69 6f 6e 20 64 69 63 74 69 6f 6e 61 72 79  ssion dictionary
7470: 20 66 72 6f 6d 20 74 68 65 20 67 69 76 65 6e 20   from the given 
7480: 62 79 74 65 20 73 65 71 75 65 6e 63 65 0a 20 20  byte sequence.  
7490: 20 77 69 74 68 6f 75 74 20 70 72 6f 64 75 63 69   without produci
74a0: 6e 67 20 61 6e 79 20 63 6f 6d 70 72 65 73 73 65  ng any compresse
74b0: 64 20 6f 75 74 70 75 74 2e 20 20 57 68 65 6e 20  d output.  When 
74c0: 75 73 69 6e 67 20 74 68 65 20 7a 6c 69 62 20 66  using the zlib f
74d0: 6f 72 6d 61 74 2c 20 74 68 69 73 0a 20 20 20 66  ormat, this.   f
74e0: 75 6e 63 74 69 6f 6e 20 6d 75 73 74 20 62 65 20  unction must be 
74f0: 63 61 6c 6c 65 64 20 69 6d 6d 65 64 69 61 74 65  called immediate
7500: 6c 79 20 61 66 74 65 72 20 64 65 66 6c 61 74 65  ly after deflate
7510: 49 6e 69 74 2c 20 64 65 66 6c 61 74 65 49 6e 69  Init, deflateIni
7520: 74 32 20 6f 72 0a 20 20 20 64 65 66 6c 61 74 65  t2 or.   deflate
7530: 52 65 73 65 74 2c 20 61 6e 64 20 62 65 66 6f 72  Reset, and befor
7540: 65 20 61 6e 79 20 63 61 6c 6c 20 6f 66 20 64 65  e any call of de
7550: 66 6c 61 74 65 2e 20 20 57 68 65 6e 20 64 6f 69  flate.  When doi
7560: 6e 67 20 72 61 77 20 64 65 66 6c 61 74 65 2c 20  ng raw deflate, 
7570: 74 68 69 73 0a 20 20 20 66 75 6e 63 74 69 6f 6e  this.   function
7580: 20 6d 75 73 74 20 62 65 20 63 61 6c 6c 65 64 20   must be called 
7590: 65 69 74 68 65 72 20 62 65 66 6f 72 65 20 61 6e  either before an
75a0: 79 20 63 61 6c 6c 20 6f 66 20 64 65 66 6c 61 74  y call of deflat
75b0: 65 2c 20 6f 72 20 69 6d 6d 65 64 69 61 74 65 6c  e, or immediatel
75c0: 79 0a 20 20 20 61 66 74 65 72 20 74 68 65 20 63  y.   after the c
75d0: 6f 6d 70 6c 65 74 69 6f 6e 20 6f 66 20 61 20 64  ompletion of a d
75e0: 65 66 6c 61 74 65 20 62 6c 6f 63 6b 2c 20 69 2e  eflate block, i.
75f0: 65 2e 20 61 66 74 65 72 20 61 6c 6c 20 69 6e 70  e. after all inp
7600: 75 74 20 68 61 73 20 62 65 65 6e 0a 20 20 20 63  ut has been.   c
7610: 6f 6e 73 75 6d 65 64 20 61 6e 64 20 61 6c 6c 20  onsumed and all 
7620: 6f 75 74 70 75 74 20 68 61 73 20 62 65 65 6e 20  output has been 
7630: 64 65 6c 69 76 65 72 65 64 20 77 68 65 6e 20 75  delivered when u
7640: 73 69 6e 67 20 61 6e 79 20 6f 66 20 74 68 65 20  sing any of the 
7650: 66 6c 75 73 68 0a 20 20 20 6f 70 74 69 6f 6e 73  flush.   options
7660: 20 5a 5f 42 4c 4f 43 4b 2c 20 5a 5f 50 41 52 54   Z_BLOCK, Z_PART
7670: 49 41 4c 5f 46 4c 55 53 48 2c 20 5a 5f 53 59 4e  IAL_FLUSH, Z_SYN
7680: 43 5f 46 4c 55 53 48 2c 20 6f 72 20 5a 5f 46 55  C_FLUSH, or Z_FU
7690: 4c 4c 5f 46 4c 55 53 48 2e 20 20 54 68 65 0a 20  LL_FLUSH.  The. 
76a0: 20 20 63 6f 6d 70 72 65 73 73 6f 72 20 61 6e 64    compressor and
76b0: 20 64 65 63 6f 6d 70 72 65 73 73 6f 72 20 6d 75   decompressor mu
76c0: 73 74 20 75 73 65 20 65 78 61 63 74 6c 79 20 74  st use exactly t
76d0: 68 65 20 73 61 6d 65 20 64 69 63 74 69 6f 6e 61  he same dictiona
76e0: 72 79 20 28 73 65 65 0a 20 20 20 69 6e 66 6c 61  ry (see.   infla
76f0: 74 65 53 65 74 44 69 63 74 69 6f 6e 61 72 79 29  teSetDictionary)
7700: 2e 0a 0a 20 20 20 20 20 54 68 65 20 64 69 63 74  ...     The dict
7710: 69 6f 6e 61 72 79 20 73 68 6f 75 6c 64 20 63 6f  ionary should co
7720: 6e 73 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73  nsist of strings
7730: 20 28 62 79 74 65 20 73 65 71 75 65 6e 63 65 73   (byte sequences
7740: 29 20 74 68 61 74 20 61 72 65 20 6c 69 6b 65 6c  ) that are likel
7750: 79 0a 20 20 20 74 6f 20 62 65 20 65 6e 63 6f 75  y.   to be encou
7760: 6e 74 65 72 65 64 20 6c 61 74 65 72 20 69 6e 20  ntered later in 
7770: 74 68 65 20 64 61 74 61 20 74 6f 20 62 65 20 63  the data to be c
7780: 6f 6d 70 72 65 73 73 65 64 2c 20 77 69 74 68 20  ompressed, with 
7790: 74 68 65 20 6d 6f 73 74 20 63 6f 6d 6d 6f 6e 6c  the most commonl
77a0: 79 0a 20 20 20 75 73 65 64 20 73 74 72 69 6e 67  y.   used string
77b0: 73 20 70 72 65 66 65 72 61 62 6c 79 20 70 75 74  s preferably put
77c0: 20 74 6f 77 61 72 64 73 20 74 68 65 20 65 6e 64   towards the end
77d0: 20 6f 66 20 74 68 65 20 64 69 63 74 69 6f 6e 61   of the dictiona
77e0: 72 79 2e 20 20 55 73 69 6e 67 20 61 0a 20 20 20  ry.  Using a.   
77f0: 64 69 63 74 69 6f 6e 61 72 79 20 69 73 20 6d 6f  dictionary is mo
7800: 73 74 20 75 73 65 66 75 6c 20 77 68 65 6e 20 74  st useful when t
7810: 68 65 20 64 61 74 61 20 74 6f 20 62 65 20 63 6f  he data to be co
7820: 6d 70 72 65 73 73 65 64 20 69 73 20 73 68 6f 72  mpressed is shor
7830: 74 20 61 6e 64 20 63 61 6e 20 62 65 0a 20 20 20  t and can be.   
7840: 70 72 65 64 69 63 74 65 64 20 77 69 74 68 20 67  predicted with g
7850: 6f 6f 64 20 61 63 63 75 72 61 63 79 3b 20 74 68  ood accuracy; th
7860: 65 20 64 61 74 61 20 63 61 6e 20 74 68 65 6e 20  e data can then 
7870: 62 65 20 63 6f 6d 70 72 65 73 73 65 64 20 62 65  be compressed be
7880: 74 74 65 72 20 74 68 61 6e 0a 20 20 20 77 69 74  tter than.   wit
7890: 68 20 74 68 65 20 64 65 66 61 75 6c 74 20 65 6d  h the default em
78a0: 70 74 79 20 64 69 63 74 69 6f 6e 61 72 79 2e 0a  pty dictionary..
78b0: 0a 20 20 20 20 20 44 65 70 65 6e 64 69 6e 67 20  .     Depending 
78c0: 6f 6e 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  on the size of t
78d0: 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 64  he compression d
78e0: 61 74 61 20 73 74 72 75 63 74 75 72 65 73 20 73  ata structures s
78f0: 65 6c 65 63 74 65 64 20 62 79 0a 20 20 20 64 65  elected by.   de
7900: 66 6c 61 74 65 49 6e 69 74 20 6f 72 20 64 65 66  flateInit or def
7910: 6c 61 74 65 49 6e 69 74 32 2c 20 61 20 70 61 72  lateInit2, a par
7920: 74 20 6f 66 20 74 68 65 20 64 69 63 74 69 6f 6e  t of the diction
7930: 61 72 79 20 6d 61 79 20 69 6e 20 65 66 66 65 63  ary may in effec
7940: 74 20 62 65 0a 20 20 20 64 69 73 63 61 72 64 65  t be.   discarde
7950: 64 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 69  d, for example i
7960: 66 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79  f the dictionary
7970: 20 69 73 20 6c 61 72 67 65 72 20 74 68 61 6e 20   is larger than 
7980: 74 68 65 20 77 69 6e 64 6f 77 20 73 69 7a 65 0a  the window size.
7990: 20 20 20 70 72 6f 76 69 64 65 64 20 69 6e 20 64     provided in d
79a0: 65 66 6c 61 74 65 49 6e 69 74 20 6f 72 20 64 65  eflateInit or de
79b0: 66 6c 61 74 65 49 6e 69 74 32 2e 20 20 54 68 75  flateInit2.  Thu
79c0: 73 20 74 68 65 20 73 74 72 69 6e 67 73 20 6d 6f  s the strings mo
79d0: 73 74 20 6c 69 6b 65 6c 79 20 74 6f 20 62 65 0a  st likely to be.
79e0: 20 20 20 75 73 65 66 75 6c 20 73 68 6f 75 6c 64     useful should
79f0: 20 62 65 20 70 75 74 20 61 74 20 74 68 65 20 65   be put at the e
7a00: 6e 64 20 6f 66 20 74 68 65 20 64 69 63 74 69 6f  nd of the dictio
7a10: 6e 61 72 79 2c 20 6e 6f 74 20 61 74 20 74 68 65  nary, not at the
7a20: 20 66 72 6f 6e 74 2e 20 20 49 6e 0a 20 20 20 61   front.  In.   a
7a30: 64 64 69 74 69 6f 6e 2c 20 74 68 65 20 63 75 72  ddition, the cur
7a40: 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74  rent implementat
7a50: 69 6f 6e 20 6f 66 20 64 65 66 6c 61 74 65 20 77  ion of deflate w
7a60: 69 6c 6c 20 75 73 65 20 61 74 20 6d 6f 73 74 20  ill use at most 
7a70: 74 68 65 20 77 69 6e 64 6f 77 0a 20 20 20 73 69  the window.   si
7a80: 7a 65 20 6d 69 6e 75 73 20 32 36 32 20 62 79 74  ze minus 262 byt
7a90: 65 73 20 6f 66 20 74 68 65 20 70 72 6f 76 69 64  es of the provid
7aa0: 65 64 20 64 69 63 74 69 6f 6e 61 72 79 2e 0a 0a  ed dictionary...
7ab0: 20 20 20 20 20 55 70 6f 6e 20 72 65 74 75 72 6e       Upon return
7ac0: 20 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f   of this functio
7ad0: 6e 2c 20 73 74 72 6d 2d 3e 61 64 6c 65 72 20 69  n, strm->adler i
7ae0: 73 20 73 65 74 20 74 6f 20 74 68 65 20 61 64 6c  s set to the adl
7af0: 65 72 33 32 20 76 61 6c 75 65 0a 20 20 20 6f 66  er32 value.   of
7b00: 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79 3b   the dictionary;
7b10: 20 74 68 65 20 64 65 63 6f 6d 70 72 65 73 73 6f   the decompresso
7b20: 72 20 6d 61 79 20 6c 61 74 65 72 20 75 73 65 20  r may later use 
7b30: 74 68 69 73 20 76 61 6c 75 65 20 74 6f 20 64 65  this value to de
7b40: 74 65 72 6d 69 6e 65 0a 20 20 20 77 68 69 63 68  termine.   which
7b50: 20 64 69 63 74 69 6f 6e 61 72 79 20 68 61 73 20   dictionary has 
7b60: 62 65 65 6e 20 75 73 65 64 20 62 79 20 74 68 65  been used by the
7b70: 20 63 6f 6d 70 72 65 73 73 6f 72 2e 20 20 28 54   compressor.  (T
7b80: 68 65 20 61 64 6c 65 72 33 32 20 76 61 6c 75 65  he adler32 value
7b90: 0a 20 20 20 61 70 70 6c 69 65 73 20 74 6f 20 74  .   applies to t
7ba0: 68 65 20 77 68 6f 6c 65 20 64 69 63 74 69 6f 6e  he whole diction
7bb0: 61 72 79 20 65 76 65 6e 20 69 66 20 6f 6e 6c 79  ary even if only
7bc0: 20 61 20 73 75 62 73 65 74 20 6f 66 20 74 68 65   a subset of the
7bd0: 20 64 69 63 74 69 6f 6e 61 72 79 20 69 73 0a 20   dictionary is. 
7be0: 20 20 61 63 74 75 61 6c 6c 79 20 75 73 65 64 20    actually used 
7bf0: 62 79 20 74 68 65 20 63 6f 6d 70 72 65 73 73 6f  by the compresso
7c00: 72 2e 29 20 49 66 20 61 20 72 61 77 20 64 65 66  r.) If a raw def
7c10: 6c 61 74 65 20 77 61 73 20 72 65 71 75 65 73 74  late was request
7c20: 65 64 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 20  ed, then the.   
7c30: 61 64 6c 65 72 33 32 20 76 61 6c 75 65 20 69 73  adler32 value is
7c40: 20 6e 6f 74 20 63 6f 6d 70 75 74 65 64 20 61 6e   not computed an
7c50: 64 20 73 74 72 6d 2d 3e 61 64 6c 65 72 20 69 73  d strm->adler is
7c60: 20 6e 6f 74 20 73 65 74 2e 0a 0a 20 20 20 20 20   not set...     
7c70: 64 65 66 6c 61 74 65 53 65 74 44 69 63 74 69 6f  deflateSetDictio
7c80: 6e 61 72 79 20 72 65 74 75 72 6e 73 20 5a 5f 4f  nary returns Z_O
7c90: 4b 20 69 66 20 73 75 63 63 65 73 73 2c 20 6f 72  K if success, or
7ca0: 20 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20   Z_STREAM_ERROR 
7cb0: 69 66 20 61 0a 20 20 20 70 61 72 61 6d 65 74 65  if a.   paramete
7cc0: 72 20 69 73 20 69 6e 76 61 6c 69 64 20 28 65 2e  r is invalid (e.
7cd0: 67 2e 20 20 64 69 63 74 69 6f 6e 61 72 79 20 62  g.  dictionary b
7ce0: 65 69 6e 67 20 5a 5f 4e 55 4c 4c 29 20 6f 72 20  eing Z_NULL) or 
7cf0: 74 68 65 20 73 74 72 65 61 6d 20 73 74 61 74 65  the stream state
7d00: 20 69 73 0a 20 20 20 69 6e 63 6f 6e 73 69 73 74   is.   inconsist
7d10: 65 6e 74 20 28 66 6f 72 20 65 78 61 6d 70 6c 65  ent (for example
7d20: 20 69 66 20 64 65 66 6c 61 74 65 20 68 61 73 20   if deflate has 
7d30: 61 6c 72 65 61 64 79 20 62 65 65 6e 20 63 61 6c  already been cal
7d40: 6c 65 64 20 66 6f 72 20 74 68 69 73 20 73 74 72  led for this str
7d50: 65 61 6d 0a 20 20 20 6f 72 20 69 66 20 6e 6f 74  eam.   or if not
7d60: 20 61 74 20 61 20 62 6c 6f 63 6b 20 62 6f 75 6e   at a block boun
7d70: 64 61 72 79 20 66 6f 72 20 72 61 77 20 64 65 66  dary for raw def
7d80: 6c 61 74 65 29 2e 20 20 64 65 66 6c 61 74 65 53  late).  deflateS
7d90: 65 74 44 69 63 74 69 6f 6e 61 72 79 20 64 6f 65  etDictionary doe
7da0: 73 0a 20 20 20 6e 6f 74 20 70 65 72 66 6f 72 6d  s.   not perform
7db0: 20 61 6e 79 20 63 6f 6d 70 72 65 73 73 69 6f 6e   any compression
7dc0: 3a 20 74 68 69 73 20 77 69 6c 6c 20 62 65 20 64  : this will be d
7dd0: 6f 6e 65 20 62 79 20 64 65 66 6c 61 74 65 28 29  one by deflate()
7de0: 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e  ..*/..ZEXTERN in
7df0: 74 20 5a 45 58 50 4f 52 54 20 64 65 66 6c 61 74  t ZEXPORT deflat
7e00: 65 43 6f 70 79 20 4f 46 28 28 7a 5f 73 74 72 65  eCopy OF((z_stre
7e10: 61 6d 70 20 64 65 73 74 2c 0a 20 20 20 20 20 20  amp dest,.      
7e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7a 5f                z_
7e40: 73 74 72 65 61 6d 70 20 73 6f 75 72 63 65 29 29  streamp source))
7e50: 3b 0a 2f 2a 0a 20 20 20 20 20 53 65 74 73 20 74  ;./*.     Sets t
7e60: 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 73  he destination s
7e70: 74 72 65 61 6d 20 61 73 20 61 20 63 6f 6d 70 6c  tream as a compl
7e80: 65 74 65 20 63 6f 70 79 20 6f 66 20 74 68 65 20  ete copy of the 
7e90: 73 6f 75 72 63 65 20 73 74 72 65 61 6d 2e 0a 0a  source stream...
7ea0: 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69       This functi
7eb0: 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 66 75 6c  on can be useful
7ec0: 20 77 68 65 6e 20 73 65 76 65 72 61 6c 20 63 6f   when several co
7ed0: 6d 70 72 65 73 73 69 6f 6e 20 73 74 72 61 74 65  mpression strate
7ee0: 67 69 65 73 20 77 69 6c 6c 20 62 65 0a 20 20 20  gies will be.   
7ef0: 74 72 69 65 64 2c 20 66 6f 72 20 65 78 61 6d 70  tried, for examp
7f00: 6c 65 20 77 68 65 6e 20 74 68 65 72 65 20 61 72  le when there ar
7f10: 65 20 73 65 76 65 72 61 6c 20 77 61 79 73 20 6f  e several ways o
7f20: 66 20 70 72 65 2d 70 72 6f 63 65 73 73 69 6e 67  f pre-processing
7f30: 20 74 68 65 20 69 6e 70 75 74 0a 20 20 20 64 61   the input.   da
7f40: 74 61 20 77 69 74 68 20 61 20 66 69 6c 74 65 72  ta with a filter
7f50: 2e 20 20 54 68 65 20 73 74 72 65 61 6d 73 20 74  .  The streams t
7f60: 68 61 74 20 77 69 6c 6c 20 62 65 20 64 69 73 63  hat will be disc
7f70: 61 72 64 65 64 20 73 68 6f 75 6c 64 20 74 68 65  arded should the
7f80: 6e 20 62 65 20 66 72 65 65 64 0a 20 20 20 62 79  n be freed.   by
7f90: 20 63 61 6c 6c 69 6e 67 20 64 65 66 6c 61 74 65   calling deflate
7fa0: 45 6e 64 2e 20 20 4e 6f 74 65 20 74 68 61 74 20  End.  Note that 
7fb0: 64 65 66 6c 61 74 65 43 6f 70 79 20 64 75 70 6c  deflateCopy dupl
7fc0: 69 63 61 74 65 73 20 74 68 65 20 69 6e 74 65 72  icates the inter
7fd0: 6e 61 6c 0a 20 20 20 63 6f 6d 70 72 65 73 73 69  nal.   compressi
7fe0: 6f 6e 20 73 74 61 74 65 20 77 68 69 63 68 20 63  on state which c
7ff0: 61 6e 20 62 65 20 71 75 69 74 65 20 6c 61 72 67  an be quite larg
8000: 65 2c 20 73 6f 20 74 68 69 73 20 73 74 72 61 74  e, so this strat
8010: 65 67 79 20 69 73 20 73 6c 6f 77 20 61 6e 64 20  egy is slow and 
8020: 63 61 6e 0a 20 20 20 63 6f 6e 73 75 6d 65 20 6c  can.   consume l
8030: 6f 74 73 20 6f 66 20 6d 65 6d 6f 72 79 2e 0a 0a  ots of memory...
8040: 20 20 20 20 20 64 65 66 6c 61 74 65 43 6f 70 79       deflateCopy
8050: 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20 69 66   returns Z_OK if
8060: 20 73 75 63 63 65 73 73 2c 20 5a 5f 4d 45 4d 5f   success, Z_MEM_
8070: 45 52 52 4f 52 20 69 66 20 74 68 65 72 65 20 77  ERROR if there w
8080: 61 73 20 6e 6f 74 0a 20 20 20 65 6e 6f 75 67 68  as not.   enough
8090: 20 6d 65 6d 6f 72 79 2c 20 5a 5f 53 54 52 45 41   memory, Z_STREA
80a0: 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20 73  M_ERROR if the s
80b0: 6f 75 72 63 65 20 73 74 72 65 61 6d 20 73 74 61  ource stream sta
80c0: 74 65 20 77 61 73 20 69 6e 63 6f 6e 73 69 73 74  te was inconsist
80d0: 65 6e 74 0a 20 20 20 28 73 75 63 68 20 61 73 20  ent.   (such as 
80e0: 7a 61 6c 6c 6f 63 20 62 65 69 6e 67 20 5a 5f 4e  zalloc being Z_N
80f0: 55 4c 4c 29 2e 20 20 6d 73 67 20 69 73 20 6c 65  ULL).  msg is le
8100: 66 74 20 75 6e 63 68 61 6e 67 65 64 20 69 6e 20  ft unchanged in 
8110: 62 6f 74 68 20 73 6f 75 72 63 65 20 61 6e 64 0a  both source and.
8120: 20 20 20 64 65 73 74 69 6e 61 74 69 6f 6e 2e 0a     destination..
8130: 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20  */..ZEXTERN int 
8140: 5a 45 58 50 4f 52 54 20 64 65 66 6c 61 74 65 52  ZEXPORT deflateR
8150: 65 73 65 74 20 4f 46 28 28 7a 5f 73 74 72 65 61  eset OF((z_strea
8160: 6d 70 20 73 74 72 6d 29 29 3b 0a 2f 2a 0a 20 20  mp strm));./*.  
8170: 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e     This function
8180: 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74   is equivalent t
8190: 6f 20 64 65 66 6c 61 74 65 45 6e 64 20 66 6f 6c  o deflateEnd fol
81a0: 6c 6f 77 65 64 20 62 79 20 64 65 66 6c 61 74 65  lowed by deflate
81b0: 49 6e 69 74 2c 0a 20 20 20 62 75 74 20 64 6f 65  Init,.   but doe
81c0: 73 20 6e 6f 74 20 66 72 65 65 20 61 6e 64 20 72  s not free and r
81d0: 65 61 6c 6c 6f 63 61 74 65 20 61 6c 6c 20 74 68  eallocate all th
81e0: 65 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6d 70 72  e internal compr
81f0: 65 73 73 69 6f 6e 20 73 74 61 74 65 2e 20 20 54  ession state.  T
8200: 68 65 0a 20 20 20 73 74 72 65 61 6d 20 77 69 6c  he.   stream wil
8210: 6c 20 6b 65 65 70 20 74 68 65 20 73 61 6d 65 20  l keep the same 
8220: 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c 65 76 65  compression leve
8230: 6c 20 61 6e 64 20 61 6e 79 20 6f 74 68 65 72 20  l and any other 
8240: 61 74 74 72 69 62 75 74 65 73 20 74 68 61 74 0a  attributes that.
8250: 20 20 20 6d 61 79 20 68 61 76 65 20 62 65 65 6e     may have been
8260: 20 73 65 74 20 62 79 20 64 65 66 6c 61 74 65 49   set by deflateI
8270: 6e 69 74 32 2e 0a 0a 20 20 20 20 20 64 65 66 6c  nit2...     defl
8280: 61 74 65 52 65 73 65 74 20 72 65 74 75 72 6e 73  ateReset returns
8290: 20 5a 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73   Z_OK if success
82a0: 2c 20 6f 72 20 5a 5f 53 54 52 45 41 4d 5f 45 52  , or Z_STREAM_ER
82b0: 52 4f 52 20 69 66 20 74 68 65 20 73 6f 75 72 63  ROR if the sourc
82c0: 65 0a 20 20 20 73 74 72 65 61 6d 20 73 74 61 74  e.   stream stat
82d0: 65 20 77 61 73 20 69 6e 63 6f 6e 73 69 73 74 65  e was inconsiste
82e0: 6e 74 20 28 73 75 63 68 20 61 73 20 7a 61 6c 6c  nt (such as zall
82f0: 6f 63 20 6f 72 20 73 74 61 74 65 20 62 65 69 6e  oc or state bein
8300: 67 20 5a 5f 4e 55 4c 4c 29 2e 0a 2a 2f 0a 0a 5a  g Z_NULL)..*/..Z
8310: 45 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f  EXTERN int ZEXPO
8320: 52 54 20 64 65 66 6c 61 74 65 50 61 72 61 6d 73  RT deflateParams
8330: 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70 20 73   OF((z_streamp s
8340: 74 72 6d 2c 0a 20 20 20 20 20 20 20 20 20 20 20  trm,.           
8350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8360: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
8370: 65 76 65 6c 2c 0a 20 20 20 20 20 20 20 20 20 20  evel,.          
8380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8390: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
83a0: 73 74 72 61 74 65 67 79 29 29 3b 0a 2f 2a 0a 20  strategy));./*. 
83b0: 20 20 20 20 44 79 6e 61 6d 69 63 61 6c 6c 79 20      Dynamically 
83c0: 75 70 64 61 74 65 20 74 68 65 20 63 6f 6d 70 72  update the compr
83d0: 65 73 73 69 6f 6e 20 6c 65 76 65 6c 20 61 6e 64  ession level and
83e0: 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 73 74 72   compression str
83f0: 61 74 65 67 79 2e 20 20 54 68 65 0a 20 20 20 69  ategy.  The.   i
8400: 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 6f 66  nterpretation of
8410: 20 6c 65 76 65 6c 20 61 6e 64 20 73 74 72 61 74   level and strat
8420: 65 67 79 20 69 73 20 61 73 20 69 6e 20 64 65 66  egy is as in def
8430: 6c 61 74 65 49 6e 69 74 32 2e 20 20 54 68 69 73  lateInit2.  This
8440: 20 63 61 6e 20 62 65 0a 20 20 20 75 73 65 64 20   can be.   used 
8450: 74 6f 20 73 77 69 74 63 68 20 62 65 74 77 65 65  to switch betwee
8460: 6e 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 61 6e  n compression an
8470: 64 20 73 74 72 61 69 67 68 74 20 63 6f 70 79 20  d straight copy 
8480: 6f 66 20 74 68 65 20 69 6e 70 75 74 20 64 61 74  of the input dat
8490: 61 2c 20 6f 72 0a 20 20 20 74 6f 20 73 77 69 74  a, or.   to swit
84a0: 63 68 20 74 6f 20 61 20 64 69 66 66 65 72 65 6e  ch to a differen
84b0: 74 20 6b 69 6e 64 20 6f 66 20 69 6e 70 75 74 20  t kind of input 
84c0: 64 61 74 61 20 72 65 71 75 69 72 69 6e 67 20 61  data requiring a
84d0: 20 64 69 66 66 65 72 65 6e 74 20 73 74 72 61 74   different strat
84e0: 65 67 79 2e 0a 20 20 20 49 66 20 74 68 65 20 63  egy..   If the c
84f0: 6f 6d 70 72 65 73 73 69 6f 6e 20 6c 65 76 65 6c  ompression level
8500: 20 69 73 20 63 68 61 6e 67 65 64 2c 20 74 68 65   is changed, the
8510: 20 69 6e 70 75 74 20 61 76 61 69 6c 61 62 6c 65   input available
8520: 20 73 6f 20 66 61 72 20 69 73 0a 20 20 20 63 6f   so far is.   co
8530: 6d 70 72 65 73 73 65 64 20 77 69 74 68 20 74 68  mpressed with th
8540: 65 20 6f 6c 64 20 6c 65 76 65 6c 20 28 61 6e 64  e old level (and
8550: 20 6d 61 79 20 62 65 20 66 6c 75 73 68 65 64 29   may be flushed)
8560: 3b 20 74 68 65 20 6e 65 77 20 6c 65 76 65 6c 20  ; the new level 
8570: 77 69 6c 6c 20 74 61 6b 65 0a 20 20 20 65 66 66  will take.   eff
8580: 65 63 74 20 6f 6e 6c 79 20 61 74 20 74 68 65 20  ect only at the 
8590: 6e 65 78 74 20 63 61 6c 6c 20 6f 66 20 64 65 66  next call of def
85a0: 6c 61 74 65 28 29 2e 0a 0a 20 20 20 20 20 42 65  late()...     Be
85b0: 66 6f 72 65 20 74 68 65 20 63 61 6c 6c 20 6f 66  fore the call of
85c0: 20 64 65 66 6c 61 74 65 50 61 72 61 6d 73 2c 20   deflateParams, 
85d0: 74 68 65 20 73 74 72 65 61 6d 20 73 74 61 74 65  the stream state
85e0: 20 6d 75 73 74 20 62 65 20 73 65 74 20 61 73 20   must be set as 
85f0: 66 6f 72 0a 20 20 20 61 20 63 61 6c 6c 20 6f 66  for.   a call of
8600: 20 64 65 66 6c 61 74 65 28 29 2c 20 73 69 6e 63   deflate(), sinc
8610: 65 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20  e the currently 
8620: 61 76 61 69 6c 61 62 6c 65 20 69 6e 70 75 74 20  available input 
8630: 6d 61 79 20 68 61 76 65 20 74 6f 20 62 65 0a 20  may have to be. 
8640: 20 20 63 6f 6d 70 72 65 73 73 65 64 20 61 6e 64    compressed and
8650: 20 66 6c 75 73 68 65 64 2e 20 20 49 6e 20 70 61   flushed.  In pa
8660: 72 74 69 63 75 6c 61 72 2c 20 73 74 72 6d 2d 3e  rticular, strm->
8670: 61 76 61 69 6c 5f 6f 75 74 20 6d 75 73 74 20 62  avail_out must b
8680: 65 20 6e 6f 6e 2d 7a 65 72 6f 2e 0a 0a 20 20 20  e non-zero...   
8690: 20 20 64 65 66 6c 61 74 65 50 61 72 61 6d 73 20    deflateParams 
86a0: 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20 69 66 20  returns Z_OK if 
86b0: 73 75 63 63 65 73 73 2c 20 5a 5f 53 54 52 45 41  success, Z_STREA
86c0: 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20 73  M_ERROR if the s
86d0: 6f 75 72 63 65 0a 20 20 20 73 74 72 65 61 6d 20  ource.   stream 
86e0: 73 74 61 74 65 20 77 61 73 20 69 6e 63 6f 6e 73  state was incons
86f0: 69 73 74 65 6e 74 20 6f 72 20 69 66 20 61 20 70  istent or if a p
8700: 61 72 61 6d 65 74 65 72 20 77 61 73 20 69 6e 76  arameter was inv
8710: 61 6c 69 64 2c 20 5a 5f 42 55 46 5f 45 52 52 4f  alid, Z_BUF_ERRO
8720: 52 20 69 66 0a 20 20 20 73 74 72 6d 2d 3e 61 76  R if.   strm->av
8730: 61 69 6c 5f 6f 75 74 20 77 61 73 20 7a 65 72 6f  ail_out was zero
8740: 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e  ..*/..ZEXTERN in
8750: 74 20 5a 45 58 50 4f 52 54 20 64 65 66 6c 61 74  t ZEXPORT deflat
8760: 65 54 75 6e 65 20 4f 46 28 28 7a 5f 73 74 72 65  eTune OF((z_stre
8770: 61 6d 70 20 73 74 72 6d 2c 0a 20 20 20 20 20 20  amp strm,.      
8780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
87a0: 74 20 67 6f 6f 64 5f 6c 65 6e 67 74 68 2c 0a 20  t good_length,. 
87b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87d0: 20 20 20 69 6e 74 20 6d 61 78 5f 6c 61 7a 79 2c     int max_lazy,
87e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
87f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8800: 20 20 20 20 20 69 6e 74 20 6e 69 63 65 5f 6c 65       int nice_le
8810: 6e 67 74 68 2c 0a 20 20 20 20 20 20 20 20 20 20  ngth,.          
8820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8830: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6d 61            int ma
8840: 78 5f 63 68 61 69 6e 29 29 3b 0a 2f 2a 0a 20 20  x_chain));./*.  
8850: 20 20 20 46 69 6e 65 20 74 75 6e 65 20 64 65 66     Fine tune def
8860: 6c 61 74 65 27 73 20 69 6e 74 65 72 6e 61 6c 20  late's internal 
8870: 63 6f 6d 70 72 65 73 73 69 6f 6e 20 70 61 72 61  compression para
8880: 6d 65 74 65 72 73 2e 20 20 54 68 69 73 20 73 68  meters.  This sh
8890: 6f 75 6c 64 20 6f 6e 6c 79 20 62 65 0a 20 20 20  ould only be.   
88a0: 75 73 65 64 20 62 79 20 73 6f 6d 65 6f 6e 65 20  used by someone 
88b0: 77 68 6f 20 75 6e 64 65 72 73 74 61 6e 64 73 20  who understands 
88c0: 74 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 75 73  the algorithm us
88d0: 65 64 20 62 79 20 7a 6c 69 62 27 73 20 64 65 66  ed by zlib's def
88e0: 6c 61 74 65 20 66 6f 72 0a 20 20 20 73 65 61 72  late for.   sear
88f0: 63 68 69 6e 67 20 66 6f 72 20 74 68 65 20 62 65  ching for the be
8900: 73 74 20 6d 61 74 63 68 69 6e 67 20 73 74 72 69  st matching stri
8910: 6e 67 2c 20 61 6e 64 20 65 76 65 6e 20 74 68 65  ng, and even the
8920: 6e 20 6f 6e 6c 79 20 62 79 20 74 68 65 20 6d 6f  n only by the mo
8930: 73 74 0a 20 20 20 66 61 6e 61 74 69 63 20 6f 70  st.   fanatic op
8940: 74 69 6d 69 7a 65 72 20 74 72 79 69 6e 67 20 74  timizer trying t
8950: 6f 20 73 71 75 65 65 7a 65 20 6f 75 74 20 74 68  o squeeze out th
8960: 65 20 6c 61 73 74 20 63 6f 6d 70 72 65 73 73 65  e last compresse
8970: 64 20 62 69 74 20 66 6f 72 20 74 68 65 69 72 0a  d bit for their.
8980: 20 20 20 73 70 65 63 69 66 69 63 20 69 6e 70 75     specific inpu
8990: 74 20 64 61 74 61 2e 20 20 52 65 61 64 20 74 68  t data.  Read th
89a0: 65 20 64 65 66 6c 61 74 65 2e 63 20 73 6f 75 72  e deflate.c sour
89b0: 63 65 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20  ce code for the 
89c0: 6d 65 61 6e 69 6e 67 20 6f 66 20 74 68 65 0a 20  meaning of the. 
89d0: 20 20 6d 61 78 5f 6c 61 7a 79 2c 20 67 6f 6f 64    max_lazy, good
89e0: 5f 6c 65 6e 67 74 68 2c 20 6e 69 63 65 5f 6c 65  _length, nice_le
89f0: 6e 67 74 68 2c 20 61 6e 64 20 6d 61 78 5f 63 68  ngth, and max_ch
8a00: 61 69 6e 20 70 61 72 61 6d 65 74 65 72 73 2e 0a  ain parameters..
8a10: 0a 20 20 20 20 20 64 65 66 6c 61 74 65 54 75 6e  .     deflateTun
8a20: 65 28 29 20 63 61 6e 20 62 65 20 63 61 6c 6c 65  e() can be calle
8a30: 64 20 61 66 74 65 72 20 64 65 66 6c 61 74 65 49  d after deflateI
8a40: 6e 69 74 28 29 20 6f 72 20 64 65 66 6c 61 74 65  nit() or deflate
8a50: 49 6e 69 74 32 28 29 2c 20 61 6e 64 0a 20 20 20  Init2(), and.   
8a60: 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20 6f 6e 20  returns Z_OK on 
8a70: 73 75 63 63 65 73 73 2c 20 6f 72 20 5a 5f 53 54  success, or Z_ST
8a80: 52 45 41 4d 5f 45 52 52 4f 52 20 66 6f 72 20 61  REAM_ERROR for a
8a90: 6e 20 69 6e 76 61 6c 69 64 20 64 65 66 6c 61 74  n invalid deflat
8aa0: 65 20 73 74 72 65 61 6d 2e 0a 20 2a 2f 0a 0a 5a  e stream.. */..Z
8ab0: 45 58 54 45 52 4e 20 75 4c 6f 6e 67 20 5a 45 58  EXTERN uLong ZEX
8ac0: 50 4f 52 54 20 64 65 66 6c 61 74 65 42 6f 75 6e  PORT deflateBoun
8ad0: 64 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70 20  d OF((z_streamp 
8ae0: 73 74 72 6d 2c 0a 20 20 20 20 20 20 20 20 20 20  strm,.          
8af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 75 4c 6f               uLo
8b10: 6e 67 20 73 6f 75 72 63 65 4c 65 6e 29 29 3b 0a  ng sourceLen));.
8b20: 2f 2a 0a 20 20 20 20 20 64 65 66 6c 61 74 65 42  /*.     deflateB
8b30: 6f 75 6e 64 28 29 20 72 65 74 75 72 6e 73 20 61  ound() returns a
8b40: 6e 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e  n upper bound on
8b50: 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65 64 20   the compressed 
8b60: 73 69 7a 65 20 61 66 74 65 72 0a 20 20 20 64 65  size after.   de
8b70: 66 6c 61 74 69 6f 6e 20 6f 66 20 73 6f 75 72 63  flation of sourc
8b80: 65 4c 65 6e 20 62 79 74 65 73 2e 20 20 49 74 20  eLen bytes.  It 
8b90: 6d 75 73 74 20 62 65 20 63 61 6c 6c 65 64 20 61  must be called a
8ba0: 66 74 65 72 20 64 65 66 6c 61 74 65 49 6e 69 74  fter deflateInit
8bb0: 28 29 20 6f 72 0a 20 20 20 64 65 66 6c 61 74 65  () or.   deflate
8bc0: 49 6e 69 74 32 28 29 2c 20 61 6e 64 20 61 66 74  Init2(), and aft
8bd0: 65 72 20 64 65 66 6c 61 74 65 53 65 74 48 65 61  er deflateSetHea
8be0: 64 65 72 28 29 2c 20 69 66 20 75 73 65 64 2e 20  der(), if used. 
8bf0: 20 54 68 69 73 20 77 6f 75 6c 64 20 62 65 20 75   This would be u
8c00: 73 65 64 0a 20 20 20 74 6f 20 61 6c 6c 6f 63 61  sed.   to alloca
8c10: 74 65 20 61 6e 20 6f 75 74 70 75 74 20 62 75 66  te an output buf
8c20: 66 65 72 20 66 6f 72 20 64 65 66 6c 61 74 69 6f  fer for deflatio
8c30: 6e 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 70 61  n in a single pa
8c40: 73 73 2c 20 61 6e 64 20 73 6f 20 77 6f 75 6c 64  ss, and so would
8c50: 20 62 65 0a 20 20 20 63 61 6c 6c 65 64 20 62 65   be.   called be
8c60: 66 6f 72 65 20 64 65 66 6c 61 74 65 28 29 2e 20  fore deflate(). 
8c70: 20 49 66 20 74 68 61 74 20 66 69 72 73 74 20 64   If that first d
8c80: 65 66 6c 61 74 65 28 29 20 63 61 6c 6c 20 69 73  eflate() call is
8c90: 20 70 72 6f 76 69 64 65 64 20 74 68 65 0a 20 20   provided the.  
8ca0: 20 73 6f 75 72 63 65 4c 65 6e 20 69 6e 70 75 74   sourceLen input
8cb0: 20 62 79 74 65 73 2c 20 61 6e 20 6f 75 74 70 75   bytes, an outpu
8cc0: 74 20 62 75 66 66 65 72 20 61 6c 6c 6f 63 61 74  t buffer allocat
8cd0: 65 64 20 74 6f 20 74 68 65 20 73 69 7a 65 20 72  ed to the size r
8ce0: 65 74 75 72 6e 65 64 20 62 79 0a 20 20 20 64 65  eturned by.   de
8cf0: 66 6c 61 74 65 42 6f 75 6e 64 28 29 2c 20 61 6e  flateBound(), an
8d00: 64 20 74 68 65 20 66 6c 75 73 68 20 76 61 6c 75  d the flush valu
8d10: 65 20 5a 5f 46 49 4e 49 53 48 2c 20 74 68 65 6e  e Z_FINISH, then
8d20: 20 64 65 66 6c 61 74 65 28 29 20 69 73 20 67 75   deflate() is gu
8d30: 61 72 61 6e 74 65 65 64 0a 20 20 20 74 6f 20 72  aranteed.   to r
8d40: 65 74 75 72 6e 20 5a 5f 53 54 52 45 41 4d 5f 45  eturn Z_STREAM_E
8d50: 4e 44 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 69  ND.  Note that i
8d60: 74 20 69 73 20 70 6f 73 73 69 62 6c 65 20 66 6f  t is possible fo
8d70: 72 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65 64  r the compressed
8d80: 20 73 69 7a 65 20 74 6f 0a 20 20 20 62 65 20 6c   size to.   be l
8d90: 61 72 67 65 72 20 74 68 61 6e 20 74 68 65 20 76  arger than the v
8da0: 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79  alue returned by
8db0: 20 64 65 66 6c 61 74 65 42 6f 75 6e 64 28 29 20   deflateBound() 
8dc0: 69 66 20 66 6c 75 73 68 20 6f 70 74 69 6f 6e 73  if flush options
8dd0: 20 6f 74 68 65 72 0a 20 20 20 74 68 61 6e 20 5a   other.   than Z
8de0: 5f 46 49 4e 49 53 48 20 6f 72 20 5a 5f 4e 4f 5f  _FINISH or Z_NO_
8df0: 46 4c 55 53 48 20 61 72 65 20 75 73 65 64 2e 0a  FLUSH are used..
8e00: 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20  */..ZEXTERN int 
8e10: 5a 45 58 50 4f 52 54 20 64 65 66 6c 61 74 65 50  ZEXPORT deflateP
8e20: 65 6e 64 69 6e 67 20 4f 46 28 28 7a 5f 73 74 72  ending OF((z_str
8e30: 65 61 6d 70 20 73 74 72 6d 2c 0a 20 20 20 20 20  eamp strm,.     
8e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e60: 20 20 75 6e 73 69 67 6e 65 64 20 2a 70 65 6e 64    unsigned *pend
8e70: 69 6e 67 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ing,.           
8e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e90: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
8ea0: 2a 62 69 74 73 29 29 3b 0a 2f 2a 0a 20 20 20 20  *bits));./*.    
8eb0: 20 64 65 66 6c 61 74 65 50 65 6e 64 69 6e 67 28   deflatePending(
8ec0: 29 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  ) returns the nu
8ed0: 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61 6e  mber of bytes an
8ee0: 64 20 62 69 74 73 20 6f 66 20 6f 75 74 70 75 74  d bits of output
8ef0: 20 74 68 61 74 20 68 61 76 65 0a 20 20 20 62 65   that have.   be
8f00: 65 6e 20 67 65 6e 65 72 61 74 65 64 2c 20 62 75  en generated, bu
8f10: 74 20 6e 6f 74 20 79 65 74 20 70 72 6f 76 69 64  t not yet provid
8f20: 65 64 20 69 6e 20 74 68 65 20 61 76 61 69 6c 61  ed in the availa
8f30: 62 6c 65 20 6f 75 74 70 75 74 2e 20 20 54 68 65  ble output.  The
8f40: 20 62 79 74 65 73 20 6e 6f 74 0a 20 20 20 70 72   bytes not.   pr
8f50: 6f 76 69 64 65 64 20 77 6f 75 6c 64 20 62 65 20  ovided would be 
8f60: 64 75 65 20 74 6f 20 74 68 65 20 61 76 61 69 6c  due to the avail
8f70: 61 62 6c 65 20 6f 75 74 70 75 74 20 73 70 61 63  able output spac
8f80: 65 20 68 61 76 69 6e 67 20 62 65 69 6e 67 20 63  e having being c
8f90: 6f 6e 73 75 6d 65 64 2e 0a 20 20 20 54 68 65 20  onsumed..   The 
8fa0: 6e 75 6d 62 65 72 20 6f 66 20 62 69 74 73 20 6f  number of bits o
8fb0: 66 20 6f 75 74 70 75 74 20 6e 6f 74 20 70 72 6f  f output not pro
8fc0: 76 69 64 65 64 20 61 72 65 20 62 65 74 77 65 65  vided are betwee
8fd0: 6e 20 30 20 61 6e 64 20 37 2c 20 77 68 65 72 65  n 0 and 7, where
8fe0: 20 74 68 65 79 0a 20 20 20 61 77 61 69 74 20 6d   they.   await m
8ff0: 6f 72 65 20 62 69 74 73 20 74 6f 20 6a 6f 69 6e  ore bits to join
9000: 20 74 68 65 6d 20 69 6e 20 6f 72 64 65 72 20 74   them in order t
9010: 6f 20 66 69 6c 6c 20 6f 75 74 20 61 20 66 75 6c  o fill out a ful
9020: 6c 20 62 79 74 65 2e 20 20 49 66 20 70 65 6e 64  l byte.  If pend
9030: 69 6e 67 0a 20 20 20 6f 72 20 62 69 74 73 20 61  ing.   or bits a
9040: 72 65 20 5a 5f 4e 55 4c 4c 2c 20 74 68 65 6e 20  re Z_NULL, then 
9050: 74 68 6f 73 65 20 76 61 6c 75 65 73 20 61 72 65  those values are
9060: 20 6e 6f 74 20 73 65 74 2e 0a 0a 20 20 20 20 20   not set...     
9070: 64 65 66 6c 61 74 65 50 65 6e 64 69 6e 67 20 72  deflatePending r
9080: 65 74 75 72 6e 73 20 5a 5f 4f 4b 20 69 66 20 73  eturns Z_OK if s
9090: 75 63 63 65 73 73 2c 20 6f 72 20 5a 5f 53 54 52  uccess, or Z_STR
90a0: 45 41 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65  EAM_ERROR if the
90b0: 20 73 6f 75 72 63 65 0a 20 20 20 73 74 72 65 61   source.   strea
90c0: 6d 20 73 74 61 74 65 20 77 61 73 20 69 6e 63 6f  m state was inco
90d0: 6e 73 69 73 74 65 6e 74 2e 0a 20 2a 2f 0a 0a 5a  nsistent.. */..Z
90e0: 45 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f  EXTERN int ZEXPO
90f0: 52 54 20 64 65 66 6c 61 74 65 50 72 69 6d 65 20  RT deflatePrime 
9100: 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70 20 73 74  OF((z_streamp st
9110: 72 6d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  rm,.            
9120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9130: 20 20 20 20 20 20 20 20 20 69 6e 74 20 62 69 74           int bit
9140: 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s,.             
9150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9160: 20 20 20 20 20 20 20 20 69 6e 74 20 76 61 6c 75          int valu
9170: 65 29 29 3b 0a 2f 2a 0a 20 20 20 20 20 64 65 66  e));./*.     def
9180: 6c 61 74 65 50 72 69 6d 65 28 29 20 69 6e 73 65  latePrime() inse
9190: 72 74 73 20 62 69 74 73 20 69 6e 20 74 68 65 20  rts bits in the 
91a0: 64 65 66 6c 61 74 65 20 6f 75 74 70 75 74 20 73  deflate output s
91b0: 74 72 65 61 6d 2e 20 20 54 68 65 20 69 6e 74 65  tream.  The inte
91c0: 6e 74 0a 20 20 20 69 73 20 74 68 61 74 20 74 68  nt.   is that th
91d0: 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75  is function is u
91e0: 73 65 64 20 74 6f 20 73 74 61 72 74 20 6f 66 66  sed to start off
91f0: 20 74 68 65 20 64 65 66 6c 61 74 65 20 6f 75 74   the deflate out
9200: 70 75 74 20 77 69 74 68 20 74 68 65 20 62 69 74  put with the bit
9210: 73 0a 20 20 20 6c 65 66 74 6f 76 65 72 20 66 72  s.   leftover fr
9220: 6f 6d 20 61 20 70 72 65 76 69 6f 75 73 20 64 65  om a previous de
9230: 66 6c 61 74 65 20 73 74 72 65 61 6d 20 77 68 65  flate stream whe
9240: 6e 20 61 70 70 65 6e 64 69 6e 67 20 74 6f 20 69  n appending to i
9250: 74 2e 20 20 41 73 20 73 75 63 68 2c 20 74 68 69  t.  As such, thi
9260: 73 0a 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 61  s.   function ca
9270: 6e 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 66  n only be used f
9280: 6f 72 20 72 61 77 20 64 65 66 6c 61 74 65 2c 20  or raw deflate, 
9290: 61 6e 64 20 6d 75 73 74 20 62 65 20 75 73 65 64  and must be used
92a0: 20 62 65 66 6f 72 65 20 74 68 65 20 66 69 72 73   before the firs
92b0: 74 0a 20 20 20 64 65 66 6c 61 74 65 28 29 20 63  t.   deflate() c
92c0: 61 6c 6c 20 61 66 74 65 72 20 61 20 64 65 66 6c  all after a defl
92d0: 61 74 65 49 6e 69 74 32 28 29 20 6f 72 20 64 65  ateInit2() or de
92e0: 66 6c 61 74 65 52 65 73 65 74 28 29 2e 20 20 62  flateReset().  b
92f0: 69 74 73 20 6d 75 73 74 20 62 65 20 6c 65 73 73  its must be less
9300: 0a 20 20 20 74 68 61 6e 20 6f 72 20 65 71 75 61  .   than or equa
9310: 6c 20 74 6f 20 31 36 2c 20 61 6e 64 20 74 68 61  l to 16, and tha
9320: 74 20 6d 61 6e 79 20 6f 66 20 74 68 65 20 6c 65  t many of the le
9330: 61 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74 20  ast significant 
9340: 62 69 74 73 20 6f 66 20 76 61 6c 75 65 0a 20 20  bits of value.  
9350: 20 77 69 6c 6c 20 62 65 20 69 6e 73 65 72 74 65   will be inserte
9360: 64 20 69 6e 20 74 68 65 20 6f 75 74 70 75 74 2e  d in the output.
9370: 0a 0a 20 20 20 20 20 64 65 66 6c 61 74 65 50 72  ..     deflatePr
9380: 69 6d 65 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b  ime returns Z_OK
9390: 20 69 66 20 73 75 63 63 65 73 73 2c 20 5a 5f 42   if success, Z_B
93a0: 55 46 5f 45 52 52 4f 52 20 69 66 20 74 68 65 72  UF_ERROR if ther
93b0: 65 20 77 61 73 20 6e 6f 74 20 65 6e 6f 75 67 68  e was not enough
93c0: 0a 20 20 20 72 6f 6f 6d 20 69 6e 20 74 68 65 20  .   room in the 
93d0: 69 6e 74 65 72 6e 61 6c 20 62 75 66 66 65 72 20  internal buffer 
93e0: 74 6f 20 69 6e 73 65 72 74 20 74 68 65 20 62 69  to insert the bi
93f0: 74 73 2c 20 6f 72 20 5a 5f 53 54 52 45 41 4d 5f  ts, or Z_STREAM_
9400: 45 52 52 4f 52 20 69 66 20 74 68 65 0a 20 20 20  ERROR if the.   
9410: 73 6f 75 72 63 65 20 73 74 72 65 61 6d 20 73 74  source stream st
9420: 61 74 65 20 77 61 73 20 69 6e 63 6f 6e 73 69 73  ate was inconsis
9430: 74 65 6e 74 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52  tent..*/..ZEXTER
9440: 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 64 65  N int ZEXPORT de
9450: 66 6c 61 74 65 53 65 74 48 65 61 64 65 72 20 4f  flateSetHeader O
9460: 46 28 28 7a 5f 73 74 72 65 61 6d 70 20 73 74 72  F((z_streamp str
9470: 6d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  m,.             
9480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9490: 20 20 20 20 20 20 20 20 20 20 20 20 67 7a 5f 68              gz_h
94a0: 65 61 64 65 72 70 20 68 65 61 64 29 29 3b 0a 2f  eaderp head));./
94b0: 2a 0a 20 20 20 20 20 64 65 66 6c 61 74 65 53 65  *.     deflateSe
94c0: 74 48 65 61 64 65 72 28 29 20 70 72 6f 76 69 64  tHeader() provid
94d0: 65 73 20 67 7a 69 70 20 68 65 61 64 65 72 20 69  es gzip header i
94e0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 20 77  nformation for w
94f0: 68 65 6e 20 61 20 67 7a 69 70 0a 20 20 20 73 74  hen a gzip.   st
9500: 72 65 61 6d 20 69 73 20 72 65 71 75 65 73 74 65  ream is requeste
9510: 64 20 62 79 20 64 65 66 6c 61 74 65 49 6e 69 74  d by deflateInit
9520: 32 28 29 2e 20 20 64 65 66 6c 61 74 65 53 65 74  2().  deflateSet
9530: 48 65 61 64 65 72 28 29 20 6d 61 79 20 62 65 20  Header() may be 
9540: 63 61 6c 6c 65 64 0a 20 20 20 61 66 74 65 72 20  called.   after 
9550: 64 65 66 6c 61 74 65 49 6e 69 74 32 28 29 20 6f  deflateInit2() o
9560: 72 20 64 65 66 6c 61 74 65 52 65 73 65 74 28 29  r deflateReset()
9570: 20 61 6e 64 20 62 65 66 6f 72 65 20 74 68 65 20   and before the 
9580: 66 69 72 73 74 20 63 61 6c 6c 20 6f 66 0a 20 20  first call of.  
9590: 20 64 65 66 6c 61 74 65 28 29 2e 20 20 54 68 65   deflate().  The
95a0: 20 74 65 78 74 2c 20 74 69 6d 65 2c 20 6f 73 2c   text, time, os,
95b0: 20 65 78 74 72 61 20 66 69 65 6c 64 2c 20 6e 61   extra field, na
95c0: 6d 65 2c 20 61 6e 64 20 63 6f 6d 6d 65 6e 74 20  me, and comment 
95d0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 20 20 20 69  information.   i
95e0: 6e 20 74 68 65 20 70 72 6f 76 69 64 65 64 20 67  n the provided g
95f0: 7a 5f 68 65 61 64 65 72 20 73 74 72 75 63 74 75  z_header structu
9600: 72 65 20 61 72 65 20 77 72 69 74 74 65 6e 20 74  re are written t
9610: 6f 20 74 68 65 20 67 7a 69 70 20 68 65 61 64 65  o the gzip heade
9620: 72 20 28 78 66 6c 61 67 20 69 73 0a 20 20 20 69  r (xflag is.   i
9630: 67 6e 6f 72 65 64 20 2d 2d 20 74 68 65 20 65 78  gnored -- the ex
9640: 74 72 61 20 66 6c 61 67 73 20 61 72 65 20 73 65  tra flags are se
9650: 74 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 74  t according to t
9660: 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c  he compression l
9670: 65 76 65 6c 29 2e 20 20 54 68 65 0a 20 20 20 63  evel).  The.   c
9680: 61 6c 6c 65 72 20 6d 75 73 74 20 61 73 73 75 72  aller must assur
9690: 65 20 74 68 61 74 2c 20 69 66 20 6e 6f 74 20 5a  e that, if not Z
96a0: 5f 4e 55 4c 4c 2c 20 6e 61 6d 65 20 61 6e 64 20  _NULL, name and 
96b0: 63 6f 6d 6d 65 6e 74 20 61 72 65 20 74 65 72 6d  comment are term
96c0: 69 6e 61 74 65 64 20 77 69 74 68 0a 20 20 20 61  inated with.   a
96d0: 20 7a 65 72 6f 20 62 79 74 65 2c 20 61 6e 64 20   zero byte, and 
96e0: 74 68 61 74 20 69 66 20 65 78 74 72 61 20 69 73  that if extra is
96f0: 20 6e 6f 74 20 5a 5f 4e 55 4c 4c 2c 20 74 68 61   not Z_NULL, tha
9700: 74 20 65 78 74 72 61 5f 6c 65 6e 20 62 79 74 65  t extra_len byte
9710: 73 20 61 72 65 0a 20 20 20 61 76 61 69 6c 61 62  s are.   availab
9720: 6c 65 20 74 68 65 72 65 2e 20 20 49 66 20 68 63  le there.  If hc
9730: 72 63 20 69 73 20 74 72 75 65 2c 20 61 20 67 7a  rc is true, a gz
9740: 69 70 20 68 65 61 64 65 72 20 63 72 63 20 69 73  ip header crc is
9750: 20 69 6e 63 6c 75 64 65 64 2e 20 20 4e 6f 74 65   included.  Note
9760: 20 74 68 61 74 0a 20 20 20 74 68 65 20 63 75 72   that.   the cur
9770: 72 65 6e 74 20 76 65 72 73 69 6f 6e 73 20 6f 66  rent versions of
9780: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e   the command-lin
9790: 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 67 7a 69  e version of gzi
97a0: 70 20 28 75 70 20 74 68 72 6f 75 67 68 20 76 65  p (up through ve
97b0: 72 73 69 6f 6e 0a 20 20 20 31 2e 33 2e 78 29 20  rsion.   1.3.x) 
97c0: 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 68  do not support h
97d0: 65 61 64 65 72 20 63 72 63 27 73 2c 20 61 6e 64  eader crc's, and
97e0: 20 77 69 6c 6c 20 72 65 70 6f 72 74 20 74 68 61   will report tha
97f0: 74 20 69 74 20 69 73 20 61 20 22 6d 75 6c 74 69  t it is a "multi
9800: 2d 70 61 72 74 0a 20 20 20 67 7a 69 70 20 66 69  -part.   gzip fi
9810: 6c 65 22 20 61 6e 64 20 67 69 76 65 20 75 70 2e  le" and give up.
9820: 0a 0a 20 20 20 20 20 49 66 20 64 65 66 6c 61 74  ..     If deflat
9830: 65 53 65 74 48 65 61 64 65 72 20 69 73 20 6e 6f  eSetHeader is no
9840: 74 20 75 73 65 64 2c 20 74 68 65 20 64 65 66 61  t used, the defa
9850: 75 6c 74 20 67 7a 69 70 20 68 65 61 64 65 72 20  ult gzip header 
9860: 68 61 73 20 74 65 78 74 20 66 61 6c 73 65 2c 0a  has text false,.
9870: 20 20 20 74 68 65 20 74 69 6d 65 20 73 65 74 20     the time set 
9880: 74 6f 20 7a 65 72 6f 2c 20 61 6e 64 20 6f 73 20  to zero, and os 
9890: 73 65 74 20 74 6f 20 32 35 35 2c 20 77 69 74 68  set to 255, with
98a0: 20 6e 6f 20 65 78 74 72 61 2c 20 6e 61 6d 65 2c   no extra, name,
98b0: 20 6f 72 20 63 6f 6d 6d 65 6e 74 0a 20 20 20 66   or comment.   f
98c0: 69 65 6c 64 73 2e 20 20 54 68 65 20 67 7a 69 70  ields.  The gzip
98d0: 20 68 65 61 64 65 72 20 69 73 20 72 65 74 75 72   header is retur
98e0: 6e 65 64 20 74 6f 20 74 68 65 20 64 65 66 61 75  ned to the defau
98f0: 6c 74 20 73 74 61 74 65 20 62 79 20 64 65 66 6c  lt state by defl
9900: 61 74 65 52 65 73 65 74 28 29 2e 0a 0a 20 20 20  ateReset()...   
9910: 20 20 64 65 66 6c 61 74 65 53 65 74 48 65 61 64    deflateSetHead
9920: 65 72 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20  er returns Z_OK 
9930: 69 66 20 73 75 63 63 65 73 73 2c 20 6f 72 20 5a  if success, or Z
9940: 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 69 66  _STREAM_ERROR if
9950: 20 74 68 65 20 73 6f 75 72 63 65 0a 20 20 20 73   the source.   s
9960: 74 72 65 61 6d 20 73 74 61 74 65 20 77 61 73 20  tream state was 
9970: 69 6e 63 6f 6e 73 69 73 74 65 6e 74 2e 0a 2a 2f  inconsistent..*/
9980: 0a 0a 2f 2a 0a 5a 45 58 54 45 52 4e 20 69 6e 74  ../*.ZEXTERN int
9990: 20 5a 45 58 50 4f 52 54 20 69 6e 66 6c 61 74 65   ZEXPORT inflate
99a0: 49 6e 69 74 32 20 4f 46 28 28 7a 5f 73 74 72 65  Init2 OF((z_stre
99b0: 61 6d 70 20 73 74 72 6d 2c 0a 20 20 20 20 20 20  amp strm,.      
99c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
99e0: 6e 74 20 20 77 69 6e 64 6f 77 42 69 74 73 29 29  nt  windowBits))
99f0: 3b 0a 0a 20 20 20 20 20 54 68 69 73 20 69 73 20  ;..     This is 
9a00: 61 6e 6f 74 68 65 72 20 76 65 72 73 69 6f 6e 20  another version 
9a10: 6f 66 20 69 6e 66 6c 61 74 65 49 6e 69 74 20 77  of inflateInit w
9a20: 69 74 68 20 61 6e 20 65 78 74 72 61 20 70 61 72  ith an extra par
9a30: 61 6d 65 74 65 72 2e 20 20 54 68 65 0a 20 20 20  ameter.  The.   
9a40: 66 69 65 6c 64 73 20 6e 65 78 74 5f 69 6e 2c 20  fields next_in, 
9a50: 61 76 61 69 6c 5f 69 6e 2c 20 7a 61 6c 6c 6f 63  avail_in, zalloc
9a60: 2c 20 7a 66 72 65 65 20 61 6e 64 20 6f 70 61 71  , zfree and opaq
9a70: 75 65 20 6d 75 73 74 20 62 65 20 69 6e 69 74 69  ue must be initi
9a80: 61 6c 69 7a 65 64 0a 20 20 20 62 65 66 6f 72 65  alized.   before
9a90: 20 62 79 20 74 68 65 20 63 61 6c 6c 65 72 2e 0a   by the caller..
9aa0: 0a 20 20 20 20 20 54 68 65 20 77 69 6e 64 6f 77  .     The window
9ab0: 42 69 74 73 20 70 61 72 61 6d 65 74 65 72 20 69  Bits parameter i
9ac0: 73 20 74 68 65 20 62 61 73 65 20 74 77 6f 20 6c  s the base two l
9ad0: 6f 67 61 72 69 74 68 6d 20 6f 66 20 74 68 65 20  ogarithm of the 
9ae0: 6d 61 78 69 6d 75 6d 20 77 69 6e 64 6f 77 0a 20  maximum window. 
9af0: 20 20 73 69 7a 65 20 28 74 68 65 20 73 69 7a 65    size (the size
9b00: 20 6f 66 20 74 68 65 20 68 69 73 74 6f 72 79 20   of the history 
9b10: 62 75 66 66 65 72 29 2e 20 20 49 74 20 73 68 6f  buffer).  It sho
9b20: 75 6c 64 20 62 65 20 69 6e 20 74 68 65 20 72 61  uld be in the ra
9b30: 6e 67 65 20 38 2e 2e 31 35 20 66 6f 72 0a 20 20  nge 8..15 for.  
9b40: 20 74 68 69 73 20 76 65 72 73 69 6f 6e 20 6f 66   this version of
9b50: 20 74 68 65 20 6c 69 62 72 61 72 79 2e 20 20 54   the library.  T
9b60: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
9b70: 20 69 73 20 31 35 20 69 66 20 69 6e 66 6c 61 74   is 15 if inflat
9b80: 65 49 6e 69 74 20 69 73 20 75 73 65 64 0a 20 20  eInit is used.  
9b90: 20 69 6e 73 74 65 61 64 2e 20 20 77 69 6e 64 6f   instead.  windo
9ba0: 77 42 69 74 73 20 6d 75 73 74 20 62 65 20 67 72  wBits must be gr
9bb0: 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65 71  eater than or eq
9bc0: 75 61 6c 20 74 6f 20 74 68 65 20 77 69 6e 64 6f  ual to the windo
9bd0: 77 42 69 74 73 20 76 61 6c 75 65 0a 20 20 20 70  wBits value.   p
9be0: 72 6f 76 69 64 65 64 20 74 6f 20 64 65 66 6c 61  rovided to defla
9bf0: 74 65 49 6e 69 74 32 28 29 20 77 68 69 6c 65 20  teInit2() while 
9c00: 63 6f 6d 70 72 65 73 73 69 6e 67 2c 20 6f 72 20  compressing, or 
9c10: 69 74 20 6d 75 73 74 20 62 65 20 65 71 75 61 6c  it must be equal
9c20: 20 74 6f 20 31 35 20 69 66 0a 20 20 20 64 65 66   to 15 if.   def
9c30: 6c 61 74 65 49 6e 69 74 32 28 29 20 77 61 73 20  lateInit2() was 
9c40: 6e 6f 74 20 75 73 65 64 2e 20 20 49 66 20 61 20  not used.  If a 
9c50: 63 6f 6d 70 72 65 73 73 65 64 20 73 74 72 65 61  compressed strea
9c60: 6d 20 77 69 74 68 20 61 20 6c 61 72 67 65 72 20  m with a larger 
9c70: 77 69 6e 64 6f 77 0a 20 20 20 73 69 7a 65 20 69  window.   size i
9c80: 73 20 67 69 76 65 6e 20 61 73 20 69 6e 70 75 74  s given as input
9c90: 2c 20 69 6e 66 6c 61 74 65 28 29 20 77 69 6c 6c  , inflate() will
9ca0: 20 72 65 74 75 72 6e 20 77 69 74 68 20 74 68 65   return with the
9cb0: 20 65 72 72 6f 72 20 63 6f 64 65 0a 20 20 20 5a   error code.   Z
9cc0: 5f 44 41 54 41 5f 45 52 52 4f 52 20 69 6e 73 74  _DATA_ERROR inst
9cd0: 65 61 64 20 6f 66 20 74 72 79 69 6e 67 20 74 6f  ead of trying to
9ce0: 20 61 6c 6c 6f 63 61 74 65 20 61 20 6c 61 72 67   allocate a larg
9cf0: 65 72 20 77 69 6e 64 6f 77 2e 0a 0a 20 20 20 20  er window...    
9d00: 20 77 69 6e 64 6f 77 42 69 74 73 20 63 61 6e 20   windowBits can 
9d10: 61 6c 73 6f 20 62 65 20 7a 65 72 6f 20 74 6f 20  also be zero to 
9d20: 72 65 71 75 65 73 74 20 74 68 61 74 20 69 6e 66  request that inf
9d30: 6c 61 74 65 20 75 73 65 20 74 68 65 20 77 69 6e  late use the win
9d40: 64 6f 77 20 73 69 7a 65 20 69 6e 0a 20 20 20 74  dow size in.   t
9d50: 68 65 20 7a 6c 69 62 20 68 65 61 64 65 72 20 6f  he zlib header o
9d60: 66 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65 64  f the compressed
9d70: 20 73 74 72 65 61 6d 2e 0a 0a 20 20 20 20 20 77   stream...     w
9d80: 69 6e 64 6f 77 42 69 74 73 20 63 61 6e 20 61 6c  indowBits can al
9d90: 73 6f 20 62 65 20 2d 38 2e 2e 2d 31 35 20 66 6f  so be -8..-15 fo
9da0: 72 20 72 61 77 20 69 6e 66 6c 61 74 65 2e 20 20  r raw inflate.  
9db0: 49 6e 20 74 68 69 73 20 63 61 73 65 2c 20 2d 77  In this case, -w
9dc0: 69 6e 64 6f 77 42 69 74 73 0a 20 20 20 64 65 74  indowBits.   det
9dd0: 65 72 6d 69 6e 65 73 20 74 68 65 20 77 69 6e 64  ermines the wind
9de0: 6f 77 20 73 69 7a 65 2e 20 20 69 6e 66 6c 61 74  ow size.  inflat
9df0: 65 28 29 20 77 69 6c 6c 20 74 68 65 6e 20 70 72  e() will then pr
9e00: 6f 63 65 73 73 20 72 61 77 20 64 65 66 6c 61 74  ocess raw deflat
9e10: 65 20 64 61 74 61 2c 0a 20 20 20 6e 6f 74 20 6c  e data,.   not l
9e20: 6f 6f 6b 69 6e 67 20 66 6f 72 20 61 20 7a 6c 69  ooking for a zli
9e30: 62 20 6f 72 20 67 7a 69 70 20 68 65 61 64 65 72  b or gzip header
9e40: 2c 20 6e 6f 74 20 67 65 6e 65 72 61 74 69 6e 67  , not generating
9e50: 20 61 20 63 68 65 63 6b 20 76 61 6c 75 65 2c 20   a check value, 
9e60: 61 6e 64 20 6e 6f 74 0a 20 20 20 6c 6f 6f 6b 69  and not.   looki
9e70: 6e 67 20 66 6f 72 20 61 6e 79 20 63 68 65 63 6b  ng for any check
9e80: 20 76 61 6c 75 65 73 20 66 6f 72 20 63 6f 6d 70   values for comp
9e90: 61 72 69 73 6f 6e 20 61 74 20 74 68 65 20 65 6e  arison at the en
9ea0: 64 20 6f 66 20 74 68 65 20 73 74 72 65 61 6d 2e  d of the stream.
9eb0: 20 20 54 68 69 73 0a 20 20 20 69 73 20 66 6f 72    This.   is for
9ec0: 20 75 73 65 20 77 69 74 68 20 6f 74 68 65 72 20   use with other 
9ed0: 66 6f 72 6d 61 74 73 20 74 68 61 74 20 75 73 65  formats that use
9ee0: 20 74 68 65 20 64 65 66 6c 61 74 65 20 63 6f 6d   the deflate com
9ef0: 70 72 65 73 73 65 64 20 64 61 74 61 20 66 6f 72  pressed data for
9f00: 6d 61 74 0a 20 20 20 73 75 63 68 20 61 73 20 7a  mat.   such as z
9f10: 69 70 2e 20 20 54 68 6f 73 65 20 66 6f 72 6d 61  ip.  Those forma
9f20: 74 73 20 70 72 6f 76 69 64 65 20 74 68 65 69 72  ts provide their
9f30: 20 6f 77 6e 20 63 68 65 63 6b 20 76 61 6c 75 65   own check value
9f40: 73 2e 20 20 49 66 20 61 20 63 75 73 74 6f 6d 0a  s.  If a custom.
9f50: 20 20 20 66 6f 72 6d 61 74 20 69 73 20 64 65 76     format is dev
9f60: 65 6c 6f 70 65 64 20 75 73 69 6e 67 20 74 68 65  eloped using the
9f70: 20 72 61 77 20 64 65 66 6c 61 74 65 20 66 6f 72   raw deflate for
9f80: 6d 61 74 20 66 6f 72 20 63 6f 6d 70 72 65 73 73  mat for compress
9f90: 65 64 20 64 61 74 61 2c 20 69 74 20 69 73 0a 20  ed data, it is. 
9fa0: 20 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68    recommended th
9fb0: 61 74 20 61 20 63 68 65 63 6b 20 76 61 6c 75 65  at a check value
9fc0: 20 73 75 63 68 20 61 73 20 61 6e 20 61 64 6c 65   such as an adle
9fd0: 72 33 32 20 6f 72 20 61 20 63 72 63 33 32 20 62  r32 or a crc32 b
9fe0: 65 20 61 70 70 6c 69 65 64 20 74 6f 0a 20 20 20  e applied to.   
9ff0: 74 68 65 20 75 6e 63 6f 6d 70 72 65 73 73 65 64  the uncompressed
a000: 20 64 61 74 61 20 61 73 20 69 73 20 64 6f 6e 65   data as is done
a010: 20 69 6e 20 74 68 65 20 7a 6c 69 62 2c 20 67 7a   in the zlib, gz
a020: 69 70 2c 20 61 6e 64 20 7a 69 70 20 66 6f 72 6d  ip, and zip form
a030: 61 74 73 2e 20 20 46 6f 72 0a 20 20 20 6d 6f 73  ats.  For.   mos
a040: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20  t applications, 
a050: 74 68 65 20 7a 6c 69 62 20 66 6f 72 6d 61 74 20  the zlib format 
a060: 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 61  should be used a
a070: 73 20 69 73 2e 20 20 4e 6f 74 65 20 74 68 61 74  s is.  Note that
a080: 20 63 6f 6d 6d 65 6e 74 73 0a 20 20 20 61 62 6f   comments.   abo
a090: 76 65 20 6f 6e 20 74 68 65 20 75 73 65 20 69 6e  ve on the use in
a0a0: 20 64 65 66 6c 61 74 65 49 6e 69 74 32 28 29 20   deflateInit2() 
a0b0: 61 70 70 6c 69 65 73 20 74 6f 20 74 68 65 20 6d  applies to the m
a0c0: 61 67 6e 69 74 75 64 65 20 6f 66 20 77 69 6e 64  agnitude of wind
a0d0: 6f 77 42 69 74 73 2e 0a 0a 20 20 20 20 20 77 69  owBits...     wi
a0e0: 6e 64 6f 77 42 69 74 73 20 63 61 6e 20 61 6c 73  ndowBits can als
a0f0: 6f 20 62 65 20 67 72 65 61 74 65 72 20 74 68 61  o be greater tha
a100: 6e 20 31 35 20 66 6f 72 20 6f 70 74 69 6f 6e 61  n 15 for optiona
a110: 6c 20 67 7a 69 70 20 64 65 63 6f 64 69 6e 67 2e  l gzip decoding.
a120: 20 20 41 64 64 0a 20 20 20 33 32 20 74 6f 20 77    Add.   32 to w
a130: 69 6e 64 6f 77 42 69 74 73 20 74 6f 20 65 6e 61  indowBits to ena
a140: 62 6c 65 20 7a 6c 69 62 20 61 6e 64 20 67 7a 69  ble zlib and gzi
a150: 70 20 64 65 63 6f 64 69 6e 67 20 77 69 74 68 20  p decoding with 
a160: 61 75 74 6f 6d 61 74 69 63 20 68 65 61 64 65 72  automatic header
a170: 0a 20 20 20 64 65 74 65 63 74 69 6f 6e 2c 20 6f  .   detection, o
a180: 72 20 61 64 64 20 31 36 20 74 6f 20 64 65 63 6f  r add 16 to deco
a190: 64 65 20 6f 6e 6c 79 20 74 68 65 20 67 7a 69 70  de only the gzip
a1a0: 20 66 6f 72 6d 61 74 20 28 74 68 65 20 7a 6c 69   format (the zli
a1b0: 62 20 66 6f 72 6d 61 74 20 77 69 6c 6c 0a 20 20  b format will.  
a1c0: 20 72 65 74 75 72 6e 20 61 20 5a 5f 44 41 54 41   return a Z_DATA
a1d0: 5f 45 52 52 4f 52 29 2e 20 20 49 66 20 61 20 67  _ERROR).  If a g
a1e0: 7a 69 70 20 73 74 72 65 61 6d 20 69 73 20 62 65  zip stream is be
a1f0: 69 6e 67 20 64 65 63 6f 64 65 64 2c 20 73 74 72  ing decoded, str
a200: 6d 2d 3e 61 64 6c 65 72 20 69 73 20 61 0a 20 20  m->adler is a.  
a210: 20 63 72 63 33 32 20 69 6e 73 74 65 61 64 20 6f   crc32 instead o
a220: 66 20 61 6e 20 61 64 6c 65 72 33 32 2e 0a 0a 20  f an adler32... 
a230: 20 20 20 20 69 6e 66 6c 61 74 65 49 6e 69 74 32      inflateInit2
a240: 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20 69 66   returns Z_OK if
a250: 20 73 75 63 63 65 73 73 2c 20 5a 5f 4d 45 4d 5f   success, Z_MEM_
a260: 45 52 52 4f 52 20 69 66 20 74 68 65 72 65 20 77  ERROR if there w
a270: 61 73 20 6e 6f 74 20 65 6e 6f 75 67 68 0a 20 20  as not enough.  
a280: 20 6d 65 6d 6f 72 79 2c 20 5a 5f 56 45 52 53 49   memory, Z_VERSI
a290: 4f 4e 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20  ON_ERROR if the 
a2a0: 7a 6c 69 62 20 6c 69 62 72 61 72 79 20 76 65 72  zlib library ver
a2b0: 73 69 6f 6e 20 69 73 20 69 6e 63 6f 6d 70 61 74  sion is incompat
a2c0: 69 62 6c 65 20 77 69 74 68 20 74 68 65 0a 20 20  ible with the.  
a2d0: 20 76 65 72 73 69 6f 6e 20 61 73 73 75 6d 65 64   version assumed
a2e0: 20 62 79 20 74 68 65 20 63 61 6c 6c 65 72 2c 20   by the caller, 
a2f0: 6f 72 20 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f  or Z_STREAM_ERRO
a300: 52 20 69 66 20 74 68 65 20 70 61 72 61 6d 65 74  R if the paramet
a310: 65 72 73 20 61 72 65 0a 20 20 20 69 6e 76 61 6c  ers are.   inval
a320: 69 64 2c 20 73 75 63 68 20 61 73 20 61 20 6e 75  id, such as a nu
a330: 6c 6c 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ll pointer to th
a340: 65 20 73 74 72 75 63 74 75 72 65 2e 20 20 6d 73  e structure.  ms
a350: 67 20 69 73 20 73 65 74 20 74 6f 20 6e 75 6c 6c  g is set to null
a360: 20 69 66 0a 20 20 20 74 68 65 72 65 20 69 73 20   if.   there is 
a370: 6e 6f 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  no error message
a380: 2e 20 20 69 6e 66 6c 61 74 65 49 6e 69 74 32 20  .  inflateInit2 
a390: 64 6f 65 73 20 6e 6f 74 20 70 65 72 66 6f 72 6d  does not perform
a3a0: 20 61 6e 79 20 64 65 63 6f 6d 70 72 65 73 73 69   any decompressi
a3b0: 6f 6e 0a 20 20 20 61 70 61 72 74 20 66 72 6f 6d  on.   apart from
a3c0: 20 70 6f 73 73 69 62 6c 79 20 72 65 61 64 69 6e   possibly readin
a3d0: 67 20 74 68 65 20 7a 6c 69 62 20 68 65 61 64 65  g the zlib heade
a3e0: 72 20 69 66 20 70 72 65 73 65 6e 74 3a 20 61 63  r if present: ac
a3f0: 74 75 61 6c 20 64 65 63 6f 6d 70 72 65 73 73 69  tual decompressi
a400: 6f 6e 0a 20 20 20 77 69 6c 6c 20 62 65 20 64 6f  on.   will be do
a410: 6e 65 20 62 79 20 69 6e 66 6c 61 74 65 28 29 2e  ne by inflate().
a420: 20 20 28 53 6f 20 6e 65 78 74 5f 69 6e 20 61 6e    (So next_in an
a430: 64 20 61 76 61 69 6c 5f 69 6e 20 6d 61 79 20 62  d avail_in may b
a440: 65 20 6d 6f 64 69 66 69 65 64 2c 20 62 75 74 0a  e modified, but.
a450: 20 20 20 6e 65 78 74 5f 6f 75 74 20 61 6e 64 20     next_out and 
a460: 61 76 61 69 6c 5f 6f 75 74 20 61 72 65 20 75 6e  avail_out are un
a470: 75 73 65 64 20 61 6e 64 20 75 6e 63 68 61 6e 67  used and unchang
a480: 65 64 2e 29 20 54 68 65 20 63 75 72 72 65 6e 74  ed.) The current
a490: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a   implementation.
a4a0: 20 20 20 6f 66 20 69 6e 66 6c 61 74 65 49 6e 69     of inflateIni
a4b0: 74 32 28 29 20 64 6f 65 73 20 6e 6f 74 20 70 72  t2() does not pr
a4c0: 6f 63 65 73 73 20 61 6e 79 20 68 65 61 64 65 72  ocess any header
a4d0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 2d 2d 20   information -- 
a4e0: 74 68 61 74 20 69 73 0a 20 20 20 64 65 66 65 72  that is.   defer
a4f0: 72 65 64 20 75 6e 74 69 6c 20 69 6e 66 6c 61 74  red until inflat
a500: 65 28 29 20 69 73 20 63 61 6c 6c 65 64 2e 0a 2a  e() is called..*
a510: 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a  /..ZEXTERN int Z
a520: 45 58 50 4f 52 54 20 69 6e 66 6c 61 74 65 53 65  EXPORT inflateSe
a530: 74 44 69 63 74 69 6f 6e 61 72 79 20 4f 46 28 28  tDictionary OF((
a540: 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 2c 0a  z_streamp strm,.
a550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a570: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
a580: 73 74 20 42 79 74 65 66 20 2a 64 69 63 74 69 6f  st Bytef *dictio
a590: 6e 61 72 79 2c 0a 20 20 20 20 20 20 20 20 20 20  nary,.          
a5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a5c0: 20 20 20 75 49 6e 74 20 20 64 69 63 74 4c 65 6e     uInt  dictLen
a5d0: 67 74 68 29 29 3b 0a 2f 2a 0a 20 20 20 20 20 49  gth));./*.     I
a5e0: 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20 64  nitializes the d
a5f0: 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 64 69 63  ecompression dic
a600: 74 69 6f 6e 61 72 79 20 66 72 6f 6d 20 74 68 65  tionary from the
a610: 20 67 69 76 65 6e 20 75 6e 63 6f 6d 70 72 65 73   given uncompres
a620: 73 65 64 20 62 79 74 65 0a 20 20 20 73 65 71 75  sed byte.   sequ
a630: 65 6e 63 65 2e 20 20 54 68 69 73 20 66 75 6e 63  ence.  This func
a640: 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 63 61 6c  tion must be cal
a650: 6c 65 64 20 69 6d 6d 65 64 69 61 74 65 6c 79 20  led immediately 
a660: 61 66 74 65 72 20 61 20 63 61 6c 6c 20 6f 66 20  after a call of 
a670: 69 6e 66 6c 61 74 65 2c 0a 20 20 20 69 66 20 74  inflate,.   if t
a680: 68 61 74 20 63 61 6c 6c 20 72 65 74 75 72 6e 65  hat call returne
a690: 64 20 5a 5f 4e 45 45 44 5f 44 49 43 54 2e 20 20  d Z_NEED_DICT.  
a6a0: 54 68 65 20 64 69 63 74 69 6f 6e 61 72 79 20 63  The dictionary c
a6b0: 68 6f 73 65 6e 20 62 79 20 74 68 65 20 63 6f 6d  hosen by the com
a6c0: 70 72 65 73 73 6f 72 0a 20 20 20 63 61 6e 20 62  pressor.   can b
a6d0: 65 20 64 65 74 65 72 6d 69 6e 65 64 20 66 72 6f  e determined fro
a6e0: 6d 20 74 68 65 20 61 64 6c 65 72 33 32 20 76 61  m the adler32 va
a6f0: 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20  lue returned by 
a700: 74 68 61 74 20 63 61 6c 6c 20 6f 66 20 69 6e 66  that call of inf
a710: 6c 61 74 65 2e 0a 20 20 20 54 68 65 20 63 6f 6d  late..   The com
a720: 70 72 65 73 73 6f 72 20 61 6e 64 20 64 65 63 6f  pressor and deco
a730: 6d 70 72 65 73 73 6f 72 20 6d 75 73 74 20 75 73  mpressor must us
a740: 65 20 65 78 61 63 74 6c 79 20 74 68 65 20 73 61  e exactly the sa
a750: 6d 65 20 64 69 63 74 69 6f 6e 61 72 79 20 28 73  me dictionary (s
a760: 65 65 0a 20 20 20 64 65 66 6c 61 74 65 53 65 74  ee.   deflateSet
a770: 44 69 63 74 69 6f 6e 61 72 79 29 2e 20 20 46 6f  Dictionary).  Fo
a780: 72 20 72 61 77 20 69 6e 66 6c 61 74 65 2c 20 74  r raw inflate, t
a790: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e  his function can
a7a0: 20 62 65 20 63 61 6c 6c 65 64 20 61 74 20 61 6e   be called at an
a7b0: 79 0a 20 20 20 74 69 6d 65 20 74 6f 20 73 65 74  y.   time to set
a7c0: 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79 2e   the dictionary.
a7d0: 20 20 49 66 20 74 68 65 20 70 72 6f 76 69 64 65    If the provide
a7e0: 64 20 64 69 63 74 69 6f 6e 61 72 79 20 69 73 20  d dictionary is 
a7f0: 73 6d 61 6c 6c 65 72 20 74 68 61 6e 20 74 68 65  smaller than the
a800: 0a 20 20 20 77 69 6e 64 6f 77 20 61 6e 64 20 74  .   window and t
a810: 68 65 72 65 20 69 73 20 61 6c 72 65 61 64 79 20  here is already 
a820: 64 61 74 61 20 69 6e 20 74 68 65 20 77 69 6e 64  data in the wind
a830: 6f 77 2c 20 74 68 65 6e 20 74 68 65 20 70 72 6f  ow, then the pro
a840: 76 69 64 65 64 20 64 69 63 74 69 6f 6e 61 72 79  vided dictionary
a850: 0a 20 20 20 77 69 6c 6c 20 61 6d 65 6e 64 20 77  .   will amend w
a860: 68 61 74 27 73 20 74 68 65 72 65 2e 20 20 54 68  hat's there.  Th
a870: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75  e application mu
a880: 73 74 20 69 6e 73 75 72 65 20 74 68 61 74 20 74  st insure that t
a890: 68 65 20 64 69 63 74 69 6f 6e 61 72 79 0a 20 20  he dictionary.  
a8a0: 20 74 68 61 74 20 77 61 73 20 75 73 65 64 20 66   that was used f
a8b0: 6f 72 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 69  or compression i
a8c0: 73 20 70 72 6f 76 69 64 65 64 2e 0a 0a 20 20 20  s provided...   
a8d0: 20 20 69 6e 66 6c 61 74 65 53 65 74 44 69 63 74    inflateSetDict
a8e0: 69 6f 6e 61 72 79 20 72 65 74 75 72 6e 73 20 5a  ionary returns Z
a8f0: 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73 2c 20  _OK if success, 
a900: 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 69  Z_STREAM_ERROR i
a910: 66 20 61 0a 20 20 20 70 61 72 61 6d 65 74 65 72  f a.   parameter
a920: 20 69 73 20 69 6e 76 61 6c 69 64 20 28 65 2e 67   is invalid (e.g
a930: 2e 20 20 64 69 63 74 69 6f 6e 61 72 79 20 62 65  .  dictionary be
a940: 69 6e 67 20 5a 5f 4e 55 4c 4c 29 20 6f 72 20 74  ing Z_NULL) or t
a950: 68 65 20 73 74 72 65 61 6d 20 73 74 61 74 65 20  he stream state 
a960: 69 73 0a 20 20 20 69 6e 63 6f 6e 73 69 73 74 65  is.   inconsiste
a970: 6e 74 2c 20 5a 5f 44 41 54 41 5f 45 52 52 4f 52  nt, Z_DATA_ERROR
a980: 20 69 66 20 74 68 65 20 67 69 76 65 6e 20 64 69   if the given di
a990: 63 74 69 6f 6e 61 72 79 20 64 6f 65 73 6e 27 74  ctionary doesn't
a9a0: 20 6d 61 74 63 68 20 74 68 65 0a 20 20 20 65 78   match the.   ex
a9b0: 70 65 63 74 65 64 20 6f 6e 65 20 28 69 6e 63 6f  pected one (inco
a9c0: 72 72 65 63 74 20 61 64 6c 65 72 33 32 20 76 61  rrect adler32 va
a9d0: 6c 75 65 29 2e 20 20 69 6e 66 6c 61 74 65 53 65  lue).  inflateSe
a9e0: 74 44 69 63 74 69 6f 6e 61 72 79 20 64 6f 65 73  tDictionary does
a9f0: 20 6e 6f 74 0a 20 20 20 70 65 72 66 6f 72 6d 20   not.   perform 
aa00: 61 6e 79 20 64 65 63 6f 6d 70 72 65 73 73 69 6f  any decompressio
aa10: 6e 3a 20 74 68 69 73 20 77 69 6c 6c 20 62 65 20  n: this will be 
aa20: 64 6f 6e 65 20 62 79 20 73 75 62 73 65 71 75 65  done by subseque
aa30: 6e 74 20 63 61 6c 6c 73 20 6f 66 0a 20 20 20 69  nt calls of.   i
aa40: 6e 66 6c 61 74 65 28 29 2e 0a 2a 2f 0a 0a 5a 45  nflate()..*/..ZE
aa50: 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52  XTERN int ZEXPOR
aa60: 54 20 69 6e 66 6c 61 74 65 53 79 6e 63 20 4f 46  T inflateSync OF
aa70: 28 28 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d  ((z_streamp strm
aa80: 29 29 3b 0a 2f 2a 0a 20 20 20 20 20 53 6b 69 70  ));./*.     Skip
aa90: 73 20 69 6e 76 61 6c 69 64 20 63 6f 6d 70 72 65  s invalid compre
aaa0: 73 73 65 64 20 64 61 74 61 20 75 6e 74 69 6c 20  ssed data until 
aab0: 61 20 70 6f 73 73 69 62 6c 65 20 66 75 6c 6c 20  a possible full 
aac0: 66 6c 75 73 68 20 70 6f 69 6e 74 20 28 73 65 65  flush point (see
aad0: 20 61 62 6f 76 65 0a 20 20 20 66 6f 72 20 74 68   above.   for th
aae0: 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66  e description of
aaf0: 20 64 65 66 6c 61 74 65 20 77 69 74 68 20 5a 5f   deflate with Z_
ab00: 46 55 4c 4c 5f 46 4c 55 53 48 29 20 63 61 6e 20  FULL_FLUSH) can 
ab10: 62 65 20 66 6f 75 6e 64 2c 20 6f 72 20 75 6e 74  be found, or unt
ab20: 69 6c 20 61 6c 6c 0a 20 20 20 61 76 61 69 6c 61  il all.   availa
ab30: 62 6c 65 20 69 6e 70 75 74 20 69 73 20 73 6b 69  ble input is ski
ab40: 70 70 65 64 2e 20 20 4e 6f 20 6f 75 74 70 75 74  pped.  No output
ab50: 20 69 73 20 70 72 6f 76 69 64 65 64 2e 0a 0a 20   is provided... 
ab60: 20 20 20 20 69 6e 66 6c 61 74 65 53 79 6e 63 20      inflateSync 
ab70: 73 65 61 72 63 68 65 73 20 66 6f 72 20 61 20 30  searches for a 0
ab80: 30 20 30 30 20 46 46 20 46 46 20 70 61 74 74 65  0 00 FF FF patte
ab90: 72 6e 20 69 6e 20 74 68 65 20 63 6f 6d 70 72 65  rn in the compre
aba0: 73 73 65 64 20 64 61 74 61 2e 0a 20 20 20 41 6c  ssed data..   Al
abb0: 6c 20 66 75 6c 6c 20 66 6c 75 73 68 20 70 6f 69  l full flush poi
abc0: 6e 74 73 20 68 61 76 65 20 74 68 69 73 20 70 61  nts have this pa
abd0: 74 74 65 72 6e 2c 20 62 75 74 20 6e 6f 74 20 61  ttern, but not a
abe0: 6c 6c 20 6f 63 63 75 72 65 6e 63 65 73 20 6f 66  ll occurences of
abf0: 20 74 68 69 73 0a 20 20 20 70 61 74 74 65 72 6e   this.   pattern
ac00: 20 61 72 65 20 66 75 6c 6c 20 66 6c 75 73 68 20   are full flush 
ac10: 70 6f 69 6e 74 73 2e 0a 0a 20 20 20 20 20 69 6e  points...     in
ac20: 66 6c 61 74 65 53 79 6e 63 20 72 65 74 75 72 6e  flateSync return
ac30: 73 20 5a 5f 4f 4b 20 69 66 20 61 20 70 6f 73 73  s Z_OK if a poss
ac40: 69 62 6c 65 20 66 75 6c 6c 20 66 6c 75 73 68 20  ible full flush 
ac50: 70 6f 69 6e 74 20 68 61 73 20 62 65 65 6e 20 66  point has been f
ac60: 6f 75 6e 64 2c 0a 20 20 20 5a 5f 42 55 46 5f 45  ound,.   Z_BUF_E
ac70: 52 52 4f 52 20 69 66 20 6e 6f 20 6d 6f 72 65 20  RROR if no more 
ac80: 69 6e 70 75 74 20 77 61 73 20 70 72 6f 76 69 64  input was provid
ac90: 65 64 2c 20 5a 5f 44 41 54 41 5f 45 52 52 4f 52  ed, Z_DATA_ERROR
aca0: 20 69 66 20 6e 6f 20 66 6c 75 73 68 20 70 6f 69   if no flush poi
acb0: 6e 74 0a 20 20 20 68 61 73 20 62 65 65 6e 20 66  nt.   has been f
acc0: 6f 75 6e 64 2c 20 6f 72 20 5a 5f 53 54 52 45 41  ound, or Z_STREA
acd0: 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20 73  M_ERROR if the s
ace0: 74 72 65 61 6d 20 73 74 72 75 63 74 75 72 65 20  tream structure 
acf0: 77 61 73 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74  was inconsistent
ad00: 2e 0a 20 20 20 49 6e 20 74 68 65 20 73 75 63 63  ..   In the succ
ad10: 65 73 73 20 63 61 73 65 2c 20 74 68 65 20 61 70  ess case, the ap
ad20: 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20 73 61  plication may sa
ad30: 76 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 63  ve the current c
ad40: 75 72 72 65 6e 74 20 76 61 6c 75 65 20 6f 66 0a  urrent value of.
ad50: 20 20 20 74 6f 74 61 6c 5f 69 6e 20 77 68 69 63     total_in whic
ad60: 68 20 69 6e 64 69 63 61 74 65 73 20 77 68 65 72  h indicates wher
ad70: 65 20 76 61 6c 69 64 20 63 6f 6d 70 72 65 73 73  e valid compress
ad80: 65 64 20 64 61 74 61 20 77 61 73 20 66 6f 75 6e  ed data was foun
ad90: 64 2e 20 20 49 6e 20 74 68 65 0a 20 20 20 65 72  d.  In the.   er
ada0: 72 6f 72 20 63 61 73 65 2c 20 74 68 65 20 61 70  ror case, the ap
adb0: 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20 72 65  plication may re
adc0: 70 65 61 74 65 64 6c 79 20 63 61 6c 6c 20 69 6e  peatedly call in
add0: 66 6c 61 74 65 53 79 6e 63 2c 20 70 72 6f 76 69  flateSync, provi
ade0: 64 69 6e 67 20 6d 6f 72 65 0a 20 20 20 69 6e 70  ding more.   inp
adf0: 75 74 20 65 61 63 68 20 74 69 6d 65 2c 20 75 6e  ut each time, un
ae00: 74 69 6c 20 73 75 63 63 65 73 73 20 6f 72 20 65  til success or e
ae10: 6e 64 20 6f 66 20 74 68 65 20 69 6e 70 75 74 20  nd of the input 
ae20: 64 61 74 61 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52  data..*/..ZEXTER
ae30: 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 69 6e  N int ZEXPORT in
ae40: 66 6c 61 74 65 43 6f 70 79 20 4f 46 28 28 7a 5f  flateCopy OF((z_
ae50: 73 74 72 65 61 6d 70 20 64 65 73 74 2c 0a 20 20  streamp dest,.  
ae60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae80: 20 20 7a 5f 73 74 72 65 61 6d 70 20 73 6f 75 72    z_streamp sour
ae90: 63 65 29 29 3b 0a 2f 2a 0a 20 20 20 20 20 53 65  ce));./*.     Se
aea0: 74 73 20 74 68 65 20 64 65 73 74 69 6e 61 74 69  ts the destinati
aeb0: 6f 6e 20 73 74 72 65 61 6d 20 61 73 20 61 20 63  on stream as a c
aec0: 6f 6d 70 6c 65 74 65 20 63 6f 70 79 20 6f 66 20  omplete copy of 
aed0: 74 68 65 20 73 6f 75 72 63 65 20 73 74 72 65 61  the source strea
aee0: 6d 2e 0a 0a 20 20 20 20 20 54 68 69 73 20 66 75  m...     This fu
aef0: 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73  nction can be us
af00: 65 66 75 6c 20 77 68 65 6e 20 72 61 6e 64 6f 6d  eful when random
af10: 6c 79 20 61 63 63 65 73 73 69 6e 67 20 61 20 6c  ly accessing a l
af20: 61 72 67 65 20 73 74 72 65 61 6d 2e 20 20 54 68  arge stream.  Th
af30: 65 0a 20 20 20 66 69 72 73 74 20 70 61 73 73 20  e.   first pass 
af40: 74 68 72 6f 75 67 68 20 74 68 65 20 73 74 72 65  through the stre
af50: 61 6d 20 63 61 6e 20 70 65 72 69 6f 64 69 63 61  am can periodica
af60: 6c 6c 79 20 72 65 63 6f 72 64 20 74 68 65 20 69  lly record the i
af70: 6e 66 6c 61 74 65 20 73 74 61 74 65 2c 0a 20 20  nflate state,.  
af80: 20 61 6c 6c 6f 77 69 6e 67 20 72 65 73 74 61 72   allowing restar
af90: 74 69 6e 67 20 69 6e 66 6c 61 74 65 20 61 74 20  ting inflate at 
afa0: 74 68 6f 73 65 20 70 6f 69 6e 74 73 20 77 68 65  those points whe
afb0: 6e 20 72 61 6e 64 6f 6d 6c 79 20 61 63 63 65 73  n randomly acces
afc0: 73 69 6e 67 20 74 68 65 0a 20 20 20 73 74 72 65  sing the.   stre
afd0: 61 6d 2e 0a 0a 20 20 20 20 20 69 6e 66 6c 61 74  am...     inflat
afe0: 65 43 6f 70 79 20 72 65 74 75 72 6e 73 20 5a 5f  eCopy returns Z_
aff0: 4f 4b 20 69 66 20 73 75 63 63 65 73 73 2c 20 5a  OK if success, Z
b000: 5f 4d 45 4d 5f 45 52 52 4f 52 20 69 66 20 74 68  _MEM_ERROR if th
b010: 65 72 65 20 77 61 73 20 6e 6f 74 0a 20 20 20 65  ere was not.   e
b020: 6e 6f 75 67 68 20 6d 65 6d 6f 72 79 2c 20 5a 5f  nough memory, Z_
b030: 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 69 66 20  STREAM_ERROR if 
b040: 74 68 65 20 73 6f 75 72 63 65 20 73 74 72 65 61  the source strea
b050: 6d 20 73 74 61 74 65 20 77 61 73 20 69 6e 63 6f  m state was inco
b060: 6e 73 69 73 74 65 6e 74 0a 20 20 20 28 73 75 63  nsistent.   (suc
b070: 68 20 61 73 20 7a 61 6c 6c 6f 63 20 62 65 69 6e  h as zalloc bein
b080: 67 20 5a 5f 4e 55 4c 4c 29 2e 20 20 6d 73 67 20  g Z_NULL).  msg 
b090: 69 73 20 6c 65 66 74 20 75 6e 63 68 61 6e 67 65  is left unchange
b0a0: 64 20 69 6e 20 62 6f 74 68 20 73 6f 75 72 63 65  d in both source
b0b0: 20 61 6e 64 0a 20 20 20 64 65 73 74 69 6e 61 74   and.   destinat
b0c0: 69 6f 6e 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e  ion..*/..ZEXTERN
b0d0: 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 69 6e 66   int ZEXPORT inf
b0e0: 6c 61 74 65 52 65 73 65 74 20 4f 46 28 28 7a 5f  lateReset OF((z_
b0f0: 73 74 72 65 61 6d 70 20 73 74 72 6d 29 29 3b 0a  streamp strm));.
b100: 2f 2a 0a 20 20 20 20 20 54 68 69 73 20 66 75 6e  /*.     This fun
b110: 63 74 69 6f 6e 20 69 73 20 65 71 75 69 76 61 6c  ction is equival
b120: 65 6e 74 20 74 6f 20 69 6e 66 6c 61 74 65 45 6e  ent to inflateEn
b130: 64 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 69 6e  d followed by in
b140: 66 6c 61 74 65 49 6e 69 74 2c 0a 20 20 20 62 75  flateInit,.   bu
b150: 74 20 64 6f 65 73 20 6e 6f 74 20 66 72 65 65 20  t does not free 
b160: 61 6e 64 20 72 65 61 6c 6c 6f 63 61 74 65 20 61  and reallocate a
b170: 6c 6c 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20  ll the internal 
b180: 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 73 74  decompression st
b190: 61 74 65 2e 20 20 54 68 65 0a 20 20 20 73 74 72  ate.  The.   str
b1a0: 65 61 6d 20 77 69 6c 6c 20 6b 65 65 70 20 61 74  eam will keep at
b1b0: 74 72 69 62 75 74 65 73 20 74 68 61 74 20 6d 61  tributes that ma
b1c0: 79 20 68 61 76 65 20 62 65 65 6e 20 73 65 74 20  y have been set 
b1d0: 62 79 20 69 6e 66 6c 61 74 65 49 6e 69 74 32 2e  by inflateInit2.
b1e0: 0a 0a 20 20 20 20 20 69 6e 66 6c 61 74 65 52 65  ..     inflateRe
b1f0: 73 65 74 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b  set returns Z_OK
b200: 20 69 66 20 73 75 63 63 65 73 73 2c 20 6f 72 20   if success, or 
b210: 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 69  Z_STREAM_ERROR i
b220: 66 20 74 68 65 20 73 6f 75 72 63 65 0a 20 20 20  f the source.   
b230: 73 74 72 65 61 6d 20 73 74 61 74 65 20 77 61 73  stream state was
b240: 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74 20 28 73   inconsistent (s
b250: 75 63 68 20 61 73 20 7a 61 6c 6c 6f 63 20 6f 72  uch as zalloc or
b260: 20 73 74 61 74 65 20 62 65 69 6e 67 20 5a 5f 4e   state being Z_N
b270: 55 4c 4c 29 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52  ULL)..*/..ZEXTER
b280: 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 69 6e  N int ZEXPORT in
b290: 66 6c 61 74 65 52 65 73 65 74 32 20 4f 46 28 28  flateReset2 OF((
b2a0: 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 2c 0a  z_streamp strm,.
b2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b2d0: 20 20 20 20 20 20 69 6e 74 20 77 69 6e 64 6f 77        int window
b2e0: 42 69 74 73 29 29 3b 0a 2f 2a 0a 20 20 20 20 20  Bits));./*.     
b2f0: 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73  This function is
b300: 20 74 68 65 20 73 61 6d 65 20 61 73 20 69 6e 66   the same as inf
b310: 6c 61 74 65 52 65 73 65 74 2c 20 62 75 74 20 69  lateReset, but i
b320: 74 20 61 6c 73 6f 20 70 65 72 6d 69 74 73 20 63  t also permits c
b330: 68 61 6e 67 69 6e 67 0a 20 20 20 74 68 65 20 77  hanging.   the w
b340: 72 61 70 20 61 6e 64 20 77 69 6e 64 6f 77 20 73  rap and window s
b350: 69 7a 65 20 72 65 71 75 65 73 74 73 2e 20 20 54  ize requests.  T
b360: 68 65 20 77 69 6e 64 6f 77 42 69 74 73 20 70 61  he windowBits pa
b370: 72 61 6d 65 74 65 72 20 69 73 20 69 6e 74 65 72  rameter is inter
b380: 70 72 65 74 65 64 0a 20 20 20 74 68 65 20 73 61  preted.   the sa
b390: 6d 65 20 61 73 20 69 74 20 69 73 20 66 6f 72 20  me as it is for 
b3a0: 69 6e 66 6c 61 74 65 49 6e 69 74 32 2e 0a 0a 20  inflateInit2... 
b3b0: 20 20 20 20 69 6e 66 6c 61 74 65 52 65 73 65 74      inflateReset
b3c0: 32 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20 69  2 returns Z_OK i
b3d0: 66 20 73 75 63 63 65 73 73 2c 20 6f 72 20 5a 5f  f success, or Z_
b3e0: 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 69 66 20  STREAM_ERROR if 
b3f0: 74 68 65 20 73 6f 75 72 63 65 0a 20 20 20 73 74  the source.   st
b400: 72 65 61 6d 20 73 74 61 74 65 20 77 61 73 20 69  ream state was i
b410: 6e 63 6f 6e 73 69 73 74 65 6e 74 20 28 73 75 63  nconsistent (suc
b420: 68 20 61 73 20 7a 61 6c 6c 6f 63 20 6f 72 20 73  h as zalloc or s
b430: 74 61 74 65 20 62 65 69 6e 67 20 5a 5f 4e 55 4c  tate being Z_NUL
b440: 4c 29 2c 20 6f 72 20 69 66 0a 20 20 20 74 68 65  L), or if.   the
b450: 20 77 69 6e 64 6f 77 42 69 74 73 20 70 61 72 61   windowBits para
b460: 6d 65 74 65 72 20 69 73 20 69 6e 76 61 6c 69 64  meter is invalid
b470: 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e  ..*/..ZEXTERN in
b480: 74 20 5a 45 58 50 4f 52 54 20 69 6e 66 6c 61 74  t ZEXPORT inflat
b490: 65 50 72 69 6d 65 20 4f 46 28 28 7a 5f 73 74 72  ePrime OF((z_str
b4a0: 65 61 6d 70 20 73 74 72 6d 2c 0a 20 20 20 20 20  eamp strm,.     
b4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4d0: 69 6e 74 20 62 69 74 73 2c 0a 20 20 20 20 20 20  int bits,.      
b4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
b500: 6e 74 20 76 61 6c 75 65 29 29 3b 0a 2f 2a 0a 20  nt value));./*. 
b510: 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f      This functio
b520: 6e 20 69 6e 73 65 72 74 73 20 62 69 74 73 20 69  n inserts bits i
b530: 6e 20 74 68 65 20 69 6e 66 6c 61 74 65 20 69 6e  n the inflate in
b540: 70 75 74 20 73 74 72 65 61 6d 2e 20 20 54 68 65  put stream.  The
b550: 20 69 6e 74 65 6e 74 20 69 73 0a 20 20 20 74 68   intent is.   th
b560: 61 74 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  at this function
b570: 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 61 72   is used to star
b580: 74 20 69 6e 66 6c 61 74 69 6e 67 20 61 74 20 61  t inflating at a
b590: 20 62 69 74 20 70 6f 73 69 74 69 6f 6e 20 69 6e   bit position in
b5a0: 20 74 68 65 0a 20 20 20 6d 69 64 64 6c 65 20 6f   the.   middle o
b5b0: 66 20 61 20 62 79 74 65 2e 20 20 54 68 65 20 70  f a byte.  The p
b5c0: 72 6f 76 69 64 65 64 20 62 69 74 73 20 77 69 6c  rovided bits wil
b5d0: 6c 20 62 65 20 75 73 65 64 20 62 65 66 6f 72 65  l be used before
b5e0: 20 61 6e 79 20 62 79 74 65 73 20 61 72 65 20 75   any bytes are u
b5f0: 73 65 64 0a 20 20 20 66 72 6f 6d 20 6e 65 78 74  sed.   from next
b600: 5f 69 6e 2e 20 20 54 68 69 73 20 66 75 6e 63 74  _in.  This funct
b610: 69 6f 6e 20 73 68 6f 75 6c 64 20 6f 6e 6c 79 20  ion should only 
b620: 62 65 20 75 73 65 64 20 77 69 74 68 20 72 61 77  be used with raw
b630: 20 69 6e 66 6c 61 74 65 2c 20 61 6e 64 0a 20 20   inflate, and.  
b640: 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20   should be used 
b650: 62 65 66 6f 72 65 20 74 68 65 20 66 69 72 73 74  before the first
b660: 20 69 6e 66 6c 61 74 65 28 29 20 63 61 6c 6c 20   inflate() call 
b670: 61 66 74 65 72 20 69 6e 66 6c 61 74 65 49 6e 69  after inflateIni
b680: 74 32 28 29 20 6f 72 0a 20 20 20 69 6e 66 6c 61  t2() or.   infla
b690: 74 65 52 65 73 65 74 28 29 2e 20 20 62 69 74 73  teReset().  bits
b6a0: 20 6d 75 73 74 20 62 65 20 6c 65 73 73 20 74 68   must be less th
b6b0: 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20 31  an or equal to 1
b6c0: 36 2c 20 61 6e 64 20 74 68 61 74 20 6d 61 6e 79  6, and that many
b6d0: 20 6f 66 20 74 68 65 0a 20 20 20 6c 65 61 73 74   of the.   least
b6e0: 20 73 69 67 6e 69 66 69 63 61 6e 74 20 62 69 74   significant bit
b6f0: 73 20 6f 66 20 76 61 6c 75 65 20 77 69 6c 6c 20  s of value will 
b700: 62 65 20 69 6e 73 65 72 74 65 64 20 69 6e 20 74  be inserted in t
b710: 68 65 20 69 6e 70 75 74 2e 0a 0a 20 20 20 20 20  he input...     
b720: 49 66 20 62 69 74 73 20 69 73 20 6e 65 67 61 74  If bits is negat
b730: 69 76 65 2c 20 74 68 65 6e 20 74 68 65 20 69 6e  ive, then the in
b740: 70 75 74 20 73 74 72 65 61 6d 20 62 69 74 20 62  put stream bit b
b750: 75 66 66 65 72 20 69 73 20 65 6d 70 74 69 65 64  uffer is emptied
b760: 2e 20 20 54 68 65 6e 0a 20 20 20 69 6e 66 6c 61  .  Then.   infla
b770: 74 65 50 72 69 6d 65 28 29 20 63 61 6e 20 62 65  tePrime() can be
b780: 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20 74 6f   called again to
b790: 20 70 75 74 20 62 69 74 73 20 69 6e 20 74 68 65   put bits in the
b7a0: 20 62 75 66 66 65 72 2e 20 20 54 68 69 73 20 69   buffer.  This i
b7b0: 73 20 75 73 65 64 0a 20 20 20 74 6f 20 63 6c 65  s used.   to cle
b7c0: 61 72 20 6f 75 74 20 62 69 74 73 20 6c 65 66 74  ar out bits left
b7d0: 6f 76 65 72 20 61 66 74 65 72 20 66 65 65 64 69  over after feedi
b7e0: 6e 67 20 69 6e 66 6c 61 74 65 20 61 20 62 6c 6f  ng inflate a blo
b7f0: 63 6b 20 64 65 73 63 72 69 70 74 69 6f 6e 20 70  ck description p
b800: 72 69 6f 72 0a 20 20 20 74 6f 20 66 65 65 64 69  rior.   to feedi
b810: 6e 67 20 69 6e 66 6c 61 74 65 20 63 6f 64 65 73  ng inflate codes
b820: 2e 0a 0a 20 20 20 20 20 69 6e 66 6c 61 74 65 50  ...     inflateP
b830: 72 69 6d 65 20 72 65 74 75 72 6e 73 20 5a 5f 4f  rime returns Z_O
b840: 4b 20 69 66 20 73 75 63 63 65 73 73 2c 20 6f 72  K if success, or
b850: 20 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20   Z_STREAM_ERROR 
b860: 69 66 20 74 68 65 20 73 6f 75 72 63 65 0a 20 20  if the source.  
b870: 20 73 74 72 65 61 6d 20 73 74 61 74 65 20 77 61   stream state wa
b880: 73 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74 2e 0a  s inconsistent..
b890: 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 6c 6f 6e 67  */..ZEXTERN long
b8a0: 20 5a 45 58 50 4f 52 54 20 69 6e 66 6c 61 74 65   ZEXPORT inflate
b8b0: 4d 61 72 6b 20 4f 46 28 28 7a 5f 73 74 72 65 61  Mark OF((z_strea
b8c0: 6d 70 20 73 74 72 6d 29 29 3b 0a 2f 2a 0a 20 20  mp strm));./*.  
b8d0: 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e     This function
b8e0: 20 72 65 74 75 72 6e 73 20 74 77 6f 20 76 61 6c   returns two val
b8f0: 75 65 73 2c 20 6f 6e 65 20 69 6e 20 74 68 65 20  ues, one in the 
b900: 6c 6f 77 65 72 20 31 36 20 62 69 74 73 20 6f 66  lower 16 bits of
b910: 20 74 68 65 20 72 65 74 75 72 6e 0a 20 20 20 76   the return.   v
b920: 61 6c 75 65 2c 20 61 6e 64 20 74 68 65 20 6f 74  alue, and the ot
b930: 68 65 72 20 69 6e 20 74 68 65 20 72 65 6d 61 69  her in the remai
b940: 6e 69 6e 67 20 75 70 70 65 72 20 62 69 74 73 2c  ning upper bits,
b950: 20 6f 62 74 61 69 6e 65 64 20 62 79 20 73 68 69   obtained by shi
b960: 66 74 69 6e 67 20 74 68 65 0a 20 20 20 72 65 74  fting the.   ret
b970: 75 72 6e 20 76 61 6c 75 65 20 64 6f 77 6e 20 31  urn value down 1
b980: 36 20 62 69 74 73 2e 20 20 49 66 20 74 68 65 20  6 bits.  If the 
b990: 75 70 70 65 72 20 76 61 6c 75 65 20 69 73 20 2d  upper value is -
b9a0: 31 20 61 6e 64 20 74 68 65 20 6c 6f 77 65 72 20  1 and the lower 
b9b0: 76 61 6c 75 65 20 69 73 0a 20 20 20 7a 65 72 6f  value is.   zero
b9c0: 2c 20 74 68 65 6e 20 69 6e 66 6c 61 74 65 28 29  , then inflate()
b9d0: 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 64 65   is currently de
b9e0: 63 6f 64 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69  coding informati
b9f0: 6f 6e 20 6f 75 74 73 69 64 65 20 6f 66 20 61 20  on outside of a 
ba00: 62 6c 6f 63 6b 2e 0a 20 20 20 49 66 20 74 68 65  block..   If the
ba10: 20 75 70 70 65 72 20 76 61 6c 75 65 20 69 73 20   upper value is 
ba20: 2d 31 20 61 6e 64 20 74 68 65 20 6c 6f 77 65 72  -1 and the lower
ba30: 20 76 61 6c 75 65 20 69 73 20 6e 6f 6e 2d 7a 65   value is non-ze
ba40: 72 6f 2c 20 74 68 65 6e 20 69 6e 66 6c 61 74 65  ro, then inflate
ba50: 20 69 73 20 69 6e 0a 20 20 20 74 68 65 20 6d 69   is in.   the mi
ba60: 64 64 6c 65 20 6f 66 20 61 20 73 74 6f 72 65 64  ddle of a stored
ba70: 20 62 6c 6f 63 6b 2c 20 77 69 74 68 20 74 68 65   block, with the
ba80: 20 6c 6f 77 65 72 20 76 61 6c 75 65 20 65 71 75   lower value equ
ba90: 61 6c 69 6e 67 20 74 68 65 20 6e 75 6d 62 65 72  aling the number
baa0: 20 6f 66 0a 20 20 20 62 79 74 65 73 20 66 72 6f   of.   bytes fro
bab0: 6d 20 74 68 65 20 69 6e 70 75 74 20 72 65 6d 61  m the input rema
bac0: 69 6e 69 6e 67 20 74 6f 20 63 6f 70 79 2e 20 20  ining to copy.  
bad0: 49 66 20 74 68 65 20 75 70 70 65 72 20 76 61 6c  If the upper val
bae0: 75 65 20 69 73 20 6e 6f 74 20 2d 31 2c 20 74 68  ue is not -1, th
baf0: 65 6e 0a 20 20 20 69 74 20 69 73 20 74 68 65 20  en.   it is the 
bb00: 6e 75 6d 62 65 72 20 6f 66 20 62 69 74 73 20 62  number of bits b
bb10: 61 63 6b 20 66 72 6f 6d 20 74 68 65 20 63 75 72  ack from the cur
bb20: 72 65 6e 74 20 62 69 74 20 70 6f 73 69 74 69 6f  rent bit positio
bb30: 6e 20 69 6e 20 74 68 65 20 69 6e 70 75 74 20 6f  n in the input o
bb40: 66 0a 20 20 20 74 68 65 20 63 6f 64 65 20 28 6c  f.   the code (l
bb50: 69 74 65 72 61 6c 20 6f 72 20 6c 65 6e 67 74 68  iteral or length
bb60: 2f 64 69 73 74 61 6e 63 65 20 70 61 69 72 29 20  /distance pair) 
bb70: 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20  currently being 
bb80: 70 72 6f 63 65 73 73 65 64 2e 20 20 49 6e 0a 20  processed.  In. 
bb90: 20 20 74 68 61 74 20 63 61 73 65 20 74 68 65 20    that case the 
bba0: 6c 6f 77 65 72 20 76 61 6c 75 65 20 69 73 20 74  lower value is t
bbb0: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  he number of byt
bbc0: 65 73 20 61 6c 72 65 61 64 79 20 65 6d 69 74 74  es already emitt
bbd0: 65 64 20 66 6f 72 20 74 68 61 74 0a 20 20 20 63  ed for that.   c
bbe0: 6f 64 65 2e 0a 0a 20 20 20 20 20 41 20 63 6f 64  ode...     A cod
bbf0: 65 20 69 73 20 62 65 69 6e 67 20 70 72 6f 63 65  e is being proce
bc00: 73 73 65 64 20 69 66 20 69 6e 66 6c 61 74 65 20  ssed if inflate 
bc10: 69 73 20 77 61 69 74 69 6e 67 20 66 6f 72 20 6d  is waiting for m
bc20: 6f 72 65 20 69 6e 70 75 74 20 74 6f 20 63 6f 6d  ore input to com
bc30: 70 6c 65 74 65 0a 20 20 20 64 65 63 6f 64 69 6e  plete.   decodin
bc40: 67 20 6f 66 20 74 68 65 20 63 6f 64 65 2c 20 6f  g of the code, o
bc50: 72 20 69 66 20 69 74 20 68 61 73 20 63 6f 6d 70  r if it has comp
bc60: 6c 65 74 65 64 20 64 65 63 6f 64 69 6e 67 20 62  leted decoding b
bc70: 75 74 20 69 73 20 77 61 69 74 69 6e 67 20 66 6f  ut is waiting fo
bc80: 72 0a 20 20 20 6d 6f 72 65 20 6f 75 74 70 75 74  r.   more output
bc90: 20 73 70 61 63 65 20 74 6f 20 77 72 69 74 65 20   space to write 
bca0: 74 68 65 20 6c 69 74 65 72 61 6c 20 6f 72 20 6d  the literal or m
bcb0: 61 74 63 68 20 64 61 74 61 2e 0a 0a 20 20 20 20  atch data...    
bcc0: 20 69 6e 66 6c 61 74 65 4d 61 72 6b 28 29 20 69   inflateMark() i
bcd0: 73 20 75 73 65 64 20 74 6f 20 6d 61 72 6b 20 6c  s used to mark l
bce0: 6f 63 61 74 69 6f 6e 73 20 69 6e 20 74 68 65 20  ocations in the 
bcf0: 69 6e 70 75 74 20 64 61 74 61 20 66 6f 72 20 72  input data for r
bd00: 61 6e 64 6f 6d 0a 20 20 20 61 63 63 65 73 73 2c  andom.   access,
bd10: 20 77 68 69 63 68 20 6d 61 79 20 62 65 20 61 74   which may be at
bd20: 20 62 69 74 20 70 6f 73 69 74 69 6f 6e 73 2c 20   bit positions, 
bd30: 61 6e 64 20 74 6f 20 6e 6f 74 65 20 74 68 6f 73  and to note thos
bd40: 65 20 63 61 73 65 73 20 77 68 65 72 65 20 74 68  e cases where th
bd50: 65 0a 20 20 20 6f 75 74 70 75 74 20 6f 66 20 61  e.   output of a
bd60: 20 63 6f 64 65 20 6d 61 79 20 73 70 61 6e 20 62   code may span b
bd70: 6f 75 6e 64 61 72 69 65 73 20 6f 66 20 72 61 6e  oundaries of ran
bd80: 64 6f 6d 20 61 63 63 65 73 73 20 62 6c 6f 63 6b  dom access block
bd90: 73 2e 20 20 54 68 65 20 63 75 72 72 65 6e 74 0a  s.  The current.
bda0: 20 20 20 6c 6f 63 61 74 69 6f 6e 20 69 6e 20 74     location in t
bdb0: 68 65 20 69 6e 70 75 74 20 73 74 72 65 61 6d 20  he input stream 
bdc0: 63 61 6e 20 62 65 20 64 65 74 65 72 6d 69 6e 65  can be determine
bdd0: 64 20 66 72 6f 6d 20 61 76 61 69 6c 5f 69 6e 20  d from avail_in 
bde0: 61 6e 64 20 64 61 74 61 5f 74 79 70 65 0a 20 20  and data_type.  
bdf0: 20 61 73 20 6e 6f 74 65 64 20 69 6e 20 74 68 65   as noted in the
be00: 20 64 65 73 63 72 69 70 74 69 6f 6e 20 66 6f 72   description for
be10: 20 74 68 65 20 5a 5f 42 4c 4f 43 4b 20 66 6c 75   the Z_BLOCK flu
be20: 73 68 20 70 61 72 61 6d 65 74 65 72 20 66 6f 72  sh parameter for
be30: 20 69 6e 66 6c 61 74 65 2e 0a 0a 20 20 20 20 20   inflate...     
be40: 69 6e 66 6c 61 74 65 4d 61 72 6b 20 72 65 74 75  inflateMark retu
be50: 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6e 6f  rns the value no
be60: 74 65 64 20 61 62 6f 76 65 20 6f 72 20 2d 31 20  ted above or -1 
be70: 3c 3c 20 31 36 20 69 66 20 74 68 65 20 70 72 6f  << 16 if the pro
be80: 76 69 64 65 64 0a 20 20 20 73 6f 75 72 63 65 20  vided.   source 
be90: 73 74 72 65 61 6d 20 73 74 61 74 65 20 77 61 73  stream state was
bea0: 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74 2e 0a 2a   inconsistent..*
beb0: 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a  /..ZEXTERN int Z
bec0: 45 58 50 4f 52 54 20 69 6e 66 6c 61 74 65 47 65  EXPORT inflateGe
bed0: 74 48 65 61 64 65 72 20 4f 46 28 28 7a 5f 73 74  tHeader OF((z_st
bee0: 72 65 61 6d 70 20 73 74 72 6d 2c 0a 20 20 20 20  reamp strm,.    
bef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf10: 20 20 20 20 20 67 7a 5f 68 65 61 64 65 72 70 20       gz_headerp 
bf20: 68 65 61 64 29 29 3b 0a 2f 2a 0a 20 20 20 20 20  head));./*.     
bf30: 69 6e 66 6c 61 74 65 47 65 74 48 65 61 64 65 72  inflateGetHeader
bf40: 28 29 20 72 65 71 75 65 73 74 73 20 74 68 61 74  () requests that
bf50: 20 67 7a 69 70 20 68 65 61 64 65 72 20 69 6e 66   gzip header inf
bf60: 6f 72 6d 61 74 69 6f 6e 20 62 65 20 73 74 6f 72  ormation be stor
bf70: 65 64 20 69 6e 20 74 68 65 0a 20 20 20 70 72 6f  ed in the.   pro
bf80: 76 69 64 65 64 20 67 7a 5f 68 65 61 64 65 72 20  vided gz_header 
bf90: 73 74 72 75 63 74 75 72 65 2e 20 20 69 6e 66 6c  structure.  infl
bfa0: 61 74 65 47 65 74 48 65 61 64 65 72 28 29 20 6d  ateGetHeader() m
bfb0: 61 79 20 62 65 20 63 61 6c 6c 65 64 20 61 66 74  ay be called aft
bfc0: 65 72 0a 20 20 20 69 6e 66 6c 61 74 65 49 6e 69  er.   inflateIni
bfd0: 74 32 28 29 20 6f 72 20 69 6e 66 6c 61 74 65 52  t2() or inflateR
bfe0: 65 73 65 74 28 29 2c 20 61 6e 64 20 62 65 66 6f  eset(), and befo
bff0: 72 65 20 74 68 65 20 66 69 72 73 74 20 63 61 6c  re the first cal
c000: 6c 20 6f 66 20 69 6e 66 6c 61 74 65 28 29 2e 0a  l of inflate()..
c010: 20 20 20 41 73 20 69 6e 66 6c 61 74 65 28 29 20     As inflate() 
c020: 70 72 6f 63 65 73 73 65 73 20 74 68 65 20 67 7a  processes the gz
c030: 69 70 20 73 74 72 65 61 6d 2c 20 68 65 61 64 2d  ip stream, head-
c040: 3e 64 6f 6e 65 20 69 73 20 7a 65 72 6f 20 75 6e  >done is zero un
c050: 74 69 6c 20 74 68 65 20 68 65 61 64 65 72 0a 20  til the header. 
c060: 20 20 69 73 20 63 6f 6d 70 6c 65 74 65 64 2c 20    is completed, 
c070: 61 74 20 77 68 69 63 68 20 74 69 6d 65 20 68 65  at which time he
c080: 61 64 2d 3e 64 6f 6e 65 20 69 73 20 73 65 74 20  ad->done is set 
c090: 74 6f 20 6f 6e 65 2e 20 20 49 66 20 61 20 7a 6c  to one.  If a zl
c0a0: 69 62 20 73 74 72 65 61 6d 20 69 73 0a 20 20 20  ib stream is.   
c0b0: 62 65 69 6e 67 20 64 65 63 6f 64 65 64 2c 20 74  being decoded, t
c0c0: 68 65 6e 20 68 65 61 64 2d 3e 64 6f 6e 65 20 69  hen head->done i
c0d0: 73 20 73 65 74 20 74 6f 20 2d 31 20 74 6f 20 69  s set to -1 to i
c0e0: 6e 64 69 63 61 74 65 20 74 68 61 74 20 74 68 65  ndicate that the
c0f0: 72 65 20 77 69 6c 6c 20 62 65 0a 20 20 20 6e 6f  re will be.   no
c100: 20 67 7a 69 70 20 68 65 61 64 65 72 20 69 6e 66   gzip header inf
c110: 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 74 68 63 6f  ormation forthco
c120: 6d 69 6e 67 2e 20 20 4e 6f 74 65 20 74 68 61 74  ming.  Note that
c130: 20 5a 5f 42 4c 4f 43 4b 20 6f 72 20 5a 5f 54 52   Z_BLOCK or Z_TR
c140: 45 45 53 20 63 61 6e 20 62 65 0a 20 20 20 75 73  EES can be.   us
c150: 65 64 20 74 6f 20 66 6f 72 63 65 20 69 6e 66 6c  ed to force infl
c160: 61 74 65 28 29 20 74 6f 20 72 65 74 75 72 6e 20  ate() to return 
c170: 69 6d 6d 65 64 69 61 74 65 6c 79 20 61 66 74 65  immediately afte
c180: 72 20 68 65 61 64 65 72 20 70 72 6f 63 65 73 73  r header process
c190: 69 6e 67 20 69 73 0a 20 20 20 63 6f 6d 70 6c 65  ing is.   comple
c1a0: 74 65 20 61 6e 64 20 62 65 66 6f 72 65 20 61 6e  te and before an
c1b0: 79 20 61 63 74 75 61 6c 20 64 61 74 61 20 69 73  y actual data is
c1c0: 20 64 65 63 6f 6d 70 72 65 73 73 65 64 2e 0a 0a   decompressed...
c1d0: 20 20 20 20 20 54 68 65 20 74 65 78 74 2c 20 74       The text, t
c1e0: 69 6d 65 2c 20 78 66 6c 61 67 73 2c 20 61 6e 64  ime, xflags, and
c1f0: 20 6f 73 20 66 69 65 6c 64 73 20 61 72 65 20 66   os fields are f
c200: 69 6c 6c 65 64 20 69 6e 20 77 69 74 68 20 74 68  illed in with th
c210: 65 20 67 7a 69 70 20 68 65 61 64 65 72 0a 20 20  e gzip header.  
c220: 20 63 6f 6e 74 65 6e 74 73 2e 20 20 68 63 72 63   contents.  hcrc
c230: 20 69 73 20 73 65 74 20 74 6f 20 74 72 75 65 20   is set to true 
c240: 69 66 20 74 68 65 72 65 20 69 73 20 61 20 68 65  if there is a he
c250: 61 64 65 72 20 43 52 43 2e 20 20 28 54 68 65 20  ader CRC.  (The 
c260: 68 65 61 64 65 72 20 43 52 43 0a 20 20 20 77 61  header CRC.   wa
c270: 73 20 76 61 6c 69 64 20 69 66 20 64 6f 6e 65 20  s valid if done 
c280: 69 73 20 73 65 74 20 74 6f 20 6f 6e 65 2e 29 20  is set to one.) 
c290: 49 66 20 65 78 74 72 61 20 69 73 20 6e 6f 74 20  If extra is not 
c2a0: 5a 5f 4e 55 4c 4c 2c 20 74 68 65 6e 20 65 78 74  Z_NULL, then ext
c2b0: 72 61 5f 6d 61 78 0a 20 20 20 63 6f 6e 74 61 69  ra_max.   contai
c2c0: 6e 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e  ns the maximum n
c2d0: 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 74  umber of bytes t
c2e0: 6f 20 77 72 69 74 65 20 74 6f 20 65 78 74 72 61  o write to extra
c2f0: 2e 20 20 4f 6e 63 65 20 64 6f 6e 65 20 69 73 20  .  Once done is 
c300: 74 72 75 65 2c 0a 20 20 20 65 78 74 72 61 5f 6c  true,.   extra_l
c310: 65 6e 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20  en contains the 
c320: 61 63 74 75 61 6c 20 65 78 74 72 61 20 66 69 65  actual extra fie
c330: 6c 64 20 6c 65 6e 67 74 68 2c 20 61 6e 64 20 65  ld length, and e
c340: 78 74 72 61 20 63 6f 6e 74 61 69 6e 73 20 74 68  xtra contains th
c350: 65 0a 20 20 20 65 78 74 72 61 20 66 69 65 6c 64  e.   extra field
c360: 2c 20 6f 72 20 74 68 61 74 20 66 69 65 6c 64 20  , or that field 
c370: 74 72 75 6e 63 61 74 65 64 20 69 66 20 65 78 74  truncated if ext
c380: 72 61 5f 6d 61 78 20 69 73 20 6c 65 73 73 20 74  ra_max is less t
c390: 68 61 6e 20 65 78 74 72 61 5f 6c 65 6e 2e 0a 20  han extra_len.. 
c3a0: 20 20 49 66 20 6e 61 6d 65 20 69 73 20 6e 6f 74    If name is not
c3b0: 20 5a 5f 4e 55 4c 4c 2c 20 74 68 65 6e 20 75 70   Z_NULL, then up
c3c0: 20 74 6f 20 6e 61 6d 65 5f 6d 61 78 20 63 68 61   to name_max cha
c3d0: 72 61 63 74 65 72 73 20 61 72 65 20 77 72 69 74  racters are writ
c3e0: 74 65 6e 20 74 68 65 72 65 2c 0a 20 20 20 74 65  ten there,.   te
c3f0: 72 6d 69 6e 61 74 65 64 20 77 69 74 68 20 61 20  rminated with a 
c400: 7a 65 72 6f 20 75 6e 6c 65 73 73 20 74 68 65 20  zero unless the 
c410: 6c 65 6e 67 74 68 20 69 73 20 67 72 65 61 74 65  length is greate
c420: 72 20 74 68 61 6e 20 6e 61 6d 65 5f 6d 61 78 2e  r than name_max.
c430: 20 20 49 66 0a 20 20 20 63 6f 6d 6d 65 6e 74 20    If.   comment 
c440: 69 73 20 6e 6f 74 20 5a 5f 4e 55 4c 4c 2c 20 74  is not Z_NULL, t
c450: 68 65 6e 20 75 70 20 74 6f 20 63 6f 6d 6d 5f 6d  hen up to comm_m
c460: 61 78 20 63 68 61 72 61 63 74 65 72 73 20 61 72  ax characters ar
c470: 65 20 77 72 69 74 74 65 6e 20 74 68 65 72 65 2c  e written there,
c480: 0a 20 20 20 74 65 72 6d 69 6e 61 74 65 64 20 77  .   terminated w
c490: 69 74 68 20 61 20 7a 65 72 6f 20 75 6e 6c 65 73  ith a zero unles
c4a0: 73 20 74 68 65 20 6c 65 6e 67 74 68 20 69 73 20  s the length is 
c4b0: 67 72 65 61 74 65 72 20 74 68 61 6e 20 63 6f 6d  greater than com
c4c0: 6d 5f 6d 61 78 2e 20 20 57 68 65 6e 20 61 6e 79  m_max.  When any
c4d0: 0a 20 20 20 6f 66 20 65 78 74 72 61 2c 20 6e 61  .   of extra, na
c4e0: 6d 65 2c 20 6f 72 20 63 6f 6d 6d 65 6e 74 20 61  me, or comment a
c4f0: 72 65 20 6e 6f 74 20 5a 5f 4e 55 4c 4c 20 61 6e  re not Z_NULL an
c500: 64 20 74 68 65 20 72 65 73 70 65 63 74 69 76 65  d the respective
c510: 20 66 69 65 6c 64 20 69 73 20 6e 6f 74 0a 20 20   field is not.  
c520: 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20   present in the 
c530: 68 65 61 64 65 72 2c 20 74 68 65 6e 20 74 68 61  header, then tha
c540: 74 20 66 69 65 6c 64 20 69 73 20 73 65 74 20 74  t field is set t
c550: 6f 20 5a 5f 4e 55 4c 4c 20 74 6f 20 73 69 67 6e  o Z_NULL to sign
c560: 61 6c 20 69 74 73 0a 20 20 20 61 62 73 65 6e 63  al its.   absenc
c570: 65 2e 20 20 54 68 69 73 20 61 6c 6c 6f 77 73 20  e.  This allows 
c580: 74 68 65 20 75 73 65 20 6f 66 20 64 65 66 6c 61  the use of defla
c590: 74 65 53 65 74 48 65 61 64 65 72 28 29 20 77 69  teSetHeader() wi
c5a0: 74 68 20 74 68 65 20 72 65 74 75 72 6e 65 64 0a  th the returned.
c5b0: 20 20 20 73 74 72 75 63 74 75 72 65 20 74 6f 20     structure to 
c5c0: 64 75 70 6c 69 63 61 74 65 20 74 68 65 20 68 65  duplicate the he
c5d0: 61 64 65 72 2e 20 20 48 6f 77 65 76 65 72 20 69  ader.  However i
c5e0: 66 20 74 68 6f 73 65 20 66 69 65 6c 64 73 20 61  f those fields a
c5f0: 72 65 20 73 65 74 20 74 6f 0a 20 20 20 61 6c 6c  re set to.   all
c600: 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79 2c 20 74  ocated memory, t
c610: 68 65 6e 20 74 68 65 20 61 70 70 6c 69 63 61 74  hen the applicat
c620: 69 6f 6e 20 77 69 6c 6c 20 6e 65 65 64 20 74 6f  ion will need to
c630: 20 73 61 76 65 20 74 68 6f 73 65 20 70 6f 69 6e   save those poin
c640: 74 65 72 73 0a 20 20 20 65 6c 73 65 77 68 65 72  ters.   elsewher
c650: 65 20 73 6f 20 74 68 61 74 20 74 68 65 79 20 63  e so that they c
c660: 61 6e 20 62 65 20 65 76 65 6e 74 75 61 6c 6c 79  an be eventually
c670: 20 66 72 65 65 64 2e 0a 0a 20 20 20 20 20 49 66   freed...     If
c680: 20 69 6e 66 6c 61 74 65 47 65 74 48 65 61 64 65   inflateGetHeade
c690: 72 20 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 74  r is not used, t
c6a0: 68 65 6e 20 74 68 65 20 68 65 61 64 65 72 20 69  hen the header i
c6b0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 73 69  nformation is si
c6c0: 6d 70 6c 79 0a 20 20 20 64 69 73 63 61 72 64 65  mply.   discarde
c6d0: 64 2e 20 20 54 68 65 20 68 65 61 64 65 72 20 69  d.  The header i
c6e0: 73 20 61 6c 77 61 79 73 20 63 68 65 63 6b 65 64  s always checked
c6f0: 20 66 6f 72 20 76 61 6c 69 64 69 74 79 2c 20 69   for validity, i
c700: 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 68 65 61  ncluding the hea
c710: 64 65 72 0a 20 20 20 43 52 43 20 69 66 20 70 72  der.   CRC if pr
c720: 65 73 65 6e 74 2e 20 20 69 6e 66 6c 61 74 65 52  esent.  inflateR
c730: 65 73 65 74 28 29 20 77 69 6c 6c 20 72 65 73 65  eset() will rese
c740: 74 20 74 68 65 20 70 72 6f 63 65 73 73 20 74 6f  t the process to
c750: 20 64 69 73 63 61 72 64 20 74 68 65 20 68 65 61   discard the hea
c760: 64 65 72 0a 20 20 20 69 6e 66 6f 72 6d 61 74 69  der.   informati
c770: 6f 6e 2e 20 20 54 68 65 20 61 70 70 6c 69 63 61  on.  The applica
c780: 74 69 6f 6e 20 77 6f 75 6c 64 20 6e 65 65 64 20  tion would need 
c790: 74 6f 20 63 61 6c 6c 20 69 6e 66 6c 61 74 65 47  to call inflateG
c7a0: 65 74 48 65 61 64 65 72 28 29 20 61 67 61 69 6e  etHeader() again
c7b0: 20 74 6f 0a 20 20 20 72 65 74 72 69 65 76 65 20   to.   retrieve 
c7c0: 74 68 65 20 68 65 61 64 65 72 20 66 72 6f 6d 20  the header from 
c7d0: 74 68 65 20 6e 65 78 74 20 67 7a 69 70 20 73 74  the next gzip st
c7e0: 72 65 61 6d 2e 0a 0a 20 20 20 20 20 69 6e 66 6c  ream...     infl
c7f0: 61 74 65 47 65 74 48 65 61 64 65 72 20 72 65 74  ateGetHeader ret
c800: 75 72 6e 73 20 5a 5f 4f 4b 20 69 66 20 73 75 63  urns Z_OK if suc
c810: 63 65 73 73 2c 20 6f 72 20 5a 5f 53 54 52 45 41  cess, or Z_STREA
c820: 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20 73  M_ERROR if the s
c830: 6f 75 72 63 65 0a 20 20 20 73 74 72 65 61 6d 20  ource.   stream 
c840: 73 74 61 74 65 20 77 61 73 20 69 6e 63 6f 6e 73  state was incons
c850: 69 73 74 65 6e 74 2e 0a 2a 2f 0a 0a 2f 2a 0a 5a  istent..*/../*.Z
c860: 45 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f  EXTERN int ZEXPO
c870: 52 54 20 69 6e 66 6c 61 74 65 42 61 63 6b 49 6e  RT inflateBackIn
c880: 69 74 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70  it OF((z_streamp
c890: 20 73 74 72 6d 2c 20 69 6e 74 20 77 69 6e 64 6f   strm, int windo
c8a0: 77 42 69 74 73 2c 0a 20 20 20 20 20 20 20 20 20  wBits,.         
c8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75                 u
c8d0: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 46 41 52  nsigned char FAR
c8e0: 20 2a 77 69 6e 64 6f 77 29 29 3b 0a 0a 20 20 20   *window));..   
c8f0: 20 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65    Initialize the
c900: 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 65 61 6d   internal stream
c910: 20 73 74 61 74 65 20 66 6f 72 20 64 65 63 6f 6d   state for decom
c920: 70 72 65 73 73 69 6f 6e 20 75 73 69 6e 67 20 69  pression using i
c930: 6e 66 6c 61 74 65 42 61 63 6b 28 29 0a 20 20 20  nflateBack().   
c940: 63 61 6c 6c 73 2e 20 20 54 68 65 20 66 69 65 6c  calls.  The fiel
c950: 64 73 20 7a 61 6c 6c 6f 63 2c 20 7a 66 72 65 65  ds zalloc, zfree
c960: 20 61 6e 64 20 6f 70 61 71 75 65 20 69 6e 20 73   and opaque in s
c970: 74 72 6d 20 6d 75 73 74 20 62 65 20 69 6e 69 74  trm must be init
c980: 69 61 6c 69 7a 65 64 0a 20 20 20 62 65 66 6f 72  ialized.   befor
c990: 65 20 74 68 65 20 63 61 6c 6c 2e 20 20 49 66 20  e the call.  If 
c9a0: 7a 61 6c 6c 6f 63 20 61 6e 64 20 7a 66 72 65 65  zalloc and zfree
c9b0: 20 61 72 65 20 5a 5f 4e 55 4c 4c 2c 20 74 68 65   are Z_NULL, the
c9c0: 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c 69  n the default li
c9d0: 62 72 61 72 79 2d 0a 20 20 20 64 65 72 69 76 65  brary-.   derive
c9e0: 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  d memory allocat
c9f0: 69 6f 6e 20 72 6f 75 74 69 6e 65 73 20 61 72 65  ion routines are
ca00: 20 75 73 65 64 2e 20 20 77 69 6e 64 6f 77 42 69   used.  windowBi
ca10: 74 73 20 69 73 20 74 68 65 20 62 61 73 65 20 74  ts is the base t
ca20: 77 6f 0a 20 20 20 6c 6f 67 61 72 69 74 68 6d 20  wo.   logarithm 
ca30: 6f 66 20 74 68 65 20 77 69 6e 64 6f 77 20 73 69  of the window si
ca40: 7a 65 2c 20 69 6e 20 74 68 65 20 72 61 6e 67 65  ze, in the range
ca50: 20 38 2e 2e 31 35 2e 20 20 77 69 6e 64 6f 77 20   8..15.  window 
ca60: 69 73 20 61 20 63 61 6c 6c 65 72 0a 20 20 20 73  is a caller.   s
ca70: 75 70 70 6c 69 65 64 20 62 75 66 66 65 72 20 6f  upplied buffer o
ca80: 66 20 74 68 61 74 20 73 69 7a 65 2e 20 20 45 78  f that size.  Ex
ca90: 63 65 70 74 20 66 6f 72 20 73 70 65 63 69 61 6c  cept for special
caa0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77 68   applications wh
cab0: 65 72 65 20 69 74 20 69 73 0a 20 20 20 61 73 73  ere it is.   ass
cac0: 75 72 65 64 20 74 68 61 74 20 64 65 66 6c 61 74  ured that deflat
cad0: 65 20 77 61 73 20 75 73 65 64 20 77 69 74 68 20  e was used with 
cae0: 73 6d 61 6c 6c 20 77 69 6e 64 6f 77 20 73 69 7a  small window siz
caf0: 65 73 2c 20 77 69 6e 64 6f 77 42 69 74 73 20 6d  es, windowBits m
cb00: 75 73 74 20 62 65 20 31 35 0a 20 20 20 61 6e 64  ust be 15.   and
cb10: 20 61 20 33 32 4b 20 62 79 74 65 20 77 69 6e 64   a 32K byte wind
cb20: 6f 77 20 6d 75 73 74 20 62 65 20 73 75 70 70 6c  ow must be suppl
cb30: 69 65 64 20 74 6f 20 62 65 20 61 62 6c 65 20 74  ied to be able t
cb40: 6f 20 64 65 63 6f 6d 70 72 65 73 73 20 67 65 6e  o decompress gen
cb50: 65 72 61 6c 0a 20 20 20 64 65 66 6c 61 74 65 20  eral.   deflate 
cb60: 73 74 72 65 61 6d 73 2e 0a 0a 20 20 20 20 20 53  streams...     S
cb70: 65 65 20 69 6e 66 6c 61 74 65 42 61 63 6b 28 29  ee inflateBack()
cb80: 20 66 6f 72 20 74 68 65 20 75 73 61 67 65 20 6f   for the usage o
cb90: 66 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73  f these routines
cba0: 2e 0a 0a 20 20 20 20 20 69 6e 66 6c 61 74 65 42  ...     inflateB
cbb0: 61 63 6b 49 6e 69 74 20 77 69 6c 6c 20 72 65 74  ackInit will ret
cbc0: 75 72 6e 20 5a 5f 4f 4b 20 6f 6e 20 73 75 63 63  urn Z_OK on succ
cbd0: 65 73 73 2c 20 5a 5f 53 54 52 45 41 4d 5f 45 52  ess, Z_STREAM_ER
cbe0: 52 4f 52 20 69 66 20 61 6e 79 20 6f 66 0a 20 20  ROR if any of.  
cbf0: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20   the parameters 
cc00: 61 72 65 20 69 6e 76 61 6c 69 64 2c 20 5a 5f 4d  are invalid, Z_M
cc10: 45 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20  EM_ERROR if the 
cc20: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 65 20 63  internal state c
cc30: 6f 75 6c 64 20 6e 6f 74 20 62 65 0a 20 20 20 61  ould not be.   a
cc40: 6c 6c 6f 63 61 74 65 64 2c 20 6f 72 20 5a 5f 56  llocated, or Z_V
cc50: 45 52 53 49 4f 4e 5f 45 52 52 4f 52 20 69 66 20  ERSION_ERROR if 
cc60: 74 68 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74  the version of t
cc70: 68 65 20 6c 69 62 72 61 72 79 20 64 6f 65 73 20  he library does 
cc80: 6e 6f 74 20 6d 61 74 63 68 0a 20 20 20 74 68 65  not match.   the
cc90: 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20   version of the 
cca0: 68 65 61 64 65 72 20 66 69 6c 65 2e 0a 2a 2f 0a  header file..*/.
ccb0: 0a 74 79 70 65 64 65 66 20 75 6e 73 69 67 6e 65  .typedef unsigne
ccc0: 64 20 28 2a 69 6e 5f 66 75 6e 63 29 20 4f 46 28  d (*in_func) OF(
ccd0: 28 76 6f 69 64 20 46 41 52 20 2a 2c 20 75 6e 73  (void FAR *, uns
cce0: 69 67 6e 65 64 20 63 68 61 72 20 46 41 52 20 2a  igned char FAR *
ccf0: 20 46 41 52 20 2a 29 29 3b 0a 74 79 70 65 64 65   FAR *));.typede
cd00: 66 20 69 6e 74 20 28 2a 6f 75 74 5f 66 75 6e 63  f int (*out_func
cd10: 29 20 4f 46 28 28 76 6f 69 64 20 46 41 52 20 2a  ) OF((void FAR *
cd20: 2c 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20  , unsigned char 
cd30: 46 41 52 20 2a 2c 20 75 6e 73 69 67 6e 65 64 29  FAR *, unsigned)
cd40: 29 3b 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20  );..ZEXTERN int 
cd50: 5a 45 58 50 4f 52 54 20 69 6e 66 6c 61 74 65 42  ZEXPORT inflateB
cd60: 61 63 6b 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d  ack OF((z_stream
cd70: 70 20 73 74 72 6d 2c 0a 20 20 20 20 20 20 20 20  p strm,.        
cd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd90: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 5f 66              in_f
cda0: 75 6e 63 20 69 6e 2c 20 76 6f 69 64 20 46 41 52  unc in, void FAR
cdb0: 20 2a 69 6e 5f 64 65 73 63 2c 0a 20 20 20 20 20   *in_desc,.     
cdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
cde0: 75 74 5f 66 75 6e 63 20 6f 75 74 2c 20 76 6f 69  ut_func out, voi
cdf0: 64 20 46 41 52 20 2a 6f 75 74 5f 64 65 73 63 29  d FAR *out_desc)
ce00: 29 3b 0a 2f 2a 0a 20 20 20 20 20 69 6e 66 6c 61  );./*.     infla
ce10: 74 65 42 61 63 6b 28 29 20 64 6f 65 73 20 61 20  teBack() does a 
ce20: 72 61 77 20 69 6e 66 6c 61 74 65 20 77 69 74 68  raw inflate with
ce30: 20 61 20 73 69 6e 67 6c 65 20 63 61 6c 6c 20 75   a single call u
ce40: 73 69 6e 67 20 61 20 63 61 6c 6c 2d 62 61 63 6b  sing a call-back
ce50: 0a 20 20 20 69 6e 74 65 72 66 61 63 65 20 66 6f  .   interface fo
ce60: 72 20 69 6e 70 75 74 20 61 6e 64 20 6f 75 74 70  r input and outp
ce70: 75 74 2e 20 20 54 68 69 73 20 69 73 20 6d 6f 72  ut.  This is mor
ce80: 65 20 65 66 66 69 63 69 65 6e 74 20 74 68 61 6e  e efficient than
ce90: 20 69 6e 66 6c 61 74 65 28 29 20 66 6f 72 0a 20   inflate() for. 
cea0: 20 20 66 69 6c 65 20 69 2f 6f 20 61 70 70 6c 69    file i/o appli
ceb0: 63 61 74 69 6f 6e 73 20 69 6e 20 74 68 61 74 20  cations in that 
cec0: 69 74 20 61 76 6f 69 64 73 20 63 6f 70 79 69 6e  it avoids copyin
ced0: 67 20 62 65 74 77 65 65 6e 20 74 68 65 20 6f 75  g between the ou
cee0: 74 70 75 74 20 61 6e 64 20 74 68 65 0a 20 20 20  tput and the.   
cef0: 73 6c 69 64 69 6e 67 20 77 69 6e 64 6f 77 20 62  sliding window b
cf00: 79 20 73 69 6d 70 6c 79 20 6d 61 6b 69 6e 67 20  y simply making 
cf10: 74 68 65 20 77 69 6e 64 6f 77 20 69 74 73 65 6c  the window itsel
cf20: 66 20 74 68 65 20 6f 75 74 70 75 74 20 62 75 66  f the output buf
cf30: 66 65 72 2e 20 20 54 68 69 73 0a 20 20 20 66 75  fer.  This.   fu
cf40: 6e 63 74 69 6f 6e 20 74 72 75 73 74 73 20 74 68  nction trusts th
cf50: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f  e application to
cf60: 20 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20   not change the 
cf70: 6f 75 74 70 75 74 20 62 75 66 66 65 72 20 70 61  output buffer pa
cf80: 73 73 65 64 20 62 79 0a 20 20 20 74 68 65 20 6f  ssed by.   the o
cf90: 75 74 70 75 74 20 66 75 6e 63 74 69 6f 6e 2c 20  utput function, 
cfa0: 61 74 20 6c 65 61 73 74 20 75 6e 74 69 6c 20 69  at least until i
cfb0: 6e 66 6c 61 74 65 42 61 63 6b 28 29 20 72 65 74  nflateBack() ret
cfc0: 75 72 6e 73 2e 0a 0a 20 20 20 20 20 69 6e 66 6c  urns...     infl
cfd0: 61 74 65 42 61 63 6b 49 6e 69 74 28 29 20 6d 75  ateBackInit() mu
cfe0: 73 74 20 62 65 20 63 61 6c 6c 65 64 20 66 69 72  st be called fir
cff0: 73 74 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 74  st to allocate t
d000: 68 65 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  he internal stat
d010: 65 0a 20 20 20 61 6e 64 20 74 6f 20 69 6e 69 74  e.   and to init
d020: 69 61 6c 69 7a 65 20 74 68 65 20 73 74 61 74 65  ialize the state
d030: 20 77 69 74 68 20 74 68 65 20 75 73 65 72 2d 70   with the user-p
d040: 72 6f 76 69 64 65 64 20 77 69 6e 64 6f 77 20 62  rovided window b
d050: 75 66 66 65 72 2e 0a 20 20 20 69 6e 66 6c 61 74  uffer..   inflat
d060: 65 42 61 63 6b 28 29 20 6d 61 79 20 74 68 65 6e  eBack() may then
d070: 20 62 65 20 75 73 65 64 20 6d 75 6c 74 69 70 6c   be used multipl
d080: 65 20 74 69 6d 65 73 20 74 6f 20 69 6e 66 6c 61  e times to infla
d090: 74 65 20 61 20 63 6f 6d 70 6c 65 74 65 2c 20 72  te a complete, r
d0a0: 61 77 0a 20 20 20 64 65 66 6c 61 74 65 20 73 74  aw.   deflate st
d0b0: 72 65 61 6d 20 77 69 74 68 20 65 61 63 68 20 63  ream with each c
d0c0: 61 6c 6c 2e 20 20 69 6e 66 6c 61 74 65 42 61 63  all.  inflateBac
d0d0: 6b 45 6e 64 28 29 20 69 73 20 74 68 65 6e 20 63  kEnd() is then c
d0e0: 61 6c 6c 65 64 20 74 6f 20 66 72 65 65 20 74 68  alled to free th
d0f0: 65 0a 20 20 20 61 6c 6c 6f 63 61 74 65 64 20 73  e.   allocated s
d100: 74 61 74 65 2e 0a 0a 20 20 20 20 20 41 20 72 61  tate...     A ra
d110: 77 20 64 65 66 6c 61 74 65 20 73 74 72 65 61 6d  w deflate stream
d120: 20 69 73 20 6f 6e 65 20 77 69 74 68 20 6e 6f 20   is one with no 
d130: 7a 6c 69 62 20 6f 72 20 67 7a 69 70 20 68 65 61  zlib or gzip hea
d140: 64 65 72 20 6f 72 20 74 72 61 69 6c 65 72 2e 0a  der or trailer..
d150: 20 20 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20     This routine 
d160: 77 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 62  would normally b
d170: 65 20 75 73 65 64 20 69 6e 20 61 20 75 74 69 6c  e used in a util
d180: 69 74 79 20 74 68 61 74 20 72 65 61 64 73 20 7a  ity that reads z
d190: 69 70 20 6f 72 20 67 7a 69 70 0a 20 20 20 66 69  ip or gzip.   fi
d1a0: 6c 65 73 20 61 6e 64 20 77 72 69 74 65 73 20 6f  les and writes o
d1b0: 75 74 20 75 6e 63 6f 6d 70 72 65 73 73 65 64 20  ut uncompressed 
d1c0: 66 69 6c 65 73 2e 20 20 54 68 65 20 75 74 69 6c  files.  The util
d1d0: 69 74 79 20 77 6f 75 6c 64 20 64 65 63 6f 64 65  ity would decode
d1e0: 20 74 68 65 0a 20 20 20 68 65 61 64 65 72 20 61   the.   header a
d1f0: 6e 64 20 70 72 6f 63 65 73 73 20 74 68 65 20 74  nd process the t
d200: 72 61 69 6c 65 72 20 6f 6e 20 69 74 73 20 6f 77  railer on its ow
d210: 6e 2c 20 68 65 6e 63 65 20 74 68 69 73 20 72 6f  n, hence this ro
d220: 75 74 69 6e 65 20 65 78 70 65 63 74 73 20 6f 6e  utine expects on
d230: 6c 79 0a 20 20 20 74 68 65 20 72 61 77 20 64 65  ly.   the raw de
d240: 66 6c 61 74 65 20 73 74 72 65 61 6d 20 74 6f 20  flate stream to 
d250: 64 65 63 6f 6d 70 72 65 73 73 2e 20 20 54 68 69  decompress.  Thi
d260: 73 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 66  s is different f
d270: 72 6f 6d 20 74 68 65 20 6e 6f 72 6d 61 6c 0a 20  rom the normal. 
d280: 20 20 62 65 68 61 76 69 6f 72 20 6f 66 20 69 6e    behavior of in
d290: 66 6c 61 74 65 28 29 2c 20 77 68 69 63 68 20 65  flate(), which e
d2a0: 78 70 65 63 74 73 20 65 69 74 68 65 72 20 61 20  xpects either a 
d2b0: 7a 6c 69 62 20 6f 72 20 67 7a 69 70 20 68 65 61  zlib or gzip hea
d2c0: 64 65 72 20 61 6e 64 0a 20 20 20 74 72 61 69 6c  der and.   trail
d2d0: 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 64 65  er around the de
d2e0: 66 6c 61 74 65 20 73 74 72 65 61 6d 2e 0a 0a 20  flate stream... 
d2f0: 20 20 20 20 69 6e 66 6c 61 74 65 42 61 63 6b 28      inflateBack(
d300: 29 20 75 73 65 73 20 74 77 6f 20 73 75 62 72 6f  ) uses two subro
d310: 75 74 69 6e 65 73 20 73 75 70 70 6c 69 65 64 20  utines supplied 
d320: 62 79 20 74 68 65 20 63 61 6c 6c 65 72 20 74 68  by the caller th
d330: 61 74 20 61 72 65 20 74 68 65 6e 0a 20 20 20 63  at are then.   c
d340: 61 6c 6c 65 64 20 62 79 20 69 6e 66 6c 61 74 65  alled by inflate
d350: 42 61 63 6b 28 29 20 66 6f 72 20 69 6e 70 75 74  Back() for input
d360: 20 61 6e 64 20 6f 75 74 70 75 74 2e 20 20 69 6e   and output.  in
d370: 66 6c 61 74 65 42 61 63 6b 28 29 20 63 61 6c 6c  flateBack() call
d380: 73 20 74 68 6f 73 65 0a 20 20 20 72 6f 75 74 69  s those.   routi
d390: 6e 65 73 20 75 6e 74 69 6c 20 69 74 20 72 65 61  nes until it rea
d3a0: 64 73 20 61 20 63 6f 6d 70 6c 65 74 65 20 64 65  ds a complete de
d3b0: 66 6c 61 74 65 20 73 74 72 65 61 6d 20 61 6e 64  flate stream and
d3c0: 20 77 72 69 74 65 73 20 6f 75 74 20 61 6c 6c 20   writes out all 
d3d0: 6f 66 20 74 68 65 0a 20 20 20 75 6e 63 6f 6d 70  of the.   uncomp
d3e0: 72 65 73 73 65 64 20 64 61 74 61 2c 20 6f 72 20  ressed data, or 
d3f0: 75 6e 74 69 6c 20 69 74 20 65 6e 63 6f 75 6e 74  until it encount
d400: 65 72 73 20 61 6e 20 65 72 72 6f 72 2e 20 20 54  ers an error.  T
d410: 68 65 20 66 75 6e 63 74 69 6f 6e 27 73 0a 20 20  he function's.  
d420: 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20   parameters and 
d430: 72 65 74 75 72 6e 20 74 79 70 65 73 20 61 72 65  return types are
d440: 20 64 65 66 69 6e 65 64 20 61 62 6f 76 65 20 69   defined above i
d450: 6e 20 74 68 65 20 69 6e 5f 66 75 6e 63 20 61 6e  n the in_func an
d460: 64 20 6f 75 74 5f 66 75 6e 63 0a 20 20 20 74 79  d out_func.   ty
d470: 70 65 64 65 66 73 2e 20 20 69 6e 66 6c 61 74 65  pedefs.  inflate
d480: 42 61 63 6b 28 29 20 77 69 6c 6c 20 63 61 6c 6c  Back() will call
d490: 20 69 6e 28 69 6e 5f 64 65 73 63 2c 20 26 62 75   in(in_desc, &bu
d4a0: 66 29 20 77 68 69 63 68 20 73 68 6f 75 6c 64 20  f) which should 
d4b0: 72 65 74 75 72 6e 20 74 68 65 0a 20 20 20 6e 75  return the.   nu
d4c0: 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 6f 66  mber of bytes of
d4d0: 20 70 72 6f 76 69 64 65 64 20 69 6e 70 75 74 2c   provided input,
d4e0: 20 61 6e 64 20 61 20 70 6f 69 6e 74 65 72 20 74   and a pointer t
d4f0: 6f 20 74 68 61 74 20 69 6e 70 75 74 20 69 6e 20  o that input in 
d500: 62 75 66 2e 20 20 49 66 0a 20 20 20 74 68 65 72  buf.  If.   ther
d510: 65 20 69 73 20 6e 6f 20 69 6e 70 75 74 20 61 76  e is no input av
d520: 61 69 6c 61 62 6c 65 2c 20 69 6e 28 29 20 6d 75  ailable, in() mu
d530: 73 74 20 72 65 74 75 72 6e 20 7a 65 72 6f 2d 2d  st return zero--
d540: 62 75 66 20 69 73 20 69 67 6e 6f 72 65 64 20 69  buf is ignored i
d550: 6e 20 74 68 61 74 0a 20 20 20 63 61 73 65 2d 2d  n that.   case--
d560: 61 6e 64 20 69 6e 66 6c 61 74 65 42 61 63 6b 28  and inflateBack(
d570: 29 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 61 20  ) will return a 
d580: 62 75 66 66 65 72 20 65 72 72 6f 72 2e 20 20 69  buffer error.  i
d590: 6e 66 6c 61 74 65 42 61 63 6b 28 29 20 77 69 6c  nflateBack() wil
d5a0: 6c 20 63 61 6c 6c 0a 20 20 20 6f 75 74 28 6f 75  l call.   out(ou
d5b0: 74 5f 64 65 73 63 2c 20 62 75 66 2c 20 6c 65 6e  t_desc, buf, len
d5c0: 29 20 74 6f 20 77 72 69 74 65 20 74 68 65 20 75  ) to write the u
d5d0: 6e 63 6f 6d 70 72 65 73 73 65 64 20 64 61 74 61  ncompressed data
d5e0: 20 62 75 66 5b 30 2e 2e 6c 65 6e 2d 31 5d 2e 20   buf[0..len-1]. 
d5f0: 20 6f 75 74 28 29 0a 20 20 20 73 68 6f 75 6c 64   out().   should
d600: 20 72 65 74 75 72 6e 20 7a 65 72 6f 20 6f 6e 20   return zero on 
d610: 73 75 63 63 65 73 73 2c 20 6f 72 20 6e 6f 6e 2d  success, or non-
d620: 7a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e  zero on failure.
d630: 20 20 49 66 20 6f 75 74 28 29 20 72 65 74 75 72    If out() retur
d640: 6e 73 0a 20 20 20 6e 6f 6e 2d 7a 65 72 6f 2c 20  ns.   non-zero, 
d650: 69 6e 66 6c 61 74 65 42 61 63 6b 28 29 20 77 69  inflateBack() wi
d660: 6c 6c 20 72 65 74 75 72 6e 20 77 69 74 68 20 61  ll return with a
d670: 6e 20 65 72 72 6f 72 2e 20 20 4e 65 69 74 68 65  n error.  Neithe
d680: 72 20 69 6e 28 29 20 6e 6f 72 20 6f 75 74 28 29  r in() nor out()
d690: 0a 20 20 20 61 72 65 20 70 65 72 6d 69 74 74 65  .   are permitte
d6a0: 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20  d to change the 
d6b0: 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20  contents of the 
d6c0: 77 69 6e 64 6f 77 20 70 72 6f 76 69 64 65 64 20  window provided 
d6d0: 74 6f 0a 20 20 20 69 6e 66 6c 61 74 65 42 61 63  to.   inflateBac
d6e0: 6b 49 6e 69 74 28 29 2c 20 77 68 69 63 68 20 69  kInit(), which i
d6f0: 73 20 61 6c 73 6f 20 74 68 65 20 62 75 66 66 65  s also the buffe
d700: 72 20 74 68 61 74 20 6f 75 74 28 29 20 75 73 65  r that out() use
d710: 73 20 74 6f 20 77 72 69 74 65 20 66 72 6f 6d 2e  s to write from.
d720: 0a 20 20 20 54 68 65 20 6c 65 6e 67 74 68 20 77  .   The length w
d730: 72 69 74 74 65 6e 20 62 79 20 6f 75 74 28 29 20  ritten by out() 
d740: 77 69 6c 6c 20 62 65 20 61 74 20 6d 6f 73 74 20  will be at most 
d750: 74 68 65 20 77 69 6e 64 6f 77 20 73 69 7a 65 2e  the window size.
d760: 20 20 41 6e 79 20 6e 6f 6e 2d 7a 65 72 6f 0a 20    Any non-zero. 
d770: 20 20 61 6d 6f 75 6e 74 20 6f 66 20 69 6e 70 75    amount of inpu
d780: 74 20 6d 61 79 20 62 65 20 70 72 6f 76 69 64 65  t may be provide
d790: 64 20 62 79 20 69 6e 28 29 2e 0a 0a 20 20 20 20  d by in()...    
d7a0: 20 46 6f 72 20 63 6f 6e 76 65 6e 69 65 6e 63 65   For convenience
d7b0: 2c 20 69 6e 66 6c 61 74 65 42 61 63 6b 28 29 20  , inflateBack() 
d7c0: 63 61 6e 20 62 65 20 70 72 6f 76 69 64 65 64 20  can be provided 
d7d0: 69 6e 70 75 74 20 6f 6e 20 74 68 65 20 66 69 72  input on the fir
d7e0: 73 74 20 63 61 6c 6c 20 62 79 0a 20 20 20 73 65  st call by.   se
d7f0: 74 74 69 6e 67 20 73 74 72 6d 2d 3e 6e 65 78 74  tting strm->next
d800: 5f 69 6e 20 61 6e 64 20 73 74 72 6d 2d 3e 61 76  _in and strm->av
d810: 61 69 6c 5f 69 6e 2e 20 20 49 66 20 74 68 61 74  ail_in.  If that
d820: 20 69 6e 70 75 74 20 69 73 20 65 78 68 61 75 73   input is exhaus
d830: 74 65 64 2c 20 74 68 65 6e 0a 20 20 20 69 6e 28  ted, then.   in(
d840: 29 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64  ) will be called
d850: 2e 20 20 54 68 65 72 65 66 6f 72 65 20 73 74 72  .  Therefore str
d860: 6d 2d 3e 6e 65 78 74 5f 69 6e 20 6d 75 73 74 20  m->next_in must 
d870: 62 65 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 62  be initialized b
d880: 65 66 6f 72 65 0a 20 20 20 63 61 6c 6c 69 6e 67  efore.   calling
d890: 20 69 6e 66 6c 61 74 65 42 61 63 6b 28 29 2e 20   inflateBack(). 
d8a0: 20 49 66 20 73 74 72 6d 2d 3e 6e 65 78 74 5f 69   If strm->next_i
d8b0: 6e 20 69 73 20 5a 5f 4e 55 4c 4c 2c 20 74 68 65  n is Z_NULL, the
d8c0: 6e 20 69 6e 28 29 20 77 69 6c 6c 20 62 65 20 63  n in() will be c
d8d0: 61 6c 6c 65 64 0a 20 20 20 69 6d 6d 65 64 69 61  alled.   immedia
d8e0: 74 65 6c 79 20 66 6f 72 20 69 6e 70 75 74 2e 20  tely for input. 
d8f0: 20 49 66 20 73 74 72 6d 2d 3e 6e 65 78 74 5f 69   If strm->next_i
d900: 6e 20 69 73 20 6e 6f 74 20 5a 5f 4e 55 4c 4c 2c  n is not Z_NULL,
d910: 20 74 68 65 6e 20 73 74 72 6d 2d 3e 61 76 61 69   then strm->avai
d920: 6c 5f 69 6e 0a 20 20 20 6d 75 73 74 20 61 6c 73  l_in.   must als
d930: 6f 20 62 65 20 69 6e 69 74 69 61 6c 69 7a 65 64  o be initialized
d940: 2c 20 61 6e 64 20 74 68 65 6e 20 69 66 20 73 74  , and then if st
d950: 72 6d 2d 3e 61 76 61 69 6c 5f 69 6e 20 69 73 20  rm->avail_in is 
d960: 6e 6f 74 20 7a 65 72 6f 2c 20 69 6e 70 75 74 20  not zero, input 
d970: 77 69 6c 6c 0a 20 20 20 69 6e 69 74 69 61 6c 6c  will.   initiall
d980: 79 20 62 65 20 74 61 6b 65 6e 20 66 72 6f 6d 20  y be taken from 
d990: 73 74 72 6d 2d 3e 6e 65 78 74 5f 69 6e 5b 30 20  strm->next_in[0 
d9a0: 2e 2e 20 20 73 74 72 6d 2d 3e 61 76 61 69 6c 5f  ..  strm->avail_
d9b0: 69 6e 20 2d 20 31 5d 2e 0a 0a 20 20 20 20 20 54  in - 1]...     T
d9c0: 68 65 20 69 6e 5f 64 65 73 63 20 61 6e 64 20 6f  he in_desc and o
d9d0: 75 74 5f 64 65 73 63 20 70 61 72 61 6d 65 74 65  ut_desc paramete
d9e0: 72 73 20 6f 66 20 69 6e 66 6c 61 74 65 42 61 63  rs of inflateBac
d9f0: 6b 28 29 20 69 73 20 70 61 73 73 65 64 20 61 73  k() is passed as
da00: 20 74 68 65 0a 20 20 20 66 69 72 73 74 20 70 61   the.   first pa
da10: 72 61 6d 65 74 65 72 20 6f 66 20 69 6e 28 29 20  rameter of in() 
da20: 61 6e 64 20 6f 75 74 28 29 20 72 65 73 70 65 63  and out() respec
da30: 74 69 76 65 6c 79 20 77 68 65 6e 20 74 68 65 79  tively when they
da40: 20 61 72 65 20 63 61 6c 6c 65 64 2e 20 20 54 68   are called.  Th
da50: 65 73 65 0a 20 20 20 64 65 73 63 72 69 70 74 6f  ese.   descripto
da60: 72 73 20 63 61 6e 20 62 65 20 6f 70 74 69 6f 6e  rs can be option
da70: 61 6c 6c 79 20 75 73 65 64 20 74 6f 20 70 61 73  ally used to pas
da80: 73 20 61 6e 79 20 69 6e 66 6f 72 6d 61 74 69 6f  s any informatio
da90: 6e 20 74 68 61 74 20 74 68 65 20 63 61 6c 6c 65  n that the calle
daa0: 72 2d 0a 20 20 20 73 75 70 70 6c 69 65 64 20 69  r-.   supplied i
dab0: 6e 28 29 20 61 6e 64 20 6f 75 74 28 29 20 66 75  n() and out() fu
dac0: 6e 63 74 69 6f 6e 73 20 6e 65 65 64 20 74 6f 20  nctions need to 
dad0: 64 6f 20 74 68 65 69 72 20 6a 6f 62 2e 0a 0a 20  do their job... 
dae0: 20 20 20 20 4f 6e 20 72 65 74 75 72 6e 2c 20 69      On return, i
daf0: 6e 66 6c 61 74 65 42 61 63 6b 28 29 20 77 69 6c  nflateBack() wil
db00: 6c 20 73 65 74 20 73 74 72 6d 2d 3e 6e 65 78 74  l set strm->next
db10: 5f 69 6e 20 61 6e 64 20 73 74 72 6d 2d 3e 61 76  _in and strm->av
db20: 61 69 6c 5f 69 6e 20 74 6f 0a 20 20 20 70 61 73  ail_in to.   pas
db30: 73 20 62 61 63 6b 20 61 6e 79 20 75 6e 75 73 65  s back any unuse
db40: 64 20 69 6e 70 75 74 20 74 68 61 74 20 77 61 73  d input that was
db50: 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
db60: 20 6c 61 73 74 20 69 6e 28 29 20 63 61 6c 6c 2e   last in() call.
db70: 20 20 54 68 65 0a 20 20 20 72 65 74 75 72 6e 20    The.   return 
db80: 76 61 6c 75 65 73 20 6f 66 20 69 6e 66 6c 61 74  values of inflat
db90: 65 42 61 63 6b 28 29 20 63 61 6e 20 62 65 20 5a  eBack() can be Z
dba0: 5f 53 54 52 45 41 4d 5f 45 4e 44 20 6f 6e 20 73  _STREAM_END on s
dbb0: 75 63 63 65 73 73 2c 20 5a 5f 42 55 46 5f 45 52  uccess, Z_BUF_ER
dbc0: 52 4f 52 0a 20 20 20 69 66 20 69 6e 28 29 20 6f  ROR.   if in() o
dbd0: 72 20 6f 75 74 28 29 20 72 65 74 75 72 6e 65 64  r out() returned
dbe0: 20 61 6e 20 65 72 72 6f 72 2c 20 5a 5f 44 41 54   an error, Z_DAT
dbf0: 41 5f 45 52 52 4f 52 20 69 66 20 74 68 65 72 65  A_ERROR if there
dc00: 20 77 61 73 20 61 20 66 6f 72 6d 61 74 20 65 72   was a format er
dc10: 72 6f 72 0a 20 20 20 69 6e 20 74 68 65 20 64 65  ror.   in the de
dc20: 66 6c 61 74 65 20 73 74 72 65 61 6d 20 28 69 6e  flate stream (in
dc30: 20 77 68 69 63 68 20 63 61 73 65 20 73 74 72 6d   which case strm
dc40: 2d 3e 6d 73 67 20 69 73 20 73 65 74 20 74 6f 20  ->msg is set to 
dc50: 69 6e 64 69 63 61 74 65 20 74 68 65 20 6e 61 74  indicate the nat
dc60: 75 72 65 0a 20 20 20 6f 66 20 74 68 65 20 65 72  ure.   of the er
dc70: 72 6f 72 29 2c 20 6f 72 20 5a 5f 53 54 52 45 41  ror), or Z_STREA
dc80: 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20 73  M_ERROR if the s
dc90: 74 72 65 61 6d 20 77 61 73 20 6e 6f 74 20 70 72  tream was not pr
dca0: 6f 70 65 72 6c 79 20 69 6e 69 74 69 61 6c 69 7a  operly initializ
dcb0: 65 64 2e 0a 20 20 20 49 6e 20 74 68 65 20 63 61  ed..   In the ca
dcc0: 73 65 20 6f 66 20 5a 5f 42 55 46 5f 45 52 52 4f  se of Z_BUF_ERRO
dcd0: 52 2c 20 61 6e 20 69 6e 70 75 74 20 6f 72 20 6f  R, an input or o
dce0: 75 74 70 75 74 20 65 72 72 6f 72 20 63 61 6e 20  utput error can 
dcf0: 62 65 20 64 69 73 74 69 6e 67 75 69 73 68 65 64  be distinguished
dd00: 0a 20 20 20 75 73 69 6e 67 20 73 74 72 6d 2d 3e  .   using strm->
dd10: 6e 65 78 74 5f 69 6e 20 77 68 69 63 68 20 77 69  next_in which wi
dd20: 6c 6c 20 62 65 20 5a 5f 4e 55 4c 4c 20 6f 6e 6c  ll be Z_NULL onl
dd30: 79 20 69 66 20 69 6e 28 29 20 72 65 74 75 72 6e  y if in() return
dd40: 65 64 20 61 6e 20 65 72 72 6f 72 2e 20 20 49 66  ed an error.  If
dd50: 0a 20 20 20 73 74 72 6d 2d 3e 6e 65 78 74 5f 69  .   strm->next_i
dd60: 6e 20 69 73 20 6e 6f 74 20 5a 5f 4e 55 4c 4c 2c  n is not Z_NULL,
dd70: 20 74 68 65 6e 20 74 68 65 20 5a 5f 42 55 46 5f   then the Z_BUF_
dd80: 45 52 52 4f 52 20 77 61 73 20 64 75 65 20 74 6f  ERROR was due to
dd90: 20 6f 75 74 28 29 20 72 65 74 75 72 6e 69 6e 67   out() returning
dda0: 0a 20 20 20 6e 6f 6e 2d 7a 65 72 6f 2e 20 20 28  .   non-zero.  (
ddb0: 69 6e 28 29 20 77 69 6c 6c 20 61 6c 77 61 79 73  in() will always
ddc0: 20 62 65 20 63 61 6c 6c 65 64 20 62 65 66 6f 72   be called befor
ddd0: 65 20 6f 75 74 28 29 2c 20 73 6f 20 73 74 72 6d  e out(), so strm
dde0: 2d 3e 6e 65 78 74 5f 69 6e 20 69 73 0a 20 20 20  ->next_in is.   
ddf0: 61 73 73 75 72 65 64 20 74 6f 20 62 65 20 64 65  assured to be de
de00: 66 69 6e 65 64 20 69 66 20 6f 75 74 28 29 20 72  fined if out() r
de10: 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2e  eturns non-zero.
de20: 29 20 4e 6f 74 65 20 74 68 61 74 20 69 6e 66 6c  ) Note that infl
de30: 61 74 65 42 61 63 6b 28 29 0a 20 20 20 63 61 6e  ateBack().   can
de40: 6e 6f 74 20 72 65 74 75 72 6e 20 5a 5f 4f 4b 2e  not return Z_OK.
de50: 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74  .*/..ZEXTERN int
de60: 20 5a 45 58 50 4f 52 54 20 69 6e 66 6c 61 74 65   ZEXPORT inflate
de70: 42 61 63 6b 45 6e 64 20 4f 46 28 28 7a 5f 73 74  BackEnd OF((z_st
de80: 72 65 61 6d 70 20 73 74 72 6d 29 29 3b 0a 2f 2a  reamp strm));./*
de90: 0a 20 20 20 20 20 41 6c 6c 20 6d 65 6d 6f 72 79  .     All memory
dea0: 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 69 6e   allocated by in
deb0: 66 6c 61 74 65 42 61 63 6b 49 6e 69 74 28 29 20  flateBackInit() 
dec0: 69 73 20 66 72 65 65 64 2e 0a 0a 20 20 20 20 20  is freed...     
ded0: 69 6e 66 6c 61 74 65 42 61 63 6b 45 6e 64 28 29  inflateBackEnd()
dee0: 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20 6f 6e   returns Z_OK on
def0: 20 73 75 63 63 65 73 73 2c 20 6f 72 20 5a 5f 53   success, or Z_S
df00: 54 52 45 41 4d 5f 45 52 52 4f 52 20 69 66 20 74  TREAM_ERROR if t
df10: 68 65 20 73 74 72 65 61 6d 0a 20 20 20 73 74 61  he stream.   sta
df20: 74 65 20 77 61 73 20 69 6e 63 6f 6e 73 69 73 74  te was inconsist
df30: 65 6e 74 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e  ent..*/..ZEXTERN
df40: 20 75 4c 6f 6e 67 20 5a 45 58 50 4f 52 54 20 7a   uLong ZEXPORT z
df50: 6c 69 62 43 6f 6d 70 69 6c 65 46 6c 61 67 73 20  libCompileFlags 
df60: 4f 46 28 28 76 6f 69 64 29 29 3b 0a 2f 2a 20 52  OF((void));./* R
df70: 65 74 75 72 6e 20 66 6c 61 67 73 20 69 6e 64 69  eturn flags indi
df80: 63 61 74 69 6e 67 20 63 6f 6d 70 69 6c 65 2d 74  cating compile-t
df90: 69 6d 65 20 6f 70 74 69 6f 6e 73 2e 0a 0a 20 20  ime options...  
dfa0: 20 20 54 79 70 65 20 73 69 7a 65 73 2c 20 74 77    Type sizes, tw
dfb0: 6f 20 62 69 74 73 20 65 61 63 68 2c 20 30 30 20  o bits each, 00 
dfc0: 3d 20 31 36 20 62 69 74 73 2c 20 30 31 20 3d 20  = 16 bits, 01 = 
dfd0: 33 32 2c 20 31 30 20 3d 20 36 34 2c 20 31 31 20  32, 10 = 64, 11 
dfe0: 3d 20 6f 74 68 65 72 3a 0a 20 20 20 20 20 31 2e  = other:.     1.
dff0: 30 3a 20 73 69 7a 65 20 6f 66 20 75 49 6e 74 0a  0: size of uInt.
e000: 20 20 20 20 20 33 2e 32 3a 20 73 69 7a 65 20 6f       3.2: size o
e010: 66 20 75 4c 6f 6e 67 0a 20 20 20 20 20 35 2e 34  f uLong.     5.4
e020: 3a 20 73 69 7a 65 20 6f 66 20 76 6f 69 64 70 66  : size of voidpf
e030: 20 28 70 6f 69 6e 74 65 72 29 0a 20 20 20 20 20   (pointer).     
e040: 37 2e 36 3a 20 73 69 7a 65 20 6f 66 20 7a 5f 6f  7.6: size of z_o
e050: 66 66 5f 74 0a 0a 20 20 20 20 43 6f 6d 70 69 6c  ff_t..    Compil
e060: 65 72 2c 20 61 73 73 65 6d 62 6c 65 72 2c 20 61  er, assembler, a
e070: 6e 64 20 64 65 62 75 67 20 6f 70 74 69 6f 6e 73  nd debug options
e080: 3a 0a 20 20 20 20 20 38 3a 20 44 45 42 55 47 0a  :.     8: DEBUG.
e090: 20 20 20 20 20 39 3a 20 41 53 4d 56 20 6f 72 20       9: ASMV or 
e0a0: 41 53 4d 49 4e 46 20 2d 2d 20 75 73 65 20 41 53  ASMINF -- use AS
e0b0: 4d 20 63 6f 64 65 0a 20 20 20 20 20 31 30 3a 20  M code.     10: 
e0c0: 5a 4c 49 42 5f 57 49 4e 41 50 49 20 2d 2d 20 65  ZLIB_WINAPI -- e
e0d0: 78 70 6f 72 74 65 64 20 66 75 6e 63 74 69 6f 6e  xported function
e0e0: 73 20 75 73 65 20 74 68 65 20 57 49 4e 41 50 49  s use the WINAPI
e0f0: 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74   calling convent
e100: 69 6f 6e 0a 20 20 20 20 20 31 31 3a 20 30 20 28  ion.     11: 0 (
e110: 72 65 73 65 72 76 65 64 29 0a 0a 20 20 20 20 4f  reserved)..    O
e120: 6e 65 2d 74 69 6d 65 20 74 61 62 6c 65 20 62 75  ne-time table bu
e130: 69 6c 64 69 6e 67 20 28 73 6d 61 6c 6c 65 72 20  ilding (smaller 
e140: 63 6f 64 65 2c 20 62 75 74 20 6e 6f 74 20 74 68  code, but not th
e150: 72 65 61 64 2d 73 61 66 65 20 69 66 20 74 72 75  read-safe if tru
e160: 65 29 3a 0a 20 20 20 20 20 31 32 3a 20 42 55 49  e):.     12: BUI
e170: 4c 44 46 49 58 45 44 20 2d 2d 20 62 75 69 6c 64  LDFIXED -- build
e180: 20 73 74 61 74 69 63 20 62 6c 6f 63 6b 20 64 65   static block de
e190: 63 6f 64 69 6e 67 20 74 61 62 6c 65 73 20 77 68  coding tables wh
e1a0: 65 6e 20 6e 65 65 64 65 64 0a 20 20 20 20 20 31  en needed.     1
e1b0: 33 3a 20 44 59 4e 41 4d 49 43 5f 43 52 43 5f 54  3: DYNAMIC_CRC_T
e1c0: 41 42 4c 45 20 2d 2d 20 62 75 69 6c 64 20 43 52  ABLE -- build CR
e1d0: 43 20 63 61 6c 63 75 6c 61 74 69 6f 6e 20 74 61  C calculation ta
e1e0: 62 6c 65 73 20 77 68 65 6e 20 6e 65 65 64 65 64  bles when needed
e1f0: 0a 20 20 20 20 20 31 34 2c 31 35 3a 20 30 20 28  .     14,15: 0 (
e200: 72 65 73 65 72 76 65 64 29 0a 0a 20 20 20 20 4c  reserved)..    L
e210: 69 62 72 61 72 79 20 63 6f 6e 74 65 6e 74 20 28  ibrary content (
e220: 69 6e 64 69 63 61 74 65 73 20 6d 69 73 73 69 6e  indicates missin
e230: 67 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 29  g functionality)
e240: 3a 0a 20 20 20 20 20 31 36 3a 20 4e 4f 5f 47 5a  :.     16: NO_GZ
e250: 43 4f 4d 50 52 45 53 53 20 2d 2d 20 67 7a 2a 20  COMPRESS -- gz* 
e260: 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 6e 6f 74  functions cannot
e270: 20 63 6f 6d 70 72 65 73 73 20 28 74 6f 20 61 76   compress (to av
e280: 6f 69 64 20 6c 69 6e 6b 69 6e 67 0a 20 20 20 20  oid linking.    
e290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2a0: 20 20 20 20 20 20 64 65 66 6c 61 74 65 20 63 6f        deflate co
e2b0: 64 65 20 77 68 65 6e 20 6e 6f 74 20 6e 65 65 64  de when not need
e2c0: 65 64 29 0a 20 20 20 20 20 31 37 3a 20 4e 4f 5f  ed).     17: NO_
e2d0: 47 5a 49 50 20 2d 2d 20 64 65 66 6c 61 74 65 20  GZIP -- deflate 
e2e0: 63 61 6e 27 74 20 77 72 69 74 65 20 67 7a 69 70  can't write gzip
e2f0: 20 73 74 72 65 61 6d 73 2c 20 61 6e 64 20 69 6e   streams, and in
e300: 66 6c 61 74 65 20 63 61 6e 27 74 20 64 65 74 65  flate can't dete
e310: 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ct.             
e320: 20 20 20 20 20 20 20 61 6e 64 20 64 65 63 6f 64         and decod
e330: 65 20 67 7a 69 70 20 73 74 72 65 61 6d 73 20 28  e gzip streams (
e340: 74 6f 20 61 76 6f 69 64 20 6c 69 6e 6b 69 6e 67  to avoid linking
e350: 20 63 72 63 20 63 6f 64 65 29 0a 20 20 20 20 20   crc code).     
e360: 31 38 2d 31 39 3a 20 30 20 28 72 65 73 65 72 76  18-19: 0 (reserv
e370: 65 64 29 0a 0a 20 20 20 20 4f 70 65 72 61 74 69  ed)..    Operati
e380: 6f 6e 20 76 61 72 69 61 74 69 6f 6e 73 20 28 63  on variations (c
e390: 68 61 6e 67 65 73 20 69 6e 20 6c 69 62 72 61 72  hanges in librar
e3a0: 79 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 29  y functionality)
e3b0: 3a 0a 20 20 20 20 20 32 30 3a 20 50 4b 5a 49 50  :.     20: PKZIP
e3c0: 5f 42 55 47 5f 57 4f 52 4b 41 52 4f 55 4e 44 20  _BUG_WORKAROUND 
e3d0: 2d 2d 20 73 6c 69 67 68 74 6c 79 20 6d 6f 72 65  -- slightly more
e3e0: 20 70 65 72 6d 69 73 73 69 76 65 20 69 6e 66 6c   permissive infl
e3f0: 61 74 65 0a 20 20 20 20 20 32 31 3a 20 46 41 53  ate.     21: FAS
e400: 54 45 53 54 20 2d 2d 20 64 65 66 6c 61 74 65 20  TEST -- deflate 
e410: 61 6c 67 6f 72 69 74 68 6d 20 77 69 74 68 20 6f  algorithm with o
e420: 6e 6c 79 20 6f 6e 65 2c 20 6c 6f 77 65 73 74 20  nly one, lowest 
e430: 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c 65 76 65  compression leve
e440: 6c 0a 20 20 20 20 20 32 32 2c 32 33 3a 20 30 20  l.     22,23: 0 
e450: 28 72 65 73 65 72 76 65 64 29 0a 0a 20 20 20 20  (reserved)..    
e460: 54 68 65 20 73 70 72 69 6e 74 66 20 76 61 72 69  The sprintf vari
e470: 61 6e 74 20 75 73 65 64 20 62 79 20 67 7a 70 72  ant used by gzpr
e480: 69 6e 74 66 20 28 7a 65 72 6f 20 69 73 20 62 65  intf (zero is be
e490: 73 74 29 3a 0a 20 20 20 20 20 32 34 3a 20 30 20  st):.     24: 0 
e4a0: 3d 20 76 73 2a 2c 20 31 20 3d 20 73 2a 20 2d 2d  = vs*, 1 = s* --
e4b0: 20 31 20 6d 65 61 6e 73 20 6c 69 6d 69 74 65 64   1 means limited
e4c0: 20 74 6f 20 32 30 20 61 72 67 75 6d 65 6e 74 73   to 20 arguments
e4d0: 20 61 66 74 65 72 20 74 68 65 20 66 6f 72 6d 61   after the forma
e4e0: 74 0a 20 20 20 20 20 32 35 3a 20 30 20 3d 20 2a  t.     25: 0 = *
e4f0: 6e 70 72 69 6e 74 66 2c 20 31 20 3d 20 2a 70 72  nprintf, 1 = *pr
e500: 69 6e 74 66 20 2d 2d 20 31 20 6d 65 61 6e 73 20  intf -- 1 means 
e510: 67 7a 70 72 69 6e 74 66 28 29 20 6e 6f 74 20 73  gzprintf() not s
e520: 65 63 75 72 65 21 0a 20 20 20 20 20 32 36 3a 20  ecure!.     26: 
e530: 30 20 3d 20 72 65 74 75 72 6e 73 20 76 61 6c 75  0 = returns valu
e540: 65 2c 20 31 20 3d 20 76 6f 69 64 20 2d 2d 20 31  e, 1 = void -- 1
e550: 20 6d 65 61 6e 73 20 69 6e 66 65 72 72 65 64 20   means inferred 
e560: 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 72 65  string length re
e570: 74 75 72 6e 65 64 0a 0a 20 20 20 20 52 65 6d 61  turned..    Rema
e580: 69 6e 64 65 72 3a 0a 20 20 20 20 20 32 37 2d 33  inder:.     27-3
e590: 31 3a 20 30 20 28 72 65 73 65 72 76 65 64 29 0a  1: 0 (reserved).
e5a0: 20 2a 2f 0a 0a 23 69 66 6e 64 65 66 20 5a 5f 53   */..#ifndef Z_S
e5b0: 4f 4c 4f 0a 0a 20 20 20 20 20 20 20 20 20 20 20  OLO..           
e5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
e5d0: 75 74 69 6c 69 74 79 20 66 75 6e 63 74 69 6f 6e  utility function
e5e0: 73 20 2a 2f 0a 0a 2f 2a 0a 20 20 20 20 20 54 68  s */../*.     Th
e5f0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 75 74 69 6c  e following util
e600: 69 74 79 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ity functions ar
e610: 65 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 6f 6e  e implemented on
e620: 20 74 6f 70 20 6f 66 20 74 68 65 20 62 61 73 69   top of the basi
e630: 63 0a 20 20 20 73 74 72 65 61 6d 2d 6f 72 69 65  c.   stream-orie
e640: 6e 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 20  nted functions. 
e650: 20 54 6f 20 73 69 6d 70 6c 69 66 79 20 74 68 65   To simplify the
e660: 20 69 6e 74 65 72 66 61 63 65 2c 20 73 6f 6d 65   interface, some
e670: 20 64 65 66 61 75 6c 74 20 6f 70 74 69 6f 6e 73   default options
e680: 0a 20 20 20 61 72 65 20 61 73 73 75 6d 65 64 20  .   are assumed 
e690: 28 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c 65 76  (compression lev
e6a0: 65 6c 20 61 6e 64 20 6d 65 6d 6f 72 79 20 75 73  el and memory us
e6b0: 61 67 65 2c 20 73 74 61 6e 64 61 72 64 20 6d 65  age, standard me
e6c0: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 0a  mory allocation.
e6d0: 20 20 20 66 75 6e 63 74 69 6f 6e 73 29 2e 20 20     functions).  
e6e0: 54 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20  The source code 
e6f0: 6f 66 20 74 68 65 73 65 20 75 74 69 6c 69 74 79  of these utility
e700: 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62   functions can b
e710: 65 20 6d 6f 64 69 66 69 65 64 20 69 66 0a 20 20  e modified if.  
e720: 20 79 6f 75 20 6e 65 65 64 20 73 70 65 63 69 61   you need specia
e730: 6c 20 6f 70 74 69 6f 6e 73 2e 0a 2a 2f 0a 0a 5a  l options..*/..Z
e740: 45 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f  EXTERN int ZEXPO
e750: 52 54 20 63 6f 6d 70 72 65 73 73 20 4f 46 28 28  RT compress OF((
e760: 42 79 74 65 66 20 2a 64 65 73 74 2c 20 20 20 75  Bytef *dest,   u
e770: 4c 6f 6e 67 66 20 2a 64 65 73 74 4c 65 6e 2c 0a  Longf *destLen,.
e780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7a0: 20 63 6f 6e 73 74 20 42 79 74 65 66 20 2a 73 6f   const Bytef *so
e7b0: 75 72 63 65 2c 20 75 4c 6f 6e 67 20 73 6f 75 72  urce, uLong sour
e7c0: 63 65 4c 65 6e 29 29 3b 0a 2f 2a 0a 20 20 20 20  ceLen));./*.    
e7d0: 20 43 6f 6d 70 72 65 73 73 65 73 20 74 68 65 20   Compresses the 
e7e0: 73 6f 75 72 63 65 20 62 75 66 66 65 72 20 69 6e  source buffer in
e7f0: 74 6f 20 74 68 65 20 64 65 73 74 69 6e 61 74 69  to the destinati
e800: 6f 6e 20 62 75 66 66 65 72 2e 20 20 73 6f 75 72  on buffer.  sour
e810: 63 65 4c 65 6e 20 69 73 0a 20 20 20 74 68 65 20  ceLen is.   the 
e820: 62 79 74 65 20 6c 65 6e 67 74 68 20 6f 66 20 74  byte length of t
e830: 68 65 20 73 6f 75 72 63 65 20 62 75 66 66 65 72  he source buffer
e840: 2e 20 20 55 70 6f 6e 20 65 6e 74 72 79 2c 20 64  .  Upon entry, d
e850: 65 73 74 4c 65 6e 20 69 73 20 74 68 65 20 74 6f  estLen is the to
e860: 74 61 6c 20 73 69 7a 65 0a 20 20 20 6f 66 20 74  tal size.   of t
e870: 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 62  he destination b
e880: 75 66 66 65 72 2c 20 77 68 69 63 68 20 6d 75 73  uffer, which mus
e890: 74 20 62 65 20 61 74 20 6c 65 61 73 74 20 74 68  t be at least th
e8a0: 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64  e value returned
e8b0: 20 62 79 0a 20 20 20 63 6f 6d 70 72 65 73 73 42   by.   compressB
e8c0: 6f 75 6e 64 28 73 6f 75 72 63 65 4c 65 6e 29 2e  ound(sourceLen).
e8d0: 20 20 55 70 6f 6e 20 65 78 69 74 2c 20 64 65 73    Upon exit, des
e8e0: 74 4c 65 6e 20 69 73 20 74 68 65 20 61 63 74 75  tLen is the actu
e8f0: 61 6c 20 73 69 7a 65 20 6f 66 20 74 68 65 0a 20  al size of the. 
e900: 20 20 63 6f 6d 70 72 65 73 73 65 64 20 62 75 66    compressed buf
e910: 66 65 72 2e 0a 0a 20 20 20 20 20 63 6f 6d 70 72  fer...     compr
e920: 65 73 73 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b  ess returns Z_OK
e930: 20 69 66 20 73 75 63 63 65 73 73 2c 20 5a 5f 4d   if success, Z_M
e940: 45 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 72  EM_ERROR if ther
e950: 65 20 77 61 73 20 6e 6f 74 0a 20 20 20 65 6e 6f  e was not.   eno
e960: 75 67 68 20 6d 65 6d 6f 72 79 2c 20 5a 5f 42 55  ugh memory, Z_BU
e970: 46 5f 45 52 52 4f 52 20 69 66 20 74 68 65 72 65  F_ERROR if there
e980: 20 77 61 73 20 6e 6f 74 20 65 6e 6f 75 67 68 20   was not enough 
e990: 72 6f 6f 6d 20 69 6e 20 74 68 65 20 6f 75 74 70  room in the outp
e9a0: 75 74 0a 20 20 20 62 75 66 66 65 72 2e 0a 2a 2f  ut.   buffer..*/
e9b0: 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45  ..ZEXTERN int ZE
e9c0: 58 50 4f 52 54 20 63 6f 6d 70 72 65 73 73 32 20  XPORT compress2 
e9d0: 4f 46 28 28 42 79 74 65 66 20 2a 64 65 73 74 2c  OF((Bytef *dest,
e9e0: 20 20 20 75 4c 6f 6e 67 66 20 2a 64 65 73 74 4c     uLongf *destL
e9f0: 65 6e 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  en,.            
ea00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea10: 20 20 20 20 20 20 63 6f 6e 73 74 20 42 79 74 65        const Byte
ea20: 66 20 2a 73 6f 75 72 63 65 2c 20 75 4c 6f 6e 67  f *source, uLong
ea30: 20 73 6f 75 72 63 65 4c 65 6e 2c 0a 20 20 20 20   sourceLen,.    
ea40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
ea60: 74 20 6c 65 76 65 6c 29 29 3b 0a 2f 2a 0a 20 20  t level));./*.  
ea70: 20 20 20 43 6f 6d 70 72 65 73 73 65 73 20 74 68     Compresses th
ea80: 65 20 73 6f 75 72 63 65 20 62 75 66 66 65 72 20  e source buffer 
ea90: 69 6e 74 6f 20 74 68 65 20 64 65 73 74 69 6e 61  into the destina
eaa0: 74 69 6f 6e 20 62 75 66 66 65 72 2e 20 20 54 68  tion buffer.  Th
eab0: 65 20 6c 65 76 65 6c 0a 20 20 20 70 61 72 61 6d  e level.   param
eac0: 65 74 65 72 20 68 61 73 20 74 68 65 20 73 61 6d  eter has the sam
ead0: 65 20 6d 65 61 6e 69 6e 67 20 61 73 20 69 6e 20  e meaning as in 
eae0: 64 65 66 6c 61 74 65 49 6e 69 74 2e 20 20 73 6f  deflateInit.  so
eaf0: 75 72 63 65 4c 65 6e 20 69 73 20 74 68 65 20 62  urceLen is the b
eb00: 79 74 65 0a 20 20 20 6c 65 6e 67 74 68 20 6f 66  yte.   length of
eb10: 20 74 68 65 20 73 6f 75 72 63 65 20 62 75 66 66   the source buff
eb20: 65 72 2e 20 20 55 70 6f 6e 20 65 6e 74 72 79 2c  er.  Upon entry,
eb30: 20 64 65 73 74 4c 65 6e 20 69 73 20 74 68 65 20   destLen is the 
eb40: 74 6f 74 61 6c 20 73 69 7a 65 20 6f 66 20 74 68  total size of th
eb50: 65 0a 20 20 20 64 65 73 74 69 6e 61 74 69 6f 6e  e.   destination
eb60: 20 62 75 66 66 65 72 2c 20 77 68 69 63 68 20 6d   buffer, which m
eb70: 75 73 74 20 62 65 20 61 74 20 6c 65 61 73 74 20  ust be at least 
eb80: 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  the value return
eb90: 65 64 20 62 79 0a 20 20 20 63 6f 6d 70 72 65 73  ed by.   compres
eba0: 73 42 6f 75 6e 64 28 73 6f 75 72 63 65 4c 65 6e  sBound(sourceLen
ebb0: 29 2e 20 20 55 70 6f 6e 20 65 78 69 74 2c 20 64  ).  Upon exit, d
ebc0: 65 73 74 4c 65 6e 20 69 73 20 74 68 65 20 61 63  estLen is the ac
ebd0: 74 75 61 6c 20 73 69 7a 65 20 6f 66 20 74 68 65  tual size of the
ebe0: 0a 20 20 20 63 6f 6d 70 72 65 73 73 65 64 20 62  .   compressed b
ebf0: 75 66 66 65 72 2e 0a 0a 20 20 20 20 20 63 6f 6d  uffer...     com
ec00: 70 72 65 73 73 32 20 72 65 74 75 72 6e 73 20 5a  press2 returns Z
ec10: 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73 2c 20  _OK if success, 
ec20: 5a 5f 4d 45 4d 5f 45 52 52 4f 52 20 69 66 20 74  Z_MEM_ERROR if t
ec30: 68 65 72 65 20 77 61 73 20 6e 6f 74 20 65 6e 6f  here was not eno
ec40: 75 67 68 0a 20 20 20 6d 65 6d 6f 72 79 2c 20 5a  ugh.   memory, Z
ec50: 5f 42 55 46 5f 45 52 52 4f 52 20 69 66 20 74 68  _BUF_ERROR if th
ec60: 65 72 65 20 77 61 73 20 6e 6f 74 20 65 6e 6f 75  ere was not enou
ec70: 67 68 20 72 6f 6f 6d 20 69 6e 20 74 68 65 20 6f  gh room in the o
ec80: 75 74 70 75 74 20 62 75 66 66 65 72 2c 0a 20 20  utput buffer,.  
ec90: 20 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20   Z_STREAM_ERROR 
eca0: 69 66 20 74 68 65 20 6c 65 76 65 6c 20 70 61 72  if the level par
ecb0: 61 6d 65 74 65 72 20 69 73 20 69 6e 76 61 6c 69  ameter is invali
ecc0: 64 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 75  d..*/..ZEXTERN u
ecd0: 4c 6f 6e 67 20 5a 45 58 50 4f 52 54 20 63 6f 6d  Long ZEXPORT com
ece0: 70 72 65 73 73 42 6f 75 6e 64 20 4f 46 28 28 75  pressBound OF((u
ecf0: 4c 6f 6e 67 20 73 6f 75 72 63 65 4c 65 6e 29 29  Long sourceLen))
ed00: 3b 0a 2f 2a 0a 20 20 20 20 20 63 6f 6d 70 72 65  ;./*.     compre
ed10: 73 73 42 6f 75 6e 64 28 29 20 72 65 74 75 72 6e  ssBound() return
ed20: 73 20 61 6e 20 75 70 70 65 72 20 62 6f 75 6e 64  s an upper bound
ed30: 20 6f 6e 20 74 68 65 20 63 6f 6d 70 72 65 73 73   on the compress
ed40: 65 64 20 73 69 7a 65 20 61 66 74 65 72 0a 20 20  ed size after.  
ed50: 20 63 6f 6d 70 72 65 73 73 28 29 20 6f 72 20 63   compress() or c
ed60: 6f 6d 70 72 65 73 73 32 28 29 20 6f 6e 20 73 6f  ompress2() on so
ed70: 75 72 63 65 4c 65 6e 20 62 79 74 65 73 2e 20 20  urceLen bytes.  
ed80: 49 74 20 77 6f 75 6c 64 20 62 65 20 75 73 65 64  It would be used
ed90: 20 62 65 66 6f 72 65 20 61 0a 20 20 20 63 6f 6d   before a.   com
eda0: 70 72 65 73 73 28 29 20 6f 72 20 63 6f 6d 70 72  press() or compr
edb0: 65 73 73 32 28 29 20 63 61 6c 6c 20 74 6f 20 61  ess2() call to a
edc0: 6c 6c 6f 63 61 74 65 20 74 68 65 20 64 65 73 74  llocate the dest
edd0: 69 6e 61 74 69 6f 6e 20 62 75 66 66 65 72 2e 0a  ination buffer..
ede0: 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20  */..ZEXTERN int 
edf0: 5a 45 58 50 4f 52 54 20 75 6e 63 6f 6d 70 72 65  ZEXPORT uncompre
ee00: 73 73 20 4f 46 28 28 42 79 74 65 66 20 2a 64 65  ss OF((Bytef *de
ee10: 73 74 2c 20 20 20 75 4c 6f 6e 67 66 20 2a 64 65  st,   uLongf *de
ee20: 73 74 4c 65 6e 2c 0a 20 20 20 20 20 20 20 20 20  stLen,.         
ee30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee40: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20            const 
ee50: 42 79 74 65 66 20 2a 73 6f 75 72 63 65 2c 20 75  Bytef *source, u
ee60: 4c 6f 6e 67 20 73 6f 75 72 63 65 4c 65 6e 29 29  Long sourceLen))
ee70: 3b 0a 2f 2a 0a 20 20 20 20 20 44 65 63 6f 6d 70  ;./*.     Decomp
ee80: 72 65 73 73 65 73 20 74 68 65 20 73 6f 75 72 63  resses the sourc
ee90: 65 20 62 75 66 66 65 72 20 69 6e 74 6f 20 74 68  e buffer into th
eea0: 65 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 62 75  e destination bu
eeb0: 66 66 65 72 2e 20 20 73 6f 75 72 63 65 4c 65 6e  ffer.  sourceLen
eec0: 20 69 73 0a 20 20 20 74 68 65 20 62 79 74 65 20   is.   the byte 
eed0: 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 73 6f  length of the so
eee0: 75 72 63 65 20 62 75 66 66 65 72 2e 20 20 55 70  urce buffer.  Up
eef0: 6f 6e 20 65 6e 74 72 79 2c 20 64 65 73 74 4c 65  on entry, destLe
ef00: 6e 20 69 73 20 74 68 65 20 74 6f 74 61 6c 20 73  n is the total s
ef10: 69 7a 65 0a 20 20 20 6f 66 20 74 68 65 20 64 65  ize.   of the de
ef20: 73 74 69 6e 61 74 69 6f 6e 20 62 75 66 66 65 72  stination buffer
ef30: 2c 20 77 68 69 63 68 20 6d 75 73 74 20 62 65 20  , which must be 
ef40: 6c 61 72 67 65 20 65 6e 6f 75 67 68 20 74 6f 20  large enough to 
ef50: 68 6f 6c 64 20 74 68 65 20 65 6e 74 69 72 65 0a  hold the entire.
ef60: 20 20 20 75 6e 63 6f 6d 70 72 65 73 73 65 64 20     uncompressed 
ef70: 64 61 74 61 2e 20 20 28 54 68 65 20 73 69 7a 65  data.  (The size
ef80: 20 6f 66 20 74 68 65 20 75 6e 63 6f 6d 70 72 65   of the uncompre
ef90: 73 73 65 64 20 64 61 74 61 20 6d 75 73 74 20 68  ssed data must h
efa0: 61 76 65 20 62 65 65 6e 20 73 61 76 65 64 0a 20  ave been saved. 
efb0: 20 20 70 72 65 76 69 6f 75 73 6c 79 20 62 79 20    previously by 
efc0: 74 68 65 20 63 6f 6d 70 72 65 73 73 6f 72 20 61  the compressor a
efd0: 6e 64 20 74 72 61 6e 73 6d 69 74 74 65 64 20 74  nd transmitted t
efe0: 6f 20 74 68 65 20 64 65 63 6f 6d 70 72 65 73 73  o the decompress
eff0: 6f 72 20 62 79 20 73 6f 6d 65 0a 20 20 20 6d 65  or by some.   me
f000: 63 68 61 6e 69 73 6d 20 6f 75 74 73 69 64 65 20  chanism outside 
f010: 74 68 65 20 73 63 6f 70 65 20 6f 66 20 74 68 69  the scope of thi
f020: 73 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c 69  s compression li
f030: 62 72 61 72 79 2e 29 20 55 70 6f 6e 20 65 78 69  brary.) Upon exi
f040: 74 2c 20 64 65 73 74 4c 65 6e 0a 20 20 20 69 73  t, destLen.   is
f050: 20 74 68 65 20 61 63 74 75 61 6c 20 73 69 7a 65   the actual size
f060: 20 6f 66 20 74 68 65 20 75 6e 63 6f 6d 70 72 65   of the uncompre
f070: 73 73 65 64 20 62 75 66 66 65 72 2e 0a 0a 20 20  ssed buffer...  
f080: 20 20 20 75 6e 63 6f 6d 70 72 65 73 73 20 72 65     uncompress re
f090: 74 75 72 6e 73 20 5a 5f 4f 4b 20 69 66 20 73 75  turns Z_OK if su
f0a0: 63 63 65 73 73 2c 20 5a 5f 4d 45 4d 5f 45 52 52  ccess, Z_MEM_ERR
f0b0: 4f 52 20 69 66 20 74 68 65 72 65 20 77 61 73 20  OR if there was 
f0c0: 6e 6f 74 0a 20 20 20 65 6e 6f 75 67 68 20 6d 65  not.   enough me
f0d0: 6d 6f 72 79 2c 20 5a 5f 42 55 46 5f 45 52 52 4f  mory, Z_BUF_ERRO
f0e0: 52 20 69 66 20 74 68 65 72 65 20 77 61 73 20 6e  R if there was n
f0f0: 6f 74 20 65 6e 6f 75 67 68 20 72 6f 6f 6d 20 69  ot enough room i
f100: 6e 20 74 68 65 20 6f 75 74 70 75 74 0a 20 20 20  n the output.   
f110: 62 75 66 66 65 72 2c 20 6f 72 20 5a 5f 44 41 54  buffer, or Z_DAT
f120: 41 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20 69  A_ERROR if the i
f130: 6e 70 75 74 20 64 61 74 61 20 77 61 73 20 63 6f  nput data was co
f140: 72 72 75 70 74 65 64 20 6f 72 20 69 6e 63 6f 6d  rrupted or incom
f150: 70 6c 65 74 65 2e 20 20 49 6e 0a 20 20 20 74 68  plete.  In.   th
f160: 65 20 63 61 73 65 20 77 68 65 72 65 20 74 68 65  e case where the
f170: 72 65 20 69 73 20 6e 6f 74 20 65 6e 6f 75 67 68  re is not enough
f180: 20 72 6f 6f 6d 2c 20 75 6e 63 6f 6d 70 72 65 73   room, uncompres
f190: 73 28 29 20 77 69 6c 6c 20 66 69 6c 6c 20 74 68  s() will fill th
f1a0: 65 20 6f 75 74 70 75 74 0a 20 20 20 62 75 66 66  e output.   buff
f1b0: 65 72 20 77 69 74 68 20 74 68 65 20 75 6e 63 6f  er with the unco
f1c0: 6d 70 72 65 73 73 65 64 20 64 61 74 61 20 75 70  mpressed data up
f1d0: 20 74 6f 20 74 68 61 74 20 70 6f 69 6e 74 2e 0a   to that point..
f1e0: 2a 2f 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
f1f0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 67              /* g
f200: 7a 69 70 20 66 69 6c 65 20 61 63 63 65 73 73 20  zip file access 
f210: 66 75 6e 63 74 69 6f 6e 73 20 2a 2f 0a 0a 2f 2a  functions */../*
f220: 0a 20 20 20 20 20 54 68 69 73 20 6c 69 62 72 61  .     This libra
f230: 72 79 20 73 75 70 70 6f 72 74 73 20 72 65 61 64  ry supports read
f240: 69 6e 67 20 61 6e 64 20 77 72 69 74 69 6e 67 20  ing and writing 
f250: 66 69 6c 65 73 20 69 6e 20 67 7a 69 70 20 28 2e  files in gzip (.
f260: 67 7a 29 20 66 6f 72 6d 61 74 20 77 69 74 68 0a  gz) format with.
f270: 20 20 20 61 6e 20 69 6e 74 65 72 66 61 63 65 20     an interface 
f280: 73 69 6d 69 6c 61 72 20 74 6f 20 74 68 61 74 20  similar to that 
f290: 6f 66 20 73 74 64 69 6f 2c 20 75 73 69 6e 67 20  of stdio, using 
f2a0: 74 68 65 20 66 75 6e 63 74 69 6f 6e 73 20 74 68  the functions th
f2b0: 61 74 20 73 74 61 72 74 20 77 69 74 68 0a 20 20  at start with.  
f2c0: 20 22 67 7a 22 2e 20 20 54 68 65 20 67 7a 69 70   "gz".  The gzip
f2d0: 20 66 6f 72 6d 61 74 20 69 73 20 64 69 66 66 65   format is diffe
f2e0: 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 7a 6c  rent from the zl
f2f0: 69 62 20 66 6f 72 6d 61 74 2e 20 20 67 7a 69 70  ib format.  gzip
f300: 20 69 73 20 61 20 67 7a 69 70 0a 20 20 20 77 72   is a gzip.   wr
f310: 61 70 70 65 72 2c 20 64 6f 63 75 6d 65 6e 74 65  apper, documente
f320: 64 20 69 6e 20 52 46 43 20 31 39 35 32 2c 20 77  d in RFC 1952, w
f330: 72 61 70 70 65 64 20 61 72 6f 75 6e 64 20 61 20  rapped around a 
f340: 64 65 66 6c 61 74 65 20 73 74 72 65 61 6d 2e 0a  deflate stream..
f350: 2a 2f 0a 0a 74 79 70 65 64 65 66 20 73 74 72 75  */..typedef stru
f360: 63 74 20 67 7a 46 69 6c 65 5f 73 20 2a 67 7a 46  ct gzFile_s *gzF
f370: 69 6c 65 3b 20 20 20 20 2f 2a 20 73 65 6d 69 2d  ile;    /* semi-
f380: 6f 70 61 71 75 65 20 67 7a 69 70 20 66 69 6c 65  opaque gzip file
f390: 20 64 65 73 63 72 69 70 74 6f 72 20 2a 2f 0a 0a   descriptor */..
f3a0: 2f 2a 0a 5a 45 58 54 45 52 4e 20 67 7a 46 69 6c  /*.ZEXTERN gzFil
f3b0: 65 20 5a 45 58 50 4f 52 54 20 67 7a 6f 70 65 6e  e ZEXPORT gzopen
f3c0: 20 4f 46 28 28 63 6f 6e 73 74 20 63 68 61 72 20   OF((const char 
f3d0: 2a 70 61 74 68 2c 20 63 6f 6e 73 74 20 63 68 61  *path, const cha
f3e0: 72 20 2a 6d 6f 64 65 29 29 3b 0a 0a 20 20 20 20  r *mode));..    
f3f0: 20 4f 70 65 6e 73 20 61 20 67 7a 69 70 20 28 2e   Opens a gzip (.
f400: 67 7a 29 20 66 69 6c 65 20 66 6f 72 20 72 65 61  gz) file for rea
f410: 64 69 6e 67 20 6f 72 20 77 72 69 74 69 6e 67 2e  ding or writing.
f420: 20 20 54 68 65 20 6d 6f 64 65 20 70 61 72 61 6d    The mode param
f430: 65 74 65 72 20 69 73 20 61 73 0a 20 20 20 69 6e  eter is as.   in
f440: 20 66 6f 70 65 6e 20 28 22 72 62 22 20 6f 72 20   fopen ("rb" or 
f450: 22 77 62 22 29 20 62 75 74 20 63 61 6e 20 61 6c  "wb") but can al
f460: 73 6f 20 69 6e 63 6c 75 64 65 20 61 20 63 6f 6d  so include a com
f470: 70 72 65 73 73 69 6f 6e 20 6c 65 76 65 6c 20 28  pression level (
f480: 22 77 62 39 22 29 20 6f 72 0a 20 20 20 61 20 73  "wb9") or.   a s
f490: 74 72 61 74 65 67 79 3a 20 27 66 27 20 66 6f 72  trategy: 'f' for
f4a0: 20 66 69 6c 74 65 72 65 64 20 64 61 74 61 20 61   filtered data a
f4b0: 73 20 69 6e 20 22 77 62 36 66 22 2c 20 27 68 27  s in "wb6f", 'h'
f4c0: 20 66 6f 72 20 48 75 66 66 6d 61 6e 2d 6f 6e 6c   for Huffman-onl
f4d0: 79 0a 20 20 20 63 6f 6d 70 72 65 73 73 69 6f 6e  y.   compression
f4e0: 20 61 73 20 69 6e 20 22 77 62 31 68 22 2c 20 27   as in "wb1h", '
f4f0: 52 27 20 66 6f 72 20 72 75 6e 2d 6c 65 6e 67 74  R' for run-lengt
f500: 68 20 65 6e 63 6f 64 69 6e 67 20 61 73 20 69 6e  h encoding as in
f510: 20 22 77 62 31 52 22 2c 20 6f 72 20 27 46 27 0a   "wb1R", or 'F'.
f520: 20 20 20 66 6f 72 20 66 69 78 65 64 20 63 6f 64     for fixed cod
f530: 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 61 73  e compression as
f540: 20 69 6e 20 22 77 62 39 46 22 2e 20 20 28 53 65   in "wb9F".  (Se
f550: 65 20 74 68 65 20 64 65 73 63 72 69 70 74 69 6f  e the descriptio
f560: 6e 20 6f 66 0a 20 20 20 64 65 66 6c 61 74 65 49  n of.   deflateI
f570: 6e 69 74 32 20 66 6f 72 20 6d 6f 72 65 20 69 6e  nit2 for more in
f580: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
f590: 74 68 65 20 73 74 72 61 74 65 67 79 20 70 61 72  the strategy par
f5a0: 61 6d 65 74 65 72 2e 29 20 20 27 54 27 20 77 69  ameter.)  'T' wi
f5b0: 6c 6c 0a 20 20 20 72 65 71 75 65 73 74 20 74 72  ll.   request tr
f5c0: 61 6e 73 70 61 72 65 6e 74 20 77 72 69 74 69 6e  ansparent writin
f5d0: 67 20 6f 72 20 61 70 70 65 6e 64 69 6e 67 20 77  g or appending w
f5e0: 69 74 68 20 6e 6f 20 63 6f 6d 70 72 65 73 73 69  ith no compressi
f5f0: 6f 6e 20 61 6e 64 20 6e 6f 74 20 75 73 69 6e 67  on and not using
f600: 0a 20 20 20 74 68 65 20 67 7a 69 70 20 66 6f 72  .   the gzip for
f610: 6d 61 74 2e 0a 0a 20 20 20 20 20 22 61 22 20 63  mat...     "a" c
f620: 61 6e 20 62 65 20 75 73 65 64 20 69 6e 73 74 65  an be used inste
f630: 61 64 20 6f 66 20 22 77 22 20 74 6f 20 72 65 71  ad of "w" to req
f640: 75 65 73 74 20 74 68 61 74 20 74 68 65 20 67 7a  uest that the gz
f650: 69 70 20 73 74 72 65 61 6d 20 74 68 61 74 20 77  ip stream that w
f660: 69 6c 6c 0a 20 20 20 62 65 20 77 72 69 74 74 65  ill.   be writte
f670: 6e 20 62 65 20 61 70 70 65 6e 64 65 64 20 74 6f  n be appended to
f680: 20 74 68 65 20 66 69 6c 65 2e 20 20 22 2b 22 20   the file.  "+" 
f690: 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61  will result in a
f6a0: 6e 20 65 72 72 6f 72 2c 20 73 69 6e 63 65 0a 20  n error, since. 
f6b0: 20 20 72 65 61 64 69 6e 67 20 61 6e 64 20 77 72    reading and wr
f6c0: 69 74 69 6e 67 20 74 6f 20 74 68 65 20 73 61 6d  iting to the sam
f6d0: 65 20 67 7a 69 70 20 66 69 6c 65 20 69 73 20 6e  e gzip file is n
f6e0: 6f 74 20 73 75 70 70 6f 72 74 65 64 2e 20 20 54  ot supported.  T
f6f0: 68 65 20 61 64 64 69 74 69 6f 6e 20 6f 66 0a 20  he addition of. 
f700: 20 20 22 78 22 20 77 68 65 6e 20 77 72 69 74 69    "x" when writi
f710: 6e 67 20 77 69 6c 6c 20 63 72 65 61 74 65 20 74  ng will create t
f720: 68 65 20 66 69 6c 65 20 65 78 63 6c 75 73 69 76  he file exclusiv
f730: 65 6c 79 2c 20 77 68 69 63 68 20 66 61 69 6c 73  ely, which fails
f740: 20 69 66 20 74 68 65 20 66 69 6c 65 0a 20 20 20   if the file.   
f750: 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 2e 20  already exists. 
f760: 20 4f 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74   On systems that
f770: 20 73 75 70 70 6f 72 74 20 69 74 2c 20 74 68 65   support it, the
f780: 20 61 64 64 69 74 69 6f 6e 20 6f 66 20 22 65 22   addition of "e"
f790: 20 77 68 65 6e 0a 20 20 20 72 65 61 64 69 6e 67   when.   reading
f7a0: 20 6f 72 20 77 72 69 74 69 6e 67 20 77 69 6c 6c   or writing will
f7b0: 20 73 65 74 20 74 68 65 20 66 6c 61 67 20 74 6f   set the flag to
f7c0: 20 63 6c 6f 73 65 20 74 68 65 20 66 69 6c 65 20   close the file 
f7d0: 6f 6e 20 61 6e 20 65 78 65 63 76 65 28 29 20 63  on an execve() c
f7e0: 61 6c 6c 2e 0a 0a 20 20 20 20 20 54 68 65 73 65  all...     These
f7f0: 20 66 75 6e 63 74 69 6f 6e 73 2c 20 61 73 20 77   functions, as w
f800: 65 6c 6c 20 61 73 20 67 7a 69 70 2c 20 77 69 6c  ell as gzip, wil
f810: 6c 20 72 65 61 64 20 61 6e 64 20 64 65 63 6f 64  l read and decod
f820: 65 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66 20  e a sequence of 
f830: 67 7a 69 70 0a 20 20 20 73 74 72 65 61 6d 73 20  gzip.   streams 
f840: 69 6e 20 61 20 66 69 6c 65 2e 20 20 54 68 65 20  in a file.  The 
f850: 61 70 70 65 6e 64 20 66 75 6e 63 74 69 6f 6e 20  append function 
f860: 6f 66 20 67 7a 6f 70 65 6e 28 29 20 63 61 6e 20  of gzopen() can 
f870: 62 65 20 75 73 65 64 20 74 6f 20 63 72 65 61 74  be used to creat
f880: 65 0a 20 20 20 73 75 63 68 20 61 20 66 69 6c 65  e.   such a file
f890: 2e 20 20 28 41 6c 73 6f 20 73 65 65 20 67 7a 66  .  (Also see gzf
f8a0: 6c 75 73 68 28 29 20 66 6f 72 20 61 6e 6f 74 68  lush() for anoth
f8b0: 65 72 20 77 61 79 20 74 6f 20 64 6f 20 74 68 69  er way to do thi
f8c0: 73 2e 29 20 20 57 68 65 6e 0a 20 20 20 61 70 70  s.)  When.   app
f8d0: 65 6e 64 69 6e 67 2c 20 67 7a 6f 70 65 6e 20 64  ending, gzopen d
f8e0: 6f 65 73 20 6e 6f 74 20 74 65 73 74 20 77 68 65  oes not test whe
f8f0: 74 68 65 72 20 74 68 65 20 66 69 6c 65 20 62 65  ther the file be
f900: 67 69 6e 73 20 77 69 74 68 20 61 20 67 7a 69 70  gins with a gzip
f910: 20 73 74 72 65 61 6d 2c 0a 20 20 20 6e 6f 72 20   stream,.   nor 
f920: 64 6f 65 73 20 69 74 20 6c 6f 6f 6b 20 66 6f 72  does it look for
f930: 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20   the end of the 
f940: 67 7a 69 70 20 73 74 72 65 61 6d 73 20 74 6f 20  gzip streams to 
f950: 62 65 67 69 6e 20 61 70 70 65 6e 64 69 6e 67 2e  begin appending.
f960: 20 20 67 7a 6f 70 65 6e 0a 20 20 20 77 69 6c 6c    gzopen.   will
f970: 20 73 69 6d 70 6c 79 20 61 70 70 65 6e 64 20 61   simply append a
f980: 20 67 7a 69 70 20 73 74 72 65 61 6d 20 74 6f 20   gzip stream to 
f990: 74 68 65 20 65 78 69 73 74 69 6e 67 20 66 69 6c  the existing fil
f9a0: 65 2e 0a 0a 20 20 20 20 20 67 7a 6f 70 65 6e 20  e...     gzopen 
f9b0: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 72  can be used to r
f9c0: 65 61 64 20 61 20 66 69 6c 65 20 77 68 69 63 68  ead a file which
f9d0: 20 69 73 20 6e 6f 74 20 69 6e 20 67 7a 69 70 20   is not in gzip 
f9e0: 66 6f 72 6d 61 74 3b 20 69 6e 20 74 68 69 73 0a  format; in this.
f9f0: 20 20 20 63 61 73 65 20 67 7a 72 65 61 64 20 77     case gzread w
fa00: 69 6c 6c 20 64 69 72 65 63 74 6c 79 20 72 65 61  ill directly rea
fa10: 64 20 66 72 6f 6d 20 74 68 65 20 66 69 6c 65 20  d from the file 
fa20: 77 69 74 68 6f 75 74 20 64 65 63 6f 6d 70 72 65  without decompre
fa30: 73 73 69 6f 6e 2e 20 20 57 68 65 6e 0a 20 20 20  ssion.  When.   
fa40: 72 65 61 64 69 6e 67 2c 20 74 68 69 73 20 77 69  reading, this wi
fa50: 6c 6c 20 62 65 20 64 65 74 65 63 74 65 64 20 61  ll be detected a
fa60: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20  utomatically by 
fa70: 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20  looking for the 
fa80: 6d 61 67 69 63 20 74 77 6f 2d 0a 20 20 20 62 79  magic two-.   by
fa90: 74 65 20 67 7a 69 70 20 68 65 61 64 65 72 2e 0a  te gzip header..
faa0: 0a 20 20 20 20 20 67 7a 6f 70 65 6e 20 72 65 74  .     gzopen ret
fab0: 75 72 6e 73 20 4e 55 4c 4c 20 69 66 20 74 68 65  urns NULL if the
fac0: 20 66 69 6c 65 20 63 6f 75 6c 64 20 6e 6f 74 20   file could not 
fad0: 62 65 20 6f 70 65 6e 65 64 2c 20 69 66 20 74 68  be opened, if th
fae0: 65 72 65 20 77 61 73 0a 20 20 20 69 6e 73 75 66  ere was.   insuf
faf0: 66 69 63 69 65 6e 74 20 6d 65 6d 6f 72 79 20 74  ficient memory t
fb00: 6f 20 61 6c 6c 6f 63 61 74 65 20 74 68 65 20 67  o allocate the g
fb10: 7a 46 69 6c 65 20 73 74 61 74 65 2c 20 6f 72 20  zFile state, or 
fb20: 69 66 20 61 6e 20 69 6e 76 61 6c 69 64 20 6d 6f  if an invalid mo
fb30: 64 65 20 77 61 73 0a 20 20 20 73 70 65 63 69 66  de was.   specif
fb40: 69 65 64 20 28 61 6e 20 27 72 27 2c 20 27 77 27  ied (an 'r', 'w'
fb50: 2c 20 6f 72 20 27 61 27 20 77 61 73 20 6e 6f 74  , or 'a' was not
fb60: 20 70 72 6f 76 69 64 65 64 2c 20 6f 72 20 27 2b   provided, or '+
fb70: 27 20 77 61 73 20 70 72 6f 76 69 64 65 64 29 2e  ' was provided).
fb80: 0a 20 20 20 65 72 72 6e 6f 20 63 61 6e 20 62 65  .   errno can be
fb90: 20 63 68 65 63 6b 65 64 20 74 6f 20 64 65 74 65   checked to dete
fba0: 72 6d 69 6e 65 20 69 66 20 74 68 65 20 72 65 61  rmine if the rea
fbb0: 73 6f 6e 20 67 7a 6f 70 65 6e 20 66 61 69 6c 65  son gzopen faile
fbc0: 64 20 77 61 73 20 74 68 61 74 20 74 68 65 0a 20  d was that the. 
fbd0: 20 20 66 69 6c 65 20 63 6f 75 6c 64 20 6e 6f 74    file could not
fbe0: 20 62 65 20 6f 70 65 6e 65 64 2e 0a 2a 2f 0a 0a   be opened..*/..
fbf0: 5a 45 58 54 45 52 4e 20 67 7a 46 69 6c 65 20 5a  ZEXTERN gzFile Z
fc00: 45 58 50 4f 52 54 20 67 7a 64 6f 70 65 6e 20 4f  EXPORT gzdopen O
fc10: 46 28 28 69 6e 74 20 66 64 2c 20 63 6f 6e 73 74  F((int fd, const
fc20: 20 63 68 61 72 20 2a 6d 6f 64 65 29 29 3b 0a 2f   char *mode));./
fc30: 2a 0a 20 20 20 20 20 67 7a 64 6f 70 65 6e 20 61  *.     gzdopen a
fc40: 73 73 6f 63 69 61 74 65 73 20 61 20 67 7a 46 69  ssociates a gzFi
fc50: 6c 65 20 77 69 74 68 20 74 68 65 20 66 69 6c 65  le with the file
fc60: 20 64 65 73 63 72 69 70 74 6f 72 20 66 64 2e 20   descriptor fd. 
fc70: 20 46 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72   File descriptor
fc80: 73 0a 20 20 20 61 72 65 20 6f 62 74 61 69 6e 65  s.   are obtaine
fc90: 64 20 66 72 6f 6d 20 63 61 6c 6c 73 20 6c 69 6b  d from calls lik
fca0: 65 20 6f 70 65 6e 2c 20 64 75 70 2c 20 63 72 65  e open, dup, cre
fcb0: 61 74 2c 20 70 69 70 65 20 6f 72 20 66 69 6c 65  at, pipe or file
fcc0: 6e 6f 20 28 69 66 20 74 68 65 20 66 69 6c 65 0a  no (if the file.
fcd0: 20 20 20 68 61 73 20 62 65 65 6e 20 70 72 65 76     has been prev
fce0: 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 77 69  iously opened wi
fcf0: 74 68 20 66 6f 70 65 6e 29 2e 20 20 54 68 65 20  th fopen).  The 
fd00: 6d 6f 64 65 20 70 61 72 61 6d 65 74 65 72 20 69  mode parameter i
fd10: 73 20 61 73 20 69 6e 20 67 7a 6f 70 65 6e 2e 0a  s as in gzopen..
fd20: 0a 20 20 20 20 20 54 68 65 20 6e 65 78 74 20 63  .     The next c
fd30: 61 6c 6c 20 6f 66 20 67 7a 63 6c 6f 73 65 20 6f  all of gzclose o
fd40: 6e 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 67  n the returned g
fd50: 7a 46 69 6c 65 20 77 69 6c 6c 20 61 6c 73 6f 20  zFile will also 
fd60: 63 6c 6f 73 65 20 74 68 65 20 66 69 6c 65 0a 20  close the file. 
fd70: 20 20 64 65 73 63 72 69 70 74 6f 72 20 66 64 2c    descriptor fd,
fd80: 20 6a 75 73 74 20 6c 69 6b 65 20 66 63 6c 6f 73   just like fclos
fd90: 65 28 66 64 6f 70 65 6e 28 66 64 2c 20 6d 6f 64  e(fdopen(fd, mod
fda0: 65 29 29 20 63 6c 6f 73 65 73 20 74 68 65 20 66  e)) closes the f
fdb0: 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 0a 20  ile descriptor. 
fdc0: 20 20 66 64 2e 20 20 49 66 20 79 6f 75 20 77 61    fd.  If you wa
fdd0: 6e 74 20 74 6f 20 6b 65 65 70 20 66 64 20 6f 70  nt to keep fd op
fde0: 65 6e 2c 20 75 73 65 20 66 64 20 3d 20 64 75 70  en, use fd = dup
fdf0: 28 66 64 5f 6b 65 65 70 29 3b 20 67 7a 20 3d 20  (fd_keep); gz = 
fe00: 67 7a 64 6f 70 65 6e 28 66 64 2c 0a 20 20 20 6d  gzdopen(fd,.   m
fe10: 6f 64 65 29 3b 2e 20 20 54 68 65 20 64 75 70 6c  ode);.  The dupl
fe20: 69 63 61 74 65 64 20 64 65 73 63 72 69 70 74 6f  icated descripto
fe30: 72 20 73 68 6f 75 6c 64 20 62 65 20 73 61 76 65  r should be save
fe40: 64 20 74 6f 20 61 76 6f 69 64 20 61 20 6c 65 61  d to avoid a lea
fe50: 6b 2c 20 73 69 6e 63 65 0a 20 20 20 67 7a 64 6f  k, since.   gzdo
fe60: 70 65 6e 20 64 6f 65 73 20 6e 6f 74 20 63 6c 6f  pen does not clo
fe70: 73 65 20 66 64 20 69 66 20 69 74 20 66 61 69 6c  se fd if it fail
fe80: 73 2e 20 20 49 66 20 79 6f 75 20 61 72 65 20 75  s.  If you are u
fe90: 73 69 6e 67 20 66 69 6c 65 6e 6f 28 29 20 74 6f  sing fileno() to
fea0: 20 67 65 74 20 74 68 65 0a 20 20 20 66 69 6c 65   get the.   file
feb0: 20 64 65 73 63 72 69 70 74 6f 72 20 66 72 6f 6d   descriptor from
fec0: 20 61 20 46 49 4c 45 20 2a 2c 20 74 68 65 6e 20   a FILE *, then 
fed0: 79 6f 75 20 77 69 6c 6c 20 68 61 76 65 20 74 6f  you will have to
fee0: 20 75 73 65 20 64 75 70 28 29 20 74 6f 20 61 76   use dup() to av
fef0: 6f 69 64 0a 20 20 20 64 6f 75 62 6c 65 2d 63 6c  oid.   double-cl
ff00: 6f 73 65 28 29 69 6e 67 20 74 68 65 20 66 69 6c  ose()ing the fil
ff10: 65 20 64 65 73 63 72 69 70 74 6f 72 2e 20 20 42  e descriptor.  B
ff20: 6f 74 68 20 67 7a 63 6c 6f 73 65 28 29 20 61 6e  oth gzclose() an
ff30: 64 20 66 63 6c 6f 73 65 28 29 20 77 69 6c 6c 0a  d fclose() will.
ff40: 20 20 20 63 6c 6f 73 65 20 74 68 65 20 61 73 73     close the ass
ff50: 6f 63 69 61 74 65 64 20 66 69 6c 65 20 64 65 73  ociated file des
ff60: 63 72 69 70 74 6f 72 2c 20 73 6f 20 74 68 65 79  criptor, so they
ff70: 20 6e 65 65 64 20 74 6f 20 68 61 76 65 20 64 69   need to have di
ff80: 66 66 65 72 65 6e 74 20 66 69 6c 65 0a 20 20 20  fferent file.   
ff90: 64 65 73 63 72 69 70 74 6f 72 73 2e 0a 0a 20 20  descriptors...  
ffa0: 20 20 20 67 7a 64 6f 70 65 6e 20 72 65 74 75 72     gzdopen retur
ffb0: 6e 73 20 4e 55 4c 4c 20 69 66 20 74 68 65 72 65  ns NULL if there
ffc0: 20 77 61 73 20 69 6e 73 75 66 66 69 63 69 65 6e   was insufficien
ffd0: 74 20 6d 65 6d 6f 72 79 20 74 6f 20 61 6c 6c 6f  t memory to allo
ffe0: 63 61 74 65 20 74 68 65 0a 20 20 20 67 7a 46 69  cate the.   gzFi
fff0: 6c 65 20 73 74 61 74 65 2c 20 69 66 20 61 6e 20  le state, if an 
10000 69 6e 76 61 6c 69 64 20 6d 6f 64 65 20 77 61 73  invalid mode was
10010 20 73 70 65 63 69 66 69 65 64 20 28 61 6e 20 27   specified (an '
10020 72 27 2c 20 27 77 27 2c 20 6f 72 20 27 61 27 20  r', 'w', or 'a' 
10030 77 61 73 20 6e 6f 74 0a 20 20 20 70 72 6f 76 69  was not.   provi
10040 64 65 64 2c 20 6f 72 20 27 2b 27 20 77 61 73 20  ded, or '+' was 
10050 70 72 6f 76 69 64 65 64 29 2c 20 6f 72 20 69 66  provided), or if
10060 20 66 64 20 69 73 20 2d 31 2e 20 20 54 68 65 20   fd is -1.  The 
10070 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20  file descriptor 
10080 69 73 20 6e 6f 74 0a 20 20 20 75 73 65 64 20 75  is not.   used u
10090 6e 74 69 6c 20 74 68 65 20 6e 65 78 74 20 67 7a  ntil the next gz
100a0 2a 20 72 65 61 64 2c 20 77 72 69 74 65 2c 20 73  * read, write, s
100b0 65 65 6b 2c 20 6f 72 20 63 6c 6f 73 65 20 6f 70  eek, or close op
100c0 65 72 61 74 69 6f 6e 2c 20 73 6f 20 67 7a 64 6f  eration, so gzdo
100d0 70 65 6e 0a 20 20 20 77 69 6c 6c 20 6e 6f 74 20  pen.   will not 
100e0 64 65 74 65 63 74 20 69 66 20 66 64 20 69 73 20  detect if fd is 
100f0 69 6e 76 61 6c 69 64 20 28 75 6e 6c 65 73 73 20  invalid (unless 
10100 66 64 20 69 73 20 2d 31 29 2e 0a 2a 2f 0a 0a 5a  fd is -1)..*/..Z
10110 45 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f  EXTERN int ZEXPO
10120 52 54 20 67 7a 62 75 66 66 65 72 20 4f 46 28 28  RT gzbuffer OF((
10130 67 7a 46 69 6c 65 20 66 69 6c 65 2c 20 75 6e 73  gzFile file, uns
10140 69 67 6e 65 64 20 73 69 7a 65 29 29 3b 0a 2f 2a  igned size));./*
10150 0a 20 20 20 20 20 53 65 74 20 74 68 65 20 69 6e  .     Set the in
10160 74 65 72 6e 61 6c 20 62 75 66 66 65 72 20 73 69  ternal buffer si
10170 7a 65 20 75 73 65 64 20 62 79 20 74 68 69 73 20  ze used by this 
10180 6c 69 62 72 61 72 79 27 73 20 66 75 6e 63 74 69  library's functi
10190 6f 6e 73 2e 20 20 54 68 65 0a 20 20 20 64 65 66  ons.  The.   def
101a0 61 75 6c 74 20 62 75 66 66 65 72 20 73 69 7a 65  ault buffer size
101b0 20 69 73 20 38 31 39 32 20 62 79 74 65 73 2e 20   is 8192 bytes. 
101c0 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d   This function m
101d0 75 73 74 20 62 65 20 63 61 6c 6c 65 64 20 61 66  ust be called af
101e0 74 65 72 0a 20 20 20 67 7a 6f 70 65 6e 28 29 20  ter.   gzopen() 
101f0 6f 72 20 67 7a 64 6f 70 65 6e 28 29 2c 20 61 6e  or gzdopen(), an
10200 64 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74 68  d before any oth
10210 65 72 20 63 61 6c 6c 73 20 74 68 61 74 20 72 65  er calls that re
10220 61 64 20 6f 72 20 77 72 69 74 65 20 74 68 65 0a  ad or write the.
10230 20 20 20 66 69 6c 65 2e 20 20 54 68 65 20 62 75     file.  The bu
10240 66 66 65 72 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ffer memory allo
10250 63 61 74 69 6f 6e 20 69 73 20 61 6c 77 61 79 73  cation is always
10260 20 64 65 66 65 72 72 65 64 20 74 6f 20 74 68 65   deferred to the
10270 20 66 69 72 73 74 20 72 65 61 64 20 6f 72 0a 20   first read or. 
10280 20 20 77 72 69 74 65 2e 20 20 54 77 6f 20 62 75    write.  Two bu
10290 66 66 65 72 73 20 61 72 65 20 61 6c 6c 6f 63 61  ffers are alloca
102a0 74 65 64 2c 20 65 69 74 68 65 72 20 62 6f 74 68  ted, either both
102b0 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65   of the specifie
102c0 64 20 73 69 7a 65 20 77 68 65 6e 0a 20 20 20 77  d size when.   w
102d0 72 69 74 69 6e 67 2c 20 6f 72 20 6f 6e 65 20 6f  riting, or one o
102e0 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
102f0 73 69 7a 65 20 61 6e 64 20 74 68 65 20 6f 74 68  size and the oth
10300 65 72 20 74 77 69 63 65 20 74 68 61 74 20 73 69  er twice that si
10310 7a 65 20 77 68 65 6e 0a 20 20 20 72 65 61 64 69  ze when.   readi
10320 6e 67 2e 20 20 41 20 6c 61 72 67 65 72 20 62 75  ng.  A larger bu
10330 66 66 65 72 20 73 69 7a 65 20 6f 66 2c 20 66 6f  ffer size of, fo
10340 72 20 65 78 61 6d 70 6c 65 2c 20 36 34 4b 20 6f  r example, 64K o
10350 72 20 31 32 38 4b 20 62 79 74 65 73 20 77 69 6c  r 128K bytes wil
10360 6c 0a 20 20 20 6e 6f 74 69 63 65 61 62 6c 79 20  l.   noticeably 
10370 69 6e 63 72 65 61 73 65 20 74 68 65 20 73 70 65  increase the spe
10380 65 64 20 6f 66 20 64 65 63 6f 6d 70 72 65 73 73  ed of decompress
10390 69 6f 6e 20 28 72 65 61 64 69 6e 67 29 2e 0a 0a  ion (reading)...
103a0 20 20 20 20 20 54 68 65 20 6e 65 77 20 62 75 66       The new buf
103b0 66 65 72 20 73 69 7a 65 20 61 6c 73 6f 20 61 66  fer size also af
103c0 66 65 63 74 73 20 74 68 65 20 6d 61 78 69 6d 75  fects the maximu
103d0 6d 20 6c 65 6e 67 74 68 20 66 6f 72 20 67 7a 70  m length for gzp
103e0 72 69 6e 74 66 28 29 2e 0a 0a 20 20 20 20 20 67  rintf()...     g
103f0 7a 62 75 66 66 65 72 28 29 20 72 65 74 75 72 6e  zbuffer() return
10400 73 20 30 20 6f 6e 20 73 75 63 63 65 73 73 2c 20  s 0 on success, 
10410 6f 72 20 2d 31 20 6f 6e 20 66 61 69 6c 75 72 65  or -1 on failure
10420 2c 20 73 75 63 68 20 61 73 20 62 65 69 6e 67 20  , such as being 
10430 63 61 6c 6c 65 64 0a 20 20 20 74 6f 6f 20 6c 61  called.   too la
10440 74 65 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20  te..*/..ZEXTERN 
10450 69 6e 74 20 5a 45 58 50 4f 52 54 20 67 7a 73 65  int ZEXPORT gzse
10460 74 70 61 72 61 6d 73 20 4f 46 28 28 67 7a 46 69  tparams OF((gzFi
10470 6c 65 20 66 69 6c 65 2c 20 69 6e 74 20 6c 65 76  le file, int lev
10480 65 6c 2c 20 69 6e 74 20 73 74 72 61 74 65 67 79  el, int strategy
10490 29 29 3b 0a 2f 2a 0a 20 20 20 20 20 44 79 6e 61  ));./*.     Dyna
104a0 6d 69 63 61 6c 6c 79 20 75 70 64 61 74 65 20 74  mically update t
104b0 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c  he compression l
104c0 65 76 65 6c 20 6f 72 20 73 74 72 61 74 65 67 79  evel or strategy
104d0 2e 20 20 53 65 65 20 74 68 65 20 64 65 73 63 72  .  See the descr
104e0 69 70 74 69 6f 6e 0a 20 20 20 6f 66 20 64 65 66  iption.   of def
104f0 6c 61 74 65 49 6e 69 74 32 20 66 6f 72 20 74 68  lateInit2 for th
10500 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 74 68 65  e meaning of the
10510 73 65 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 0a  se parameters...
10520 20 20 20 20 20 67 7a 73 65 74 70 61 72 61 6d 73       gzsetparams
10530 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20 69 66   returns Z_OK if
10540 20 73 75 63 63 65 73 73 2c 20 6f 72 20 5a 5f 53   success, or Z_S
10550 54 52 45 41 4d 5f 45 52 52 4f 52 20 69 66 20 74  TREAM_ERROR if t
10560 68 65 20 66 69 6c 65 20 77 61 73 20 6e 6f 74 0a  he file was not.
10570 20 20 20 6f 70 65 6e 65 64 20 66 6f 72 20 77 72     opened for wr
10580 69 74 69 6e 67 2e 0a 2a 2f 0a 0a 5a 45 58 54 45  iting..*/..ZEXTE
10590 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 67  RN int ZEXPORT g
105a0 7a 72 65 61 64 20 4f 46 28 28 67 7a 46 69 6c 65  zread OF((gzFile
105b0 20 66 69 6c 65 2c 20 76 6f 69 64 70 20 62 75 66   file, voidp buf
105c0 2c 20 75 6e 73 69 67 6e 65 64 20 6c 65 6e 29 29  , unsigned len))
105d0 3b 0a 2f 2a 0a 20 20 20 20 20 52 65 61 64 73 20  ;./*.     Reads 
105e0 74 68 65 20 67 69 76 65 6e 20 6e 75 6d 62 65 72  the given number
105f0 20 6f 66 20 75 6e 63 6f 6d 70 72 65 73 73 65 64   of uncompressed
10600 20 62 79 74 65 73 20 66 72 6f 6d 20 74 68 65 20   bytes from the 
10610 63 6f 6d 70 72 65 73 73 65 64 20 66 69 6c 65 2e  compressed file.
10620 20 20 49 66 0a 20 20 20 74 68 65 20 69 6e 70 75    If.   the inpu
10630 74 20 66 69 6c 65 20 69 73 20 6e 6f 74 20 69 6e  t file is not in
10640 20 67 7a 69 70 20 66 6f 72 6d 61 74 2c 20 67 7a   gzip format, gz
10650 72 65 61 64 20 63 6f 70 69 65 73 20 74 68 65 20  read copies the 
10660 67 69 76 65 6e 20 6e 75 6d 62 65 72 20 6f 66 0a  given number of.
10670 20 20 20 62 79 74 65 73 20 69 6e 74 6f 20 74 68     bytes into th
10680 65 20 62 75 66 66 65 72 20 64 69 72 65 63 74 6c  e buffer directl
10690 79 20 66 72 6f 6d 20 74 68 65 20 66 69 6c 65 2e  y from the file.
106a0 0a 0a 20 20 20 20 20 41 66 74 65 72 20 72 65 61  ..     After rea
106b0 63 68 69 6e 67 20 74 68 65 20 65 6e 64 20 6f 66  ching the end of
106c0 20 61 20 67 7a 69 70 20 73 74 72 65 61 6d 20 69   a gzip stream i
106d0 6e 20 74 68 65 20 69 6e 70 75 74 2c 20 67 7a 72  n the input, gzr
106e0 65 61 64 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75  ead will continu
106f0 65 0a 20 20 20 74 6f 20 72 65 61 64 2c 20 6c 6f  e.   to read, lo
10700 6f 6b 69 6e 67 20 66 6f 72 20 61 6e 6f 74 68 65  oking for anothe
10710 72 20 67 7a 69 70 20 73 74 72 65 61 6d 2e 20 20  r gzip stream.  
10720 41 6e 79 20 6e 75 6d 62 65 72 20 6f 66 20 67 7a  Any number of gz
10730 69 70 20 73 74 72 65 61 6d 73 20 6d 61 79 20 62  ip streams may b
10740 65 0a 20 20 20 63 6f 6e 63 61 74 65 6e 61 74 65  e.   concatenate
10750 64 20 69 6e 20 74 68 65 20 69 6e 70 75 74 20 66  d in the input f
10760 69 6c 65 2c 20 61 6e 64 20 77 69 6c 6c 20 61 6c  ile, and will al
10770 6c 20 62 65 20 64 65 63 6f 6d 70 72 65 73 73 65  l be decompresse
10780 64 20 62 79 20 67 7a 72 65 61 64 28 29 2e 0a 20  d by gzread().. 
10790 20 20 49 66 20 73 6f 6d 65 74 68 69 6e 67 20 6f    If something o
107a0 74 68 65 72 20 74 68 61 6e 20 61 20 67 7a 69 70  ther than a gzip
107b0 20 73 74 72 65 61 6d 20 69 73 20 65 6e 63 6f 75   stream is encou
107c0 6e 74 65 72 65 64 20 61 66 74 65 72 20 61 20 67  ntered after a g
107d0 7a 69 70 20 73 74 72 65 61 6d 2c 0a 20 20 20 74  zip stream,.   t
107e0 68 61 74 20 72 65 6d 61 69 6e 69 6e 67 20 74 72  hat remaining tr
107f0 61 69 6c 69 6e 67 20 67 61 72 62 61 67 65 20 69  ailing garbage i
10800 73 20 69 67 6e 6f 72 65 64 20 28 61 6e 64 20 6e  s ignored (and n
10810 6f 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72  o error is retur
10820 6e 65 64 29 2e 0a 0a 20 20 20 20 20 67 7a 72 65  ned)...     gzre
10830 61 64 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  ad can be used t
10840 6f 20 72 65 61 64 20 61 20 67 7a 69 70 20 66 69  o read a gzip fi
10850 6c 65 20 74 68 61 74 20 69 73 20 62 65 69 6e 67  le that is being
10860 20 63 6f 6e 63 75 72 72 65 6e 74 6c 79 20 77 72   concurrently wr
10870 69 74 74 65 6e 2e 0a 20 20 20 55 70 6f 6e 20 72  itten..   Upon r
10880 65 61 63 68 69 6e 67 20 74 68 65 20 65 6e 64 20  eaching the end 
10890 6f 66 20 74 68 65 20 69 6e 70 75 74 2c 20 67 7a  of the input, gz
108a0 72 65 61 64 20 77 69 6c 6c 20 72 65 74 75 72 6e  read will return
108b0 20 77 69 74 68 20 74 68 65 20 61 76 61 69 6c 61   with the availa
108c0 62 6c 65 0a 20 20 20 64 61 74 61 2e 20 20 49 66  ble.   data.  If
108d0 20 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65 20   the error code 
108e0 72 65 74 75 72 6e 65 64 20 62 79 20 67 7a 65 72  returned by gzer
108f0 72 6f 72 20 69 73 20 5a 5f 4f 4b 20 6f 72 20 5a  ror is Z_OK or Z
10900 5f 42 55 46 5f 45 52 52 4f 52 2c 20 74 68 65 6e  _BUF_ERROR, then
10910 0a 20 20 20 67 7a 63 6c 65 61 72 65 72 72 20 63  .   gzclearerr c
10920 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 63 6c  an be used to cl
10930 65 61 72 20 74 68 65 20 65 6e 64 20 6f 66 20 66  ear the end of f
10940 69 6c 65 20 69 6e 64 69 63 61 74 6f 72 20 69 6e  ile indicator in
10950 20 6f 72 64 65 72 20 74 6f 20 70 65 72 6d 69 74   order to permit
10960 0a 20 20 20 67 7a 72 65 61 64 20 74 6f 20 62 65  .   gzread to be
10970 20 74 72 69 65 64 20 61 67 61 69 6e 2e 20 20 5a   tried again.  Z
10980 5f 4f 4b 20 69 6e 64 69 63 61 74 65 73 20 74 68  _OK indicates th
10990 61 74 20 61 20 67 7a 69 70 20 73 74 72 65 61 6d  at a gzip stream
109a0 20 77 61 73 20 63 6f 6d 70 6c 65 74 65 64 0a 20   was completed. 
109b0 20 20 6f 6e 20 74 68 65 20 6c 61 73 74 20 67 7a    on the last gz
109c0 72 65 61 64 2e 20 20 5a 5f 42 55 46 5f 45 52 52  read.  Z_BUF_ERR
109d0 4f 52 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  OR indicates tha
109e0 74 20 74 68 65 20 69 6e 70 75 74 20 66 69 6c 65  t the input file
109f0 20 65 6e 64 65 64 20 69 6e 20 74 68 65 0a 20 20   ended in the.  
10a00 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 67 7a 69   middle of a gzi
10a10 70 20 73 74 72 65 61 6d 2e 20 20 4e 6f 74 65 20  p stream.  Note 
10a20 74 68 61 74 20 67 7a 72 65 61 64 20 64 6f 65 73  that gzread does
10a30 20 6e 6f 74 20 72 65 74 75 72 6e 20 2d 31 20 69   not return -1 i
10a40 6e 20 74 68 65 20 65 76 65 6e 74 0a 20 20 20 6f  n the event.   o
10a50 66 20 61 6e 20 69 6e 63 6f 6d 70 6c 65 74 65 20  f an incomplete 
10a60 67 7a 69 70 20 73 74 72 65 61 6d 2e 20 20 54 68  gzip stream.  Th
10a70 69 73 20 65 72 72 6f 72 20 69 73 20 64 65 66 65  is error is defe
10a80 72 72 65 64 20 75 6e 74 69 6c 20 67 7a 63 6c 6f  rred until gzclo
10a90 73 65 28 29 2c 20 77 68 69 63 68 0a 20 20 20 77  se(), which.   w
10aa0 69 6c 6c 20 72 65 74 75 72 6e 20 5a 5f 42 55 46  ill return Z_BUF
10ab0 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20 6c 61  _ERROR if the la
10ac0 73 74 20 67 7a 72 65 61 64 20 65 6e 64 65 64 20  st gzread ended 
10ad0 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66  in the middle of
10ae0 20 61 20 67 7a 69 70 0a 20 20 20 73 74 72 65 61   a gzip.   strea
10af0 6d 2e 20 20 41 6c 74 65 72 6e 61 74 69 76 65 6c  m.  Alternativel
10b00 79 2c 20 67 7a 65 72 72 6f 72 20 63 61 6e 20 62  y, gzerror can b
10b10 65 20 75 73 65 64 20 62 65 66 6f 72 65 20 67 7a  e used before gz
10b20 63 6c 6f 73 65 20 74 6f 20 64 65 74 65 63 74 20  close to detect 
10b30 74 68 69 73 0a 20 20 20 63 61 73 65 2e 0a 0a 20  this.   case... 
10b40 20 20 20 20 67 7a 72 65 61 64 20 72 65 74 75 72      gzread retur
10b50 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ns the number of
10b60 20 75 6e 63 6f 6d 70 72 65 73 73 65 64 20 62 79   uncompressed by
10b70 74 65 73 20 61 63 74 75 61 6c 6c 79 20 72 65 61  tes actually rea
10b80 64 2c 20 6c 65 73 73 20 74 68 61 6e 0a 20 20 20  d, less than.   
10b90 6c 65 6e 20 66 6f 72 20 65 6e 64 20 6f 66 20 66  len for end of f
10ba0 69 6c 65 2c 20 6f 72 20 2d 31 20 66 6f 72 20 65  ile, or -1 for e
10bb0 72 72 6f 72 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52  rror..*/..ZEXTER
10bc0 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 67 7a  N int ZEXPORT gz
10bd0 77 72 69 74 65 20 4f 46 28 28 67 7a 46 69 6c 65  write OF((gzFile
10be0 20 66 69 6c 65 2c 0a 20 20 20 20 20 20 20 20 20   file,.         
10bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c00 20 20 20 20 20 20 20 76 6f 69 64 70 63 20 62 75         voidpc bu
10c10 66 2c 20 75 6e 73 69 67 6e 65 64 20 6c 65 6e 29  f, unsigned len)
10c20 29 3b 0a 2f 2a 0a 20 20 20 20 20 57 72 69 74 65  );./*.     Write
10c30 73 20 74 68 65 20 67 69 76 65 6e 20 6e 75 6d 62  s the given numb
10c40 65 72 20 6f 66 20 75 6e 63 6f 6d 70 72 65 73 73  er of uncompress
10c50 65 64 20 62 79 74 65 73 20 69 6e 74 6f 20 74 68  ed bytes into th
10c60 65 20 63 6f 6d 70 72 65 73 73 65 64 20 66 69 6c  e compressed fil
10c70 65 2e 0a 20 20 20 67 7a 77 72 69 74 65 20 72 65  e..   gzwrite re
10c80 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72  turns the number
10c90 20 6f 66 20 75 6e 63 6f 6d 70 72 65 73 73 65 64   of uncompressed
10ca0 20 62 79 74 65 73 20 77 72 69 74 74 65 6e 20 6f   bytes written o
10cb0 72 20 30 20 69 6e 20 63 61 73 65 20 6f 66 0a 20  r 0 in case of. 
10cc0 20 20 65 72 72 6f 72 2e 0a 2a 2f 0a 0a 5a 45 58    error..*/..ZEX
10cd0 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54  TERN int ZEXPORT
10ce0 56 41 20 67 7a 70 72 69 6e 74 66 20 5a 5f 41 52  VA gzprintf Z_AR
10cf0 47 28 28 67 7a 46 69 6c 65 20 66 69 6c 65 2c 20  G((gzFile file, 
10d00 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 6f 72 6d  const char *form
10d10 61 74 2c 20 2e 2e 2e 29 29 3b 0a 2f 2a 0a 20 20  at, ...));./*.  
10d20 20 20 20 43 6f 6e 76 65 72 74 73 2c 20 66 6f 72     Converts, for
10d30 6d 61 74 73 2c 20 61 6e 64 20 77 72 69 74 65 73  mats, and writes
10d40 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 74   the arguments t
10d50 6f 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65 64  o the compressed
10d60 20 66 69 6c 65 20 75 6e 64 65 72 0a 20 20 20 63   file under.   c
10d70 6f 6e 74 72 6f 6c 20 6f 66 20 74 68 65 20 66 6f  ontrol of the fo
10d80 72 6d 61 74 20 73 74 72 69 6e 67 2c 20 61 73 20  rmat string, as 
10d90 69 6e 20 66 70 72 69 6e 74 66 2e 20 20 67 7a 70  in fprintf.  gzp
10da0 72 69 6e 74 66 20 72 65 74 75 72 6e 73 20 74 68  rintf returns th
10db0 65 20 6e 75 6d 62 65 72 20 6f 66 0a 20 20 20 75  e number of.   u
10dc0 6e 63 6f 6d 70 72 65 73 73 65 64 20 62 79 74 65  ncompressed byte
10dd0 73 20 61 63 74 75 61 6c 6c 79 20 77 72 69 74 74  s actually writt
10de0 65 6e 2c 20 6f 72 20 30 20 69 6e 20 63 61 73 65  en, or 0 in case
10df0 20 6f 66 20 65 72 72 6f 72 2e 20 20 54 68 65 20   of error.  The 
10e00 6e 75 6d 62 65 72 20 6f 66 0a 20 20 20 75 6e 63  number of.   unc
10e10 6f 6d 70 72 65 73 73 65 64 20 62 79 74 65 73 20  ompressed bytes 
10e20 77 72 69 74 74 65 6e 20 69 73 20 6c 69 6d 69 74  written is limit
10e30 65 64 20 74 6f 20 38 31 39 31 2c 20 6f 72 20 6f  ed to 8191, or o
10e40 6e 65 20 6c 65 73 73 20 74 68 61 6e 20 74 68 65  ne less than the
10e50 20 62 75 66 66 65 72 0a 20 20 20 73 69 7a 65 20   buffer.   size 
10e60 67 69 76 65 6e 20 74 6f 20 67 7a 62 75 66 66 65  given to gzbuffe
10e70 72 28 29 2e 20 20 54 68 65 20 63 61 6c 6c 65 72  r().  The caller
10e80 20 73 68 6f 75 6c 64 20 61 73 73 75 72 65 20 74   should assure t
10e90 68 61 74 20 74 68 69 73 20 6c 69 6d 69 74 20 69  hat this limit i
10ea0 73 20 6e 6f 74 0a 20 20 20 65 78 63 65 65 64 65  s not.   exceede
10eb0 64 2e 20 20 49 66 20 69 74 20 69 73 20 65 78 63  d.  If it is exc
10ec0 65 65 64 65 64 2c 20 74 68 65 6e 20 67 7a 70 72  eeded, then gzpr
10ed0 69 6e 74 66 28 29 20 77 69 6c 6c 20 72 65 74 75  intf() will retu
10ee0 72 6e 20 61 6e 20 65 72 72 6f 72 20 28 30 29 20  rn an error (0) 
10ef0 77 69 74 68 0a 20 20 20 6e 6f 74 68 69 6e 67 20  with.   nothing 
10f00 77 72 69 74 74 65 6e 2e 20 20 49 6e 20 74 68 69  written.  In thi
10f10 73 20 63 61 73 65 2c 20 74 68 65 72 65 20 6d 61  s case, there ma
10f20 79 20 61 6c 73 6f 20 62 65 20 61 20 62 75 66 66  y also be a buff
10f30 65 72 20 6f 76 65 72 66 6c 6f 77 20 77 69 74 68  er overflow with
10f40 0a 20 20 20 75 6e 70 72 65 64 69 63 74 61 62 6c  .   unpredictabl
10f50 65 20 63 6f 6e 73 65 71 75 65 6e 63 65 73 2c 20  e consequences, 
10f60 77 68 69 63 68 20 69 73 20 70 6f 73 73 69 62 6c  which is possibl
10f70 65 20 6f 6e 6c 79 20 69 66 20 7a 6c 69 62 20 77  e only if zlib w
10f80 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  as compiled with
10f90 0a 20 20 20 74 68 65 20 69 6e 73 65 63 75 72 65  .   the insecure
10fa0 20 66 75 6e 63 74 69 6f 6e 73 20 73 70 72 69 6e   functions sprin
10fb0 74 66 28 29 20 6f 72 20 76 73 70 72 69 6e 74 66  tf() or vsprintf
10fc0 28 29 20 62 65 63 61 75 73 65 20 74 68 65 20 73  () because the s
10fd0 65 63 75 72 65 20 73 6e 70 72 69 6e 74 66 28 29  ecure snprintf()
10fe0 0a 20 20 20 6f 72 20 76 73 6e 70 72 69 6e 74 66  .   or vsnprintf
10ff0 28 29 20 66 75 6e 63 74 69 6f 6e 73 20 77 65 72  () functions wer
11000 65 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e  e not available.
11010 20 20 54 68 69 73 20 63 61 6e 20 62 65 20 64 65    This can be de
11020 74 65 72 6d 69 6e 65 64 20 75 73 69 6e 67 0a 20  termined using. 
11030 20 20 7a 6c 69 62 43 6f 6d 70 69 6c 65 46 6c 61    zlibCompileFla
11040 67 73 28 29 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52  gs()..*/..ZEXTER
11050 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 67 7a  N int ZEXPORT gz
11060 70 75 74 73 20 4f 46 28 28 67 7a 46 69 6c 65 20  puts OF((gzFile 
11070 66 69 6c 65 2c 20 63 6f 6e 73 74 20 63 68 61 72  file, const char
11080 20 2a 73 29 29 3b 0a 2f 2a 0a 20 20 20 20 20 57   *s));./*.     W
11090 72 69 74 65 73 20 74 68 65 20 67 69 76 65 6e 20  rites the given 
110a0 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 65 64 20  null-terminated 
110b0 73 74 72 69 6e 67 20 74 6f 20 74 68 65 20 63 6f  string to the co
110c0 6d 70 72 65 73 73 65 64 20 66 69 6c 65 2c 20 65  mpressed file, e
110d0 78 63 6c 75 64 69 6e 67 0a 20 20 20 74 68 65 20  xcluding.   the 
110e0 74 65 72 6d 69 6e 61 74 69 6e 67 20 6e 75 6c 6c  terminating null
110f0 20 63 68 61 72 61 63 74 65 72 2e 0a 0a 20 20 20   character...   
11100 20 20 67 7a 70 75 74 73 20 72 65 74 75 72 6e 73    gzputs returns
11110 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   the number of c
11120 68 61 72 61 63 74 65 72 73 20 77 72 69 74 74 65  haracters writte
11130 6e 2c 20 6f 72 20 2d 31 20 69 6e 20 63 61 73 65  n, or -1 in case
11140 20 6f 66 20 65 72 72 6f 72 2e 0a 2a 2f 0a 0a 5a   of error..*/..Z
11150 45 58 54 45 52 4e 20 63 68 61 72 20 2a 20 5a 45  EXTERN char * ZE
11160 58 50 4f 52 54 20 67 7a 67 65 74 73 20 4f 46 28  XPORT gzgets OF(
11170 28 67 7a 46 69 6c 65 20 66 69 6c 65 2c 20 63 68  (gzFile file, ch
11180 61 72 20 2a 62 75 66 2c 20 69 6e 74 20 6c 65 6e  ar *buf, int len
11190 29 29 3b 0a 2f 2a 0a 20 20 20 20 20 52 65 61 64  ));./*.     Read
111a0 73 20 62 79 74 65 73 20 66 72 6f 6d 20 74 68 65  s bytes from the
111b0 20 63 6f 6d 70 72 65 73 73 65 64 20 66 69 6c 65   compressed file
111c0 20 75 6e 74 69 6c 20 6c 65 6e 2d 31 20 63 68 61   until len-1 cha
111d0 72 61 63 74 65 72 73 20 61 72 65 20 72 65 61 64  racters are read
111e0 2c 20 6f 72 20 61 0a 20 20 20 6e 65 77 6c 69 6e  , or a.   newlin
111f0 65 20 63 68 61 72 61 63 74 65 72 20 69 73 20 72  e character is r
11200 65 61 64 20 61 6e 64 20 74 72 61 6e 73 66 65 72  ead and transfer
11210 72 65 64 20 74 6f 20 62 75 66 2c 20 6f 72 20 61  red to buf, or a
11220 6e 20 65 6e 64 2d 6f 66 2d 66 69 6c 65 0a 20 20  n end-of-file.  
11230 20 63 6f 6e 64 69 74 69 6f 6e 20 69 73 20 65 6e   condition is en
11240 63 6f 75 6e 74 65 72 65 64 2e 20 20 49 66 20 61  countered.  If a
11250 6e 79 20 63 68 61 72 61 63 74 65 72 73 20 61 72  ny characters ar
11260 65 20 72 65 61 64 20 6f 72 20 69 66 20 6c 65 6e  e read or if len
11270 20 3d 3d 20 31 2c 20 74 68 65 0a 20 20 20 73 74   == 1, the.   st
11280 72 69 6e 67 20 69 73 20 74 65 72 6d 69 6e 61 74  ring is terminat
11290 65 64 20 77 69 74 68 20 61 20 6e 75 6c 6c 20 63  ed with a null c
112a0 68 61 72 61 63 74 65 72 2e 20 20 49 66 20 6e 6f  haracter.  If no
112b0 20 63 68 61 72 61 63 74 65 72 73 20 61 72 65 20   characters are 
112c0 72 65 61 64 20 64 75 65 0a 20 20 20 74 6f 20 61  read due.   to a
112d0 6e 20 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 6f 72  n end-of-file or
112e0 20 6c 65 6e 20 3c 20 31 2c 20 74 68 65 6e 20 74   len < 1, then t
112f0 68 65 20 62 75 66 66 65 72 20 69 73 20 6c 65 66  he buffer is lef
11300 74 20 75 6e 74 6f 75 63 68 65 64 2e 0a 0a 20 20  t untouched...  
11310 20 20 20 67 7a 67 65 74 73 20 72 65 74 75 72 6e     gzgets return
11320 73 20 62 75 66 20 77 68 69 63 68 20 69 73 20 61  s buf which is a
11330 20 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 65 64   null-terminated
11340 20 73 74 72 69 6e 67 2c 20 6f 72 20 69 74 20 72   string, or it r
11350 65 74 75 72 6e 73 20 4e 55 4c 4c 0a 20 20 20 66  eturns NULL.   f
11360 6f 72 20 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 6f  or end-of-file o
11370 72 20 69 6e 20 63 61 73 65 20 6f 66 20 65 72 72  r in case of err
11380 6f 72 2e 20 20 49 66 20 74 68 65 72 65 20 77 61  or.  If there wa
11390 73 20 61 6e 20 65 72 72 6f 72 2c 20 74 68 65 20  s an error, the 
113a0 63 6f 6e 74 65 6e 74 73 20 61 74 0a 20 20 20 62  contents at.   b
113b0 75 66 20 61 72 65 20 69 6e 64 65 74 65 72 6d 69  uf are indetermi
113c0 6e 61 74 65 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52  nate..*/..ZEXTER
113d0 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 67 7a  N int ZEXPORT gz
113e0 70 75 74 63 20 4f 46 28 28 67 7a 46 69 6c 65 20  putc OF((gzFile 
113f0 66 69 6c 65 2c 20 69 6e 74 20 63 29 29 3b 0a 2f  file, int c));./
11400 2a 0a 20 20 20 20 20 57 72 69 74 65 73 20 63 2c  *.     Writes c,
11410 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 6e   converted to an
11420 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 2c 20   unsigned char, 
11430 69 6e 74 6f 20 74 68 65 20 63 6f 6d 70 72 65 73  into the compres
11440 73 65 64 20 66 69 6c 65 2e 20 20 67 7a 70 75 74  sed file.  gzput
11450 63 0a 20 20 20 72 65 74 75 72 6e 73 20 74 68 65  c.   returns the
11460 20 76 61 6c 75 65 20 74 68 61 74 20 77 61 73 20   value that was 
11470 77 72 69 74 74 65 6e 2c 20 6f 72 20 2d 31 20 69  written, or -1 i
11480 6e 20 63 61 73 65 20 6f 66 20 65 72 72 6f 72 2e  n case of error.
11490 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74  .*/..ZEXTERN int
114a0 20 5a 45 58 50 4f 52 54 20 67 7a 67 65 74 63 20   ZEXPORT gzgetc 
114b0 4f 46 28 28 67 7a 46 69 6c 65 20 66 69 6c 65 29  OF((gzFile file)
114c0 29 3b 0a 2f 2a 0a 20 20 20 20 20 52 65 61 64 73  );./*.     Reads
114d0 20 6f 6e 65 20 62 79 74 65 20 66 72 6f 6d 20 74   one byte from t
114e0 68 65 20 63 6f 6d 70 72 65 73 73 65 64 20 66 69  he compressed fi
114f0 6c 65 2e 20 20 67 7a 67 65 74 63 20 72 65 74 75  le.  gzgetc retu
11500 72 6e 73 20 74 68 69 73 20 62 79 74 65 20 6f 72  rns this byte or
11510 20 2d 31 0a 20 20 20 69 6e 20 63 61 73 65 20 6f   -1.   in case o
11520 66 20 65 6e 64 20 6f 66 20 66 69 6c 65 20 6f 72  f end of file or
11530 20 65 72 72 6f 72 2e 20 20 54 68 69 73 20 69 73   error.  This is
11540 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61 73 20   implemented as 
11550 61 20 6d 61 63 72 6f 20 66 6f 72 20 73 70 65 65  a macro for spee
11560 64 2e 0a 20 20 20 41 73 20 73 75 63 68 2c 20 69  d..   As such, i
11570 74 20 64 6f 65 73 20 6e 6f 74 20 64 6f 20 61 6c  t does not do al
11580 6c 20 6f 66 20 74 68 65 20 63 68 65 63 6b 69 6e  l of the checkin
11590 67 20 74 68 65 20 6f 74 68 65 72 20 66 75 6e 63  g the other func
115a0 74 69 6f 6e 73 20 64 6f 2e 20 20 49 2e 65 2e 0a  tions do.  I.e..
115b0 20 20 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 63     it does not c
115c0 68 65 63 6b 20 74 6f 20 73 65 65 20 69 66 20 66  heck to see if f
115d0 69 6c 65 20 69 73 20 4e 55 4c 4c 2c 20 6e 6f 72  ile is NULL, nor
115e0 20 77 68 65 74 68 65 72 20 74 68 65 20 73 74 72   whether the str
115f0 75 63 74 75 72 65 20 66 69 6c 65 0a 20 20 20 70  ucture file.   p
11600 6f 69 6e 74 73 20 74 6f 20 68 61 73 20 62 65 65  oints to has bee
11610 6e 20 63 6c 6f 62 62 65 72 65 64 20 6f 72 20 6e  n clobbered or n
11620 6f 74 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20  ot..*/..ZEXTERN 
11630 69 6e 74 20 5a 45 58 50 4f 52 54 20 67 7a 75 6e  int ZEXPORT gzun
11640 67 65 74 63 20 4f 46 28 28 69 6e 74 20 63 2c 20  getc OF((int c, 
11650 67 7a 46 69 6c 65 20 66 69 6c 65 29 29 3b 0a 2f  gzFile file));./
11660 2a 0a 20 20 20 20 20 50 75 73 68 20 6f 6e 65 20  *.     Push one 
11670 63 68 61 72 61 63 74 65 72 20 62 61 63 6b 20 6f  character back o
11680 6e 74 6f 20 74 68 65 20 73 74 72 65 61 6d 20 74  nto the stream t
11690 6f 20 62 65 20 72 65 61 64 20 61 73 20 74 68 65  o be read as the
116a0 20 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72   first character
116b0 0a 20 20 20 6f 6e 20 74 68 65 20 6e 65 78 74 20  .   on the next 
116c0 72 65 61 64 2e 20 20 41 74 20 6c 65 61 73 74 20  read.  At least 
116d0 6f 6e 65 20 63 68 61 72 61 63 74 65 72 20 6f 66  one character of
116e0 20 70 75 73 68 2d 62 61 63 6b 20 69 73 20 61 6c   push-back is al
116f0 6c 6f 77 65 64 2e 0a 20 20 20 67 7a 75 6e 67 65  lowed..   gzunge
11700 74 63 28 29 20 72 65 74 75 72 6e 73 20 74 68 65  tc() returns the
11710 20 63 68 61 72 61 63 74 65 72 20 70 75 73 68 65   character pushe
11720 64 2c 20 6f 72 20 2d 31 20 6f 6e 20 66 61 69 6c  d, or -1 on fail
11730 75 72 65 2e 20 20 67 7a 75 6e 67 65 74 63 28 29  ure.  gzungetc()
11740 20 77 69 6c 6c 0a 20 20 20 66 61 69 6c 20 69 66   will.   fail if
11750 20 63 20 69 73 20 2d 31 2c 20 61 6e 64 20 6d 61   c is -1, and ma
11760 79 20 66 61 69 6c 20 69 66 20 61 20 63 68 61 72  y fail if a char
11770 61 63 74 65 72 20 68 61 73 20 62 65 65 6e 20 70  acter has been p
11780 75 73 68 65 64 20 62 75 74 20 6e 6f 74 20 72 65  ushed but not re
11790 61 64 0a 20 20 20 79 65 74 2e 20 20 49 66 20 67  ad.   yet.  If g
117a0 7a 75 6e 67 65 74 63 20 69 73 20 75 73 65 64 20  zungetc is used 
117b0 69 6d 6d 65 64 69 61 74 65 6c 79 20 61 66 74 65  immediately afte
117c0 72 20 67 7a 6f 70 65 6e 20 6f 72 20 67 7a 64 6f  r gzopen or gzdo
117d0 70 65 6e 2c 20 61 74 20 6c 65 61 73 74 20 74 68  pen, at least th
117e0 65 0a 20 20 20 6f 75 74 70 75 74 20 62 75 66 66  e.   output buff
117f0 65 72 20 73 69 7a 65 20 6f 66 20 70 75 73 68 65  er size of pushe
11800 64 20 63 68 61 72 61 63 74 65 72 73 20 69 73 20  d characters is 
11810 61 6c 6c 6f 77 65 64 2e 20 20 28 53 65 65 20 67  allowed.  (See g
11820 7a 62 75 66 66 65 72 20 61 62 6f 76 65 2e 29 0a  zbuffer above.).
11830 20 20 20 54 68 65 20 70 75 73 68 65 64 20 63 68     The pushed ch
11840 61 72 61 63 74 65 72 20 77 69 6c 6c 20 62 65 20  aracter will be 
11850 64 69 73 63 61 72 64 65 64 20 69 66 20 74 68 65  discarded if the
11860 20 73 74 72 65 61 6d 20 69 73 20 72 65 70 6f 73   stream is repos
11870 69 74 69 6f 6e 65 64 20 77 69 74 68 0a 20 20 20  itioned with.   
11880 67 7a 73 65 65 6b 28 29 20 6f 72 20 67 7a 72 65  gzseek() or gzre
11890 77 69 6e 64 28 29 2e 0a 2a 2f 0a 0a 5a 45 58 54  wind()..*/..ZEXT
118a0 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20  ERN int ZEXPORT 
118b0 67 7a 66 6c 75 73 68 20 4f 46 28 28 67 7a 46 69  gzflush OF((gzFi
118c0 6c 65 20 66 69 6c 65 2c 20 69 6e 74 20 66 6c 75  le file, int flu
118d0 73 68 29 29 3b 0a 2f 2a 0a 20 20 20 20 20 46 6c  sh));./*.     Fl
118e0 75 73 68 65 73 20 61 6c 6c 20 70 65 6e 64 69 6e  ushes all pendin
118f0 67 20 6f 75 74 70 75 74 20 69 6e 74 6f 20 74 68  g output into th
11900 65 20 63 6f 6d 70 72 65 73 73 65 64 20 66 69 6c  e compressed fil
11910 65 2e 20 20 54 68 65 20 70 61 72 61 6d 65 74 65  e.  The paramete
11920 72 20 66 6c 75 73 68 0a 20 20 20 69 73 20 61 73  r flush.   is as
11930 20 69 6e 20 74 68 65 20 64 65 66 6c 61 74 65 28   in the deflate(
11940 29 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54 68 65  ) function.  The
11950 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73   return value is
11960 20 74 68 65 20 7a 6c 69 62 20 65 72 72 6f 72 20   the zlib error 
11970 6e 75 6d 62 65 72 0a 20 20 20 28 73 65 65 20 66  number.   (see f
11980 75 6e 63 74 69 6f 6e 20 67 7a 65 72 72 6f 72 20  unction gzerror 
11990 62 65 6c 6f 77 29 2e 20 20 67 7a 66 6c 75 73 68  below).  gzflush
119a0 20 69 73 20 6f 6e 6c 79 20 70 65 72 6d 69 74 74   is only permitt
119b0 65 64 20 77 68 65 6e 20 77 72 69 74 69 6e 67 2e  ed when writing.
119c0 0a 0a 20 20 20 20 20 49 66 20 74 68 65 20 66 6c  ..     If the fl
119d0 75 73 68 20 70 61 72 61 6d 65 74 65 72 20 69 73  ush parameter is
119e0 20 5a 5f 46 49 4e 49 53 48 2c 20 74 68 65 20 72   Z_FINISH, the r
119f0 65 6d 61 69 6e 69 6e 67 20 64 61 74 61 20 69 73  emaining data is
11a00 20 77 72 69 74 74 65 6e 20 61 6e 64 20 74 68 65   written and the
11a10 0a 20 20 20 67 7a 69 70 20 73 74 72 65 61 6d 20  .   gzip stream 
11a20 69 73 20 63 6f 6d 70 6c 65 74 65 64 20 69 6e 20  is completed in 
11a30 74 68 65 20 6f 75 74 70 75 74 2e 20 20 49 66 20  the output.  If 
11a40 67 7a 77 72 69 74 65 28 29 20 69 73 20 63 61 6c  gzwrite() is cal
11a50 6c 65 64 20 61 67 61 69 6e 2c 20 61 20 6e 65 77  led again, a new
11a60 0a 20 20 20 67 7a 69 70 20 73 74 72 65 61 6d 20  .   gzip stream 
11a70 77 69 6c 6c 20 62 65 20 73 74 61 72 74 65 64 20  will be started 
11a80 69 6e 20 74 68 65 20 6f 75 74 70 75 74 2e 20 20  in the output.  
11a90 67 7a 72 65 61 64 28 29 20 69 73 20 61 62 6c 65  gzread() is able
11aa0 20 74 6f 20 72 65 61 64 20 73 75 63 68 0a 20 20   to read such.  
11ab0 20 63 6f 6e 63 61 74 65 6e 74 65 64 20 67 7a 69   concatented gzi
11ac0 70 20 73 74 72 65 61 6d 73 2e 0a 0a 20 20 20 20  p streams...    
11ad0 20 67 7a 66 6c 75 73 68 20 73 68 6f 75 6c 64 20   gzflush should 
11ae0 62 65 20 63 61 6c 6c 65 64 20 6f 6e 6c 79 20 77  be called only w
11af0 68 65 6e 20 73 74 72 69 63 74 6c 79 20 6e 65 63  hen strictly nec
11b00 65 73 73 61 72 79 20 62 65 63 61 75 73 65 20 69  essary because i
11b10 74 20 77 69 6c 6c 0a 20 20 20 64 65 67 72 61 64  t will.   degrad
11b20 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 69 66  e compression if
11b30 20 63 61 6c 6c 65 64 20 74 6f 6f 20 6f 66 74 65   called too ofte
11b40 6e 2e 0a 2a 2f 0a 0a 2f 2a 0a 5a 45 58 54 45 52  n..*/../*.ZEXTER
11b50 4e 20 7a 5f 6f 66 66 5f 74 20 5a 45 58 50 4f 52  N z_off_t ZEXPOR
11b60 54 20 67 7a 73 65 65 6b 20 4f 46 28 28 67 7a 46  T gzseek OF((gzF
11b70 69 6c 65 20 66 69 6c 65 2c 0a 20 20 20 20 20 20  ile file,.      
11b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b90 20 20 20 20 20 20 20 20 20 20 20 20 20 7a 5f 6f               z_o
11ba0 66 66 5f 74 20 6f 66 66 73 65 74 2c 20 69 6e 74  ff_t offset, int
11bb0 20 77 68 65 6e 63 65 29 29 3b 0a 0a 20 20 20 20   whence));..    
11bc0 20 53 65 74 73 20 74 68 65 20 73 74 61 72 74 69   Sets the starti
11bd0 6e 67 20 70 6f 73 69 74 69 6f 6e 20 66 6f 72 20  ng position for 
11be0 74 68 65 20 6e 65 78 74 20 67 7a 72 65 61 64 20  the next gzread 
11bf0 6f 72 20 67 7a 77 72 69 74 65 20 6f 6e 20 74 68  or gzwrite on th
11c00 65 20 67 69 76 65 6e 0a 20 20 20 63 6f 6d 70 72  e given.   compr
11c10 65 73 73 65 64 20 66 69 6c 65 2e 20 20 54 68 65  essed file.  The
11c20 20 6f 66 66 73 65 74 20 72 65 70 72 65 73 65 6e   offset represen
11c30 74 73 20 61 20 6e 75 6d 62 65 72 20 6f 66 20 62  ts a number of b
11c40 79 74 65 73 20 69 6e 20 74 68 65 0a 20 20 20 75  ytes in the.   u
11c50 6e 63 6f 6d 70 72 65 73 73 65 64 20 64 61 74 61  ncompressed data
11c60 20 73 74 72 65 61 6d 2e 20 20 54 68 65 20 77 68   stream.  The wh
11c70 65 6e 63 65 20 70 61 72 61 6d 65 74 65 72 20 69  ence parameter i
11c80 73 20 64 65 66 69 6e 65 64 20 61 73 20 69 6e 20  s defined as in 
11c90 6c 73 65 65 6b 28 32 29 3b 0a 20 20 20 74 68 65  lseek(2);.   the
11ca0 20 76 61 6c 75 65 20 53 45 45 4b 5f 45 4e 44 20   value SEEK_END 
11cb0 69 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64  is not supported
11cc0 2e 0a 0a 20 20 20 20 20 49 66 20 74 68 65 20 66  ...     If the f
11cd0 69 6c 65 20 69 73 20 6f 70 65 6e 65 64 20 66 6f  ile is opened fo
11ce0 72 20 72 65 61 64 69 6e 67 2c 20 74 68 69 73 20  r reading, this 
11cf0 66 75 6e 63 74 69 6f 6e 20 69 73 20 65 6d 75 6c  function is emul
11d00 61 74 65 64 20 62 75 74 20 63 61 6e 20 62 65 0a  ated but can be.
11d10 20 20 20 65 78 74 72 65 6d 65 6c 79 20 73 6c 6f     extremely slo
11d20 77 2e 20 20 49 66 20 74 68 65 20 66 69 6c 65 20  w.  If the file 
11d30 69 73 20 6f 70 65 6e 65 64 20 66 6f 72 20 77 72  is opened for wr
11d40 69 74 69 6e 67 2c 20 6f 6e 6c 79 20 66 6f 72 77  iting, only forw
11d50 61 72 64 20 73 65 65 6b 73 20 61 72 65 0a 20 20  ard seeks are.  
11d60 20 73 75 70 70 6f 72 74 65 64 3b 20 67 7a 73 65   supported; gzse
11d70 65 6b 20 74 68 65 6e 20 63 6f 6d 70 72 65 73 73  ek then compress
11d80 65 73 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66  es a sequence of
11d90 20 7a 65 72 6f 65 73 20 75 70 20 74 6f 20 74 68   zeroes up to th
11da0 65 20 6e 65 77 0a 20 20 20 73 74 61 72 74 69 6e  e new.   startin
11db0 67 20 70 6f 73 69 74 69 6f 6e 2e 0a 0a 20 20 20  g position...   
11dc0 20 20 67 7a 73 65 65 6b 20 72 65 74 75 72 6e 73    gzseek returns
11dd0 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6f   the resulting o
11de0 66 66 73 65 74 20 6c 6f 63 61 74 69 6f 6e 20 61  ffset location a
11df0 73 20 6d 65 61 73 75 72 65 64 20 69 6e 20 62 79  s measured in by
11e00 74 65 73 20 66 72 6f 6d 0a 20 20 20 74 68 65 20  tes from.   the 
11e10 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65  beginning of the
11e20 20 75 6e 63 6f 6d 70 72 65 73 73 65 64 20 73 74   uncompressed st
11e30 72 65 61 6d 2c 20 6f 72 20 2d 31 20 69 6e 20 63  ream, or -1 in c
11e40 61 73 65 20 6f 66 20 65 72 72 6f 72 2c 20 69 6e  ase of error, in
11e50 0a 20 20 20 70 61 72 74 69 63 75 6c 61 72 20 69  .   particular i
11e60 66 20 74 68 65 20 66 69 6c 65 20 69 73 20 6f 70  f the file is op
11e70 65 6e 65 64 20 66 6f 72 20 77 72 69 74 69 6e 67  ened for writing
11e80 20 61 6e 64 20 74 68 65 20 6e 65 77 20 73 74 61   and the new sta
11e90 72 74 69 6e 67 20 70 6f 73 69 74 69 6f 6e 0a 20  rting position. 
11ea0 20 20 77 6f 75 6c 64 20 62 65 20 62 65 66 6f 72    would be befor
11eb0 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 6f  e the current po
11ec0 73 69 74 69 6f 6e 2e 0a 2a 2f 0a 0a 5a 45 58 54  sition..*/..ZEXT
11ed0 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20  ERN int ZEXPORT 
11ee0 20 20 20 67 7a 72 65 77 69 6e 64 20 4f 46 28 28     gzrewind OF((
11ef0 67 7a 46 69 6c 65 20 66 69 6c 65 29 29 3b 0a 2f  gzFile file));./
11f00 2a 0a 20 20 20 20 20 52 65 77 69 6e 64 73 20 74  *.     Rewinds t
11f10 68 65 20 67 69 76 65 6e 20 66 69 6c 65 2e 20 54  he given file. T
11f20 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  his function is 
11f30 73 75 70 70 6f 72 74 65 64 20 6f 6e 6c 79 20 66  supported only f
11f40 6f 72 20 72 65 61 64 69 6e 67 2e 0a 0a 20 20 20  or reading...   
11f50 20 20 67 7a 72 65 77 69 6e 64 28 66 69 6c 65 29    gzrewind(file)
11f60 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74   is equivalent t
11f70 6f 20 28 69 6e 74 29 67 7a 73 65 65 6b 28 66 69  o (int)gzseek(fi
11f80 6c 65 2c 20 30 4c 2c 20 53 45 45 4b 5f 53 45 54  le, 0L, SEEK_SET
11f90 29 0a 2a 2f 0a 0a 2f 2a 0a 5a 45 58 54 45 52 4e  ).*/../*.ZEXTERN
11fa0 20 7a 5f 6f 66 66 5f 74 20 5a 45 58 50 4f 52 54   z_off_t ZEXPORT
11fb0 20 20 20 20 67 7a 74 65 6c 6c 20 4f 46 28 28 67      gztell OF((g
11fc0 7a 46 69 6c 65 20 66 69 6c 65 29 29 3b 0a 0a 20  zFile file));.. 
11fd0 20 20 20 20 52 65 74 75 72 6e 73 20 74 68 65 20      Returns the 
11fe0 73 74 61 72 74 69 6e 67 20 70 6f 73 69 74 69 6f  starting positio
11ff0 6e 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 67  n for the next g
12000 7a 72 65 61 64 20 6f 72 20 67 7a 77 72 69 74 65  zread or gzwrite
12010 20 6f 6e 20 74 68 65 20 67 69 76 65 6e 0a 20 20   on the given.  
12020 20 63 6f 6d 70 72 65 73 73 65 64 20 66 69 6c 65   compressed file
12030 2e 20 20 54 68 69 73 20 70 6f 73 69 74 69 6f 6e  .  This position
12040 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6e 75   represents a nu
12050 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 69 6e  mber of bytes in
12060 20 74 68 65 0a 20 20 20 75 6e 63 6f 6d 70 72 65   the.   uncompre
12070 73 73 65 64 20 64 61 74 61 20 73 74 72 65 61 6d  ssed data stream
12080 2c 20 61 6e 64 20 69 73 20 7a 65 72 6f 20 77 68  , and is zero wh
12090 65 6e 20 73 74 61 72 74 69 6e 67 2c 20 65 76 65  en starting, eve
120a0 6e 20 69 66 20 61 70 70 65 6e 64 69 6e 67 20 6f  n if appending o
120b0 72 0a 20 20 20 72 65 61 64 69 6e 67 20 61 20 67  r.   reading a g
120c0 7a 69 70 20 73 74 72 65 61 6d 20 66 72 6f 6d 20  zip stream from 
120d0 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 61 20  the middle of a 
120e0 66 69 6c 65 20 75 73 69 6e 67 20 67 7a 64 6f 70  file using gzdop
120f0 65 6e 28 29 2e 0a 0a 20 20 20 20 20 67 7a 74 65  en()...     gzte
12100 6c 6c 28 66 69 6c 65 29 20 69 73 20 65 71 75 69  ll(file) is equi
12110 76 61 6c 65 6e 74 20 74 6f 20 67 7a 73 65 65 6b  valent to gzseek
12120 28 66 69 6c 65 2c 20 30 4c 2c 20 53 45 45 4b 5f  (file, 0L, SEEK_
12130 43 55 52 29 0a 2a 2f 0a 0a 2f 2a 0a 5a 45 58 54  CUR).*/../*.ZEXT
12140 45 52 4e 20 7a 5f 6f 66 66 5f 74 20 5a 45 58 50  ERN z_off_t ZEXP
12150 4f 52 54 20 67 7a 6f 66 66 73 65 74 20 4f 46 28  ORT gzoffset OF(
12160 28 67 7a 46 69 6c 65 20 66 69 6c 65 29 29 3b 0a  (gzFile file));.
12170 0a 20 20 20 20 20 52 65 74 75 72 6e 73 20 74 68  .     Returns th
12180 65 20 63 75 72 72 65 6e 74 20 6f 66 66 73 65 74  e current offset
12190 20 69 6e 20 74 68 65 20 66 69 6c 65 20 62 65 69   in the file bei
121a0 6e 67 20 72 65 61 64 20 6f 72 20 77 72 69 74 74  ng read or writt
121b0 65 6e 2e 20 20 54 68 69 73 20 6f 66 66 73 65 74  en.  This offset
121c0 0a 20 20 20 69 6e 63 6c 75 64 65 73 20 74 68 65  .   includes the
121d0 20 63 6f 75 6e 74 20 6f 66 20 62 79 74 65 73 20   count of bytes 
121e0 74 68 61 74 20 70 72 65 63 65 64 65 20 74 68 65  that precede the
121f0 20 67 7a 69 70 20 73 74 72 65 61 6d 2c 20 66 6f   gzip stream, fo
12200 72 20 65 78 61 6d 70 6c 65 20 77 68 65 6e 0a 20  r example when. 
12210 20 20 61 70 70 65 6e 64 69 6e 67 20 6f 72 20 77    appending or w
12220 68 65 6e 20 75 73 69 6e 67 20 67 7a 64 6f 70 65  hen using gzdope
12230 6e 28 29 20 66 6f 72 20 72 65 61 64 69 6e 67 2e  n() for reading.
12240 20 20 57 68 65 6e 20 72 65 61 64 69 6e 67 2c 20    When reading, 
12250 74 68 65 20 6f 66 66 73 65 74 0a 20 20 20 64 6f  the offset.   do
12260 65 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 61  es not include a
12270 73 20 79 65 74 20 75 6e 75 73 65 64 20 62 75 66  s yet unused buf
12280 66 65 72 65 64 20 69 6e 70 75 74 2e 20 20 54 68  fered input.  Th
12290 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 63  is information c
122a0 61 6e 20 62 65 20 75 73 65 64 0a 20 20 20 66 6f  an be used.   fo
122b0 72 20 61 20 70 72 6f 67 72 65 73 73 20 69 6e 64  r a progress ind
122c0 69 63 61 74 6f 72 2e 20 20 4f 6e 20 65 72 72 6f  icator.  On erro
122d0 72 2c 20 67 7a 6f 66 66 73 65 74 28 29 20 72 65  r, gzoffset() re
122e0 74 75 72 6e 73 20 2d 31 2e 0a 2a 2f 0a 0a 5a 45  turns -1..*/..ZE
122f0 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52  XTERN int ZEXPOR
12300 54 20 67 7a 65 6f 66 20 4f 46 28 28 67 7a 46 69  T gzeof OF((gzFi
12310 6c 65 20 66 69 6c 65 29 29 3b 0a 2f 2a 0a 20 20  le file));./*.  
12320 20 20 20 52 65 74 75 72 6e 73 20 74 72 75 65 20     Returns true 
12330 28 31 29 20 69 66 20 74 68 65 20 65 6e 64 2d 6f  (1) if the end-o
12340 66 2d 66 69 6c 65 20 69 6e 64 69 63 61 74 6f 72  f-file indicator
12350 20 68 61 73 20 62 65 65 6e 20 73 65 74 20 77 68   has been set wh
12360 69 6c 65 20 72 65 61 64 69 6e 67 2c 0a 20 20 20  ile reading,.   
12370 66 61 6c 73 65 20 28 30 29 20 6f 74 68 65 72 77  false (0) otherw
12380 69 73 65 2e 20 20 4e 6f 74 65 20 74 68 61 74 20  ise.  Note that 
12390 74 68 65 20 65 6e 64 2d 6f 66 2d 66 69 6c 65 20  the end-of-file 
123a0 69 6e 64 69 63 61 74 6f 72 20 69 73 20 73 65 74  indicator is set
123b0 20 6f 6e 6c 79 20 69 66 20 74 68 65 0a 20 20 20   only if the.   
123c0 72 65 61 64 20 74 72 69 65 64 20 74 6f 20 67 6f  read tried to go
123d0 20 70 61 73 74 20 74 68 65 20 65 6e 64 20 6f 66   past the end of
123e0 20 74 68 65 20 69 6e 70 75 74 2c 20 62 75 74 20   the input, but 
123f0 63 61 6d 65 20 75 70 20 73 68 6f 72 74 2e 20 20  came up short.  
12400 54 68 65 72 65 66 6f 72 65 2c 0a 20 20 20 6a 75  Therefore,.   ju
12410 73 74 20 6c 69 6b 65 20 66 65 6f 66 28 29 2c 20  st like feof(), 
12420 67 7a 65 6f 66 28 29 20 6d 61 79 20 72 65 74 75  gzeof() may retu
12430 72 6e 20 66 61 6c 73 65 20 65 76 65 6e 20 69 66  rn false even if
12440 20 74 68 65 72 65 20 69 73 20 6e 6f 20 6d 6f 72   there is no mor
12450 65 20 64 61 74 61 20 74 6f 0a 20 20 20 72 65 61  e data to.   rea
12460 64 2c 20 69 6e 20 74 68 65 20 65 76 65 6e 74 20  d, in the event 
12470 74 68 61 74 20 74 68 65 20 6c 61 73 74 20 72 65  that the last re
12480 61 64 20 72 65 71 75 65 73 74 20 77 61 73 20 66  ad request was f
12490 6f 72 20 74 68 65 20 65 78 61 63 74 20 6e 75 6d  or the exact num
124a0 62 65 72 20 6f 66 0a 20 20 20 62 79 74 65 73 20  ber of.   bytes 
124b0 72 65 6d 61 69 6e 69 6e 67 20 69 6e 20 74 68 65  remaining in the
124c0 20 69 6e 70 75 74 20 66 69 6c 65 2e 20 20 54 68   input file.  Th
124d0 69 73 20 77 69 6c 6c 20 68 61 70 70 65 6e 20 69  is will happen i
124e0 66 20 74 68 65 20 69 6e 70 75 74 20 66 69 6c 65  f the input file
124f0 20 73 69 7a 65 0a 20 20 20 69 73 20 61 6e 20 65   size.   is an e
12500 78 61 63 74 20 6d 75 6c 74 69 70 6c 65 20 6f 66  xact multiple of
12510 20 74 68 65 20 62 75 66 66 65 72 20 73 69 7a 65   the buffer size
12520 2e 0a 0a 20 20 20 20 20 49 66 20 67 7a 65 6f 66  ...     If gzeof
12530 28 29 20 72 65 74 75 72 6e 73 20 74 72 75 65 2c  () returns true,
12540 20 74 68 65 6e 20 74 68 65 20 72 65 61 64 20 66   then the read f
12550 75 6e 63 74 69 6f 6e 73 20 77 69 6c 6c 20 72 65  unctions will re
12560 74 75 72 6e 20 6e 6f 20 6d 6f 72 65 20 64 61 74  turn no more dat
12570 61 2c 0a 20 20 20 75 6e 6c 65 73 73 20 74 68 65  a,.   unless the
12580 20 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 69 6e 64   end-of-file ind
12590 69 63 61 74 6f 72 20 69 73 20 72 65 73 65 74 20  icator is reset 
125a0 62 79 20 67 7a 63 6c 65 61 72 65 72 72 28 29 20  by gzclearerr() 
125b0 61 6e 64 20 74 68 65 20 69 6e 70 75 74 20 66 69  and the input fi
125c0 6c 65 0a 20 20 20 68 61 73 20 67 72 6f 77 6e 20  le.   has grown 
125d0 73 69 6e 63 65 20 74 68 65 20 70 72 65 76 69 6f  since the previo
125e0 75 73 20 65 6e 64 20 6f 66 20 66 69 6c 65 20 77  us end of file w
125f0 61 73 20 64 65 74 65 63 74 65 64 2e 0a 2a 2f 0a  as detected..*/.
12600 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45 58  .ZEXTERN int ZEX
12610 50 4f 52 54 20 67 7a 64 69 72 65 63 74 20 4f 46  PORT gzdirect OF
12620 28 28 67 7a 46 69 6c 65 20 66 69 6c 65 29 29 3b  ((gzFile file));
12630 0a 2f 2a 0a 20 20 20 20 20 52 65 74 75 72 6e 73  ./*.     Returns
12640 20 74 72 75 65 20 28 31 29 20 69 66 20 66 69 6c   true (1) if fil
12650 65 20 69 73 20 62 65 69 6e 67 20 63 6f 70 69 65  e is being copie
12660 64 20 64 69 72 65 63 74 6c 79 20 77 68 69 6c 65  d directly while
12670 20 72 65 61 64 69 6e 67 2c 20 6f 72 20 66 61 6c   reading, or fal
12680 73 65 0a 20 20 20 28 30 29 20 69 66 20 66 69 6c  se.   (0) if fil
12690 65 20 69 73 20 61 20 67 7a 69 70 20 73 74 72 65  e is a gzip stre
126a0 61 6d 20 62 65 69 6e 67 20 64 65 63 6f 6d 70 72  am being decompr
126b0 65 73 73 65 64 2e 0a 0a 20 20 20 20 20 49 66 20  essed...     If 
126c0 74 68 65 20 69 6e 70 75 74 20 66 69 6c 65 20 69  the input file i
126d0 73 20 65 6d 70 74 79 2c 20 67 7a 64 69 72 65 63  s empty, gzdirec
126e0 74 28 29 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  t() will return 
126f0 74 72 75 65 2c 20 73 69 6e 63 65 20 74 68 65 20  true, since the 
12700 69 6e 70 75 74 0a 20 20 20 64 6f 65 73 20 6e 6f  input.   does no
12710 74 20 63 6f 6e 74 61 69 6e 20 61 20 67 7a 69 70  t contain a gzip
12720 20 73 74 72 65 61 6d 2e 0a 0a 20 20 20 20 20 49   stream...     I
12730 66 20 67 7a 64 69 72 65 63 74 28 29 20 69 73 20  f gzdirect() is 
12740 75 73 65 64 20 69 6d 6d 65 64 69 61 74 65 6c 79  used immediately
12750 20 61 66 74 65 72 20 67 7a 6f 70 65 6e 28 29 20   after gzopen() 
12760 6f 72 20 67 7a 64 6f 70 65 6e 28 29 20 69 74 20  or gzdopen() it 
12770 77 69 6c 6c 0a 20 20 20 63 61 75 73 65 20 62 75  will.   cause bu
12780 66 66 65 72 73 20 74 6f 20 62 65 20 61 6c 6c 6f  ffers to be allo
12790 63 61 74 65 64 20 74 6f 20 61 6c 6c 6f 77 20 72  cated to allow r
127a0 65 61 64 69 6e 67 20 74 68 65 20 66 69 6c 65 20  eading the file 
127b0 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20  to determine if 
127c0 69 74 0a 20 20 20 69 73 20 61 20 67 7a 69 70 20  it.   is a gzip 
127d0 66 69 6c 65 2e 20 20 54 68 65 72 65 66 6f 72 65  file.  Therefore
127e0 20 69 66 20 67 7a 62 75 66 66 65 72 28 29 20 69   if gzbuffer() i
127f0 73 20 75 73 65 64 2c 20 69 74 20 73 68 6f 75 6c  s used, it shoul
12800 64 20 62 65 20 63 61 6c 6c 65 64 20 62 65 66 6f  d be called befo
12810 72 65 0a 20 20 20 67 7a 64 69 72 65 63 74 28 29  re.   gzdirect()
12820 2e 0a 0a 20 20 20 20 20 57 68 65 6e 20 77 72 69  ...     When wri
12830 74 69 6e 67 2c 20 67 7a 64 69 72 65 63 74 28 29  ting, gzdirect()
12840 20 72 65 74 75 72 6e 73 20 74 72 75 65 20 28 31   returns true (1
12850 29 20 69 66 20 74 72 61 6e 73 70 61 72 65 6e 74  ) if transparent
12860 20 77 72 69 74 69 6e 67 20 77 61 73 0a 20 20 20   writing was.   
12870 72 65 71 75 65 73 74 65 64 20 28 22 77 54 22 20  requested ("wT" 
12880 66 6f 72 20 74 68 65 20 67 7a 6f 70 65 6e 28 29  for the gzopen()
12890 20 6d 6f 64 65 29 2c 20 6f 72 20 66 61 6c 73 65   mode), or false
128a0 20 28 30 29 20 6f 74 68 65 72 77 69 73 65 2e 20   (0) otherwise. 
128b0 20 28 4e 6f 74 65 3a 0a 20 20 20 67 7a 64 69 72   (Note:.   gzdir
128c0 65 63 74 28 29 20 69 73 20 6e 6f 74 20 6e 65 65  ect() is not nee
128d0 64 65 64 20 77 68 65 6e 20 77 72 69 74 69 6e 67  ded when writing
128e0 2e 20 20 54 72 61 6e 73 70 61 72 65 6e 74 20 77  .  Transparent w
128f0 72 69 74 69 6e 67 20 6d 75 73 74 20 62 65 0a 20  riting must be. 
12900 20 20 65 78 70 6c 69 63 69 74 6c 79 20 72 65 71    explicitly req
12910 75 65 73 74 65 64 2c 20 73 6f 20 74 68 65 20 61  uested, so the a
12920 70 70 6c 69 63 61 74 69 6f 6e 20 61 6c 72 65 61  pplication alrea
12930 64 79 20 6b 6e 6f 77 73 20 74 68 65 20 61 6e 73  dy knows the ans
12940 77 65 72 2e 20 20 57 68 65 6e 0a 20 20 20 6c 69  wer.  When.   li
12950 6e 6b 69 6e 67 20 73 74 61 74 69 63 61 6c 6c 79  nking statically
12960 2c 20 75 73 69 6e 67 20 67 7a 64 69 72 65 63 74  , using gzdirect
12970 28 29 20 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20  () will include 
12980 61 6c 6c 20 6f 66 20 74 68 65 20 7a 6c 69 62 20  all of the zlib 
12990 63 6f 64 65 20 66 6f 72 0a 20 20 20 67 7a 69 70  code for.   gzip
129a0 20 66 69 6c 65 20 72 65 61 64 69 6e 67 20 61 6e   file reading an
129b0 64 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 2c  d decompression,
129c0 20 77 68 69 63 68 20 6d 61 79 20 6e 6f 74 20 62   which may not b
129d0 65 20 64 65 73 69 72 65 64 2e 29 0a 2a 2f 0a 0a  e desired.).*/..
129e0 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50  ZEXTERN int ZEXP
129f0 4f 52 54 20 20 20 20 67 7a 63 6c 6f 73 65 20 4f  ORT    gzclose O
12a00 46 28 28 67 7a 46 69 6c 65 20 66 69 6c 65 29 29  F((gzFile file))
12a10 3b 0a 2f 2a 0a 20 20 20 20 20 46 6c 75 73 68 65  ;./*.     Flushe
12a20 73 20 61 6c 6c 20 70 65 6e 64 69 6e 67 20 6f 75  s all pending ou
12a30 74 70 75 74 20 69 66 20 6e 65 63 65 73 73 61 72  tput if necessar
12a40 79 2c 20 63 6c 6f 73 65 73 20 74 68 65 20 63 6f  y, closes the co
12a50 6d 70 72 65 73 73 65 64 20 66 69 6c 65 20 61 6e  mpressed file an
12a60 64 0a 20 20 20 64 65 61 6c 6c 6f 63 61 74 65 73  d.   deallocates
12a70 20 74 68 65 20 28 64 65 29 63 6f 6d 70 72 65 73   the (de)compres
12a80 73 69 6f 6e 20 73 74 61 74 65 2e 20 20 4e 6f 74  sion state.  Not
12a90 65 20 74 68 61 74 20 6f 6e 63 65 20 66 69 6c 65  e that once file
12aa0 20 69 73 20 63 6c 6f 73 65 64 2c 20 79 6f 75 0a   is closed, you.
12ab0 20 20 20 63 61 6e 6e 6f 74 20 63 61 6c 6c 20 67     cannot call g
12ac0 7a 65 72 72 6f 72 20 77 69 74 68 20 66 69 6c 65  zerror with file
12ad0 2c 20 73 69 6e 63 65 20 69 74 73 20 73 74 72 75  , since its stru
12ae0 63 74 75 72 65 73 20 68 61 76 65 20 62 65 65 6e  ctures have been
12af0 20 64 65 61 6c 6c 6f 63 61 74 65 64 2e 0a 20 20   deallocated..  
12b00 20 67 7a 63 6c 6f 73 65 20 6d 75 73 74 20 6e 6f   gzclose must no
12b10 74 20 62 65 20 63 61 6c 6c 65 64 20 6d 6f 72 65  t be called more
12b20 20 74 68 61 6e 20 6f 6e 63 65 20 6f 6e 20 74 68   than once on th
12b30 65 20 73 61 6d 65 20 66 69 6c 65 2c 20 6a 75 73  e same file, jus
12b40 74 20 61 73 20 66 72 65 65 0a 20 20 20 6d 75 73  t as free.   mus
12b50 74 20 6e 6f 74 20 62 65 20 63 61 6c 6c 65 64 20  t not be called 
12b60 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 63 65 20 6f  more than once o
12b70 6e 20 74 68 65 20 73 61 6d 65 20 61 6c 6c 6f 63  n the same alloc
12b80 61 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 67 7a 63  ation...     gzc
12b90 6c 6f 73 65 20 77 69 6c 6c 20 72 65 74 75 72 6e  lose will return
12ba0 20 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20   Z_STREAM_ERROR 
12bb0 69 66 20 66 69 6c 65 20 69 73 20 6e 6f 74 20 76  if file is not v
12bc0 61 6c 69 64 2c 20 5a 5f 45 52 52 4e 4f 20 6f 6e  alid, Z_ERRNO on
12bd0 20 61 0a 20 20 20 66 69 6c 65 20 6f 70 65 72 61   a.   file opera
12be0 74 69 6f 6e 20 65 72 72 6f 72 2c 20 5a 5f 4d 45  tion error, Z_ME
12bf0 4d 5f 45 52 52 4f 52 20 69 66 20 6f 75 74 20 6f  M_ERROR if out o
12c00 66 20 6d 65 6d 6f 72 79 2c 20 5a 5f 42 55 46 5f  f memory, Z_BUF_
12c10 45 52 52 4f 52 20 69 66 20 74 68 65 0a 20 20 20  ERROR if the.   
12c20 6c 61 73 74 20 72 65 61 64 20 65 6e 64 65 64 20  last read ended 
12c30 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66  in the middle of
12c40 20 61 20 67 7a 69 70 20 73 74 72 65 61 6d 2c 20   a gzip stream, 
12c50 6f 72 20 5a 5f 4f 4b 20 6f 6e 20 73 75 63 63 65  or Z_OK on succe
12c60 73 73 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20  ss..*/..ZEXTERN 
12c70 69 6e 74 20 5a 45 58 50 4f 52 54 20 67 7a 63 6c  int ZEXPORT gzcl
12c80 6f 73 65 5f 72 20 4f 46 28 28 67 7a 46 69 6c 65  ose_r OF((gzFile
12c90 20 66 69 6c 65 29 29 3b 0a 5a 45 58 54 45 52 4e   file));.ZEXTERN
12ca0 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 67 7a 63   int ZEXPORT gzc
12cb0 6c 6f 73 65 5f 77 20 4f 46 28 28 67 7a 46 69 6c  lose_w OF((gzFil
12cc0 65 20 66 69 6c 65 29 29 3b 0a 2f 2a 0a 20 20 20  e file));./*.   
12cd0 20 20 53 61 6d 65 20 61 73 20 67 7a 63 6c 6f 73    Same as gzclos
12ce0 65 28 29 2c 20 62 75 74 20 67 7a 63 6c 6f 73 65  e(), but gzclose
12cf0 5f 72 28 29 20 69 73 20 6f 6e 6c 79 20 66 6f 72  _r() is only for
12d00 20 75 73 65 20 77 68 65 6e 20 72 65 61 64 69 6e   use when readin
12d10 67 2c 20 61 6e 64 0a 20 20 20 67 7a 63 6c 6f 73  g, and.   gzclos
12d20 65 5f 77 28 29 20 69 73 20 6f 6e 6c 79 20 66 6f  e_w() is only fo
12d30 72 20 75 73 65 20 77 68 65 6e 20 77 72 69 74 69  r use when writi
12d40 6e 67 20 6f 72 20 61 70 70 65 6e 64 69 6e 67 2e  ng or appending.
12d50 20 20 54 68 65 20 61 64 76 61 6e 74 61 67 65 20    The advantage 
12d60 74 6f 0a 20 20 20 75 73 69 6e 67 20 74 68 65 73  to.   using thes
12d70 65 20 69 6e 73 74 65 61 64 20 6f 66 20 67 7a 63  e instead of gzc
12d80 6c 6f 73 65 28 29 20 69 73 20 74 68 61 74 20 74  lose() is that t
12d90 68 65 79 20 61 76 6f 69 64 20 6c 69 6e 6b 69 6e  hey avoid linkin
12da0 67 20 69 6e 20 7a 6c 69 62 0a 20 20 20 63 6f 6d  g in zlib.   com
12db0 70 72 65 73 73 69 6f 6e 20 6f 72 20 64 65 63 6f  pression or deco
12dc0 6d 70 72 65 73 73 69 6f 6e 20 63 6f 64 65 20 74  mpression code t
12dd0 68 61 74 20 69 73 20 6e 6f 74 20 75 73 65 64 20  hat is not used 
12de0 77 68 65 6e 20 6f 6e 6c 79 20 72 65 61 64 69 6e  when only readin
12df0 67 20 6f 72 20 6f 6e 6c 79 0a 20 20 20 77 72 69  g or only.   wri
12e00 74 69 6e 67 20 72 65 73 70 65 63 74 69 76 65 6c  ting respectivel
12e10 79 2e 20 20 49 66 20 67 7a 63 6c 6f 73 65 28 29  y.  If gzclose()
12e20 20 69 73 20 75 73 65 64 2c 20 74 68 65 6e 20 62   is used, then b
12e30 6f 74 68 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20  oth compression 
12e40 61 6e 64 0a 20 20 20 64 65 63 6f 6d 70 72 65 73  and.   decompres
12e50 73 69 6f 6e 20 63 6f 64 65 20 77 69 6c 6c 20 62  sion code will b
12e60 65 20 69 6e 63 6c 75 64 65 64 20 74 68 65 20 61  e included the a
12e70 70 70 6c 69 63 61 74 69 6f 6e 20 77 68 65 6e 20  pplication when 
12e80 6c 69 6e 6b 69 6e 67 20 74 6f 20 61 20 73 74 61  linking to a sta
12e90 74 69 63 0a 20 20 20 7a 6c 69 62 20 6c 69 62 72  tic.   zlib libr
12ea0 61 72 79 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e  ary..*/..ZEXTERN
12eb0 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 20 5a 45   const char * ZE
12ec0 58 50 4f 52 54 20 67 7a 65 72 72 6f 72 20 4f 46  XPORT gzerror OF
12ed0 28 28 67 7a 46 69 6c 65 20 66 69 6c 65 2c 20 69  ((gzFile file, i
12ee0 6e 74 20 2a 65 72 72 6e 75 6d 29 29 3b 0a 2f 2a  nt *errnum));./*
12ef0 0a 20 20 20 20 20 52 65 74 75 72 6e 73 20 74 68  .     Returns th
12f00 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  e error message 
12f10 66 6f 72 20 74 68 65 20 6c 61 73 74 20 65 72 72  for the last err
12f20 6f 72 20 77 68 69 63 68 20 6f 63 63 75 72 72 65  or which occurre
12f30 64 20 6f 6e 20 74 68 65 20 67 69 76 65 6e 0a 20  d on the given. 
12f40 20 20 63 6f 6d 70 72 65 73 73 65 64 20 66 69 6c    compressed fil
12f50 65 2e 20 20 65 72 72 6e 75 6d 20 69 73 20 73 65  e.  errnum is se
12f60 74 20 74 6f 20 7a 6c 69 62 20 65 72 72 6f 72 20  t to zlib error 
12f70 6e 75 6d 62 65 72 2e 20 20 49 66 20 61 6e 20 65  number.  If an e
12f80 72 72 6f 72 20 6f 63 63 75 72 72 65 64 0a 20 20  rror occurred.  
12f90 20 69 6e 20 74 68 65 20 66 69 6c 65 20 73 79 73   in the file sys
12fa0 74 65 6d 20 61 6e 64 20 6e 6f 74 20 69 6e 20 74  tem and not in t
12fb0 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c  he compression l
12fc0 69 62 72 61 72 79 2c 20 65 72 72 6e 75 6d 20 69  ibrary, errnum i
12fd0 73 20 73 65 74 20 74 6f 0a 20 20 20 5a 5f 45 52  s set to.   Z_ER
12fe0 52 4e 4f 20 61 6e 64 20 74 68 65 20 61 70 70 6c  RNO and the appl
12ff0 69 63 61 74 69 6f 6e 20 6d 61 79 20 63 6f 6e 73  ication may cons
13000 75 6c 74 20 65 72 72 6e 6f 20 74 6f 20 67 65 74  ult errno to get
13010 20 74 68 65 20 65 78 61 63 74 20 65 72 72 6f 72   the exact error
13020 20 63 6f 64 65 2e 0a 0a 20 20 20 20 20 54 68 65   code...     The
13030 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73   application mus
13040 74 20 6e 6f 74 20 6d 6f 64 69 66 79 20 74 68 65  t not modify the
13050 20 72 65 74 75 72 6e 65 64 20 73 74 72 69 6e 67   returned string
13060 2e 20 20 46 75 74 75 72 65 20 63 61 6c 6c 73 20  .  Future calls 
13070 74 6f 0a 20 20 20 74 68 69 73 20 66 75 6e 63 74  to.   this funct
13080 69 6f 6e 20 6d 61 79 20 69 6e 76 61 6c 69 64 61  ion may invalida
13090 74 65 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c  te the previousl
130a0 79 20 72 65 74 75 72 6e 65 64 20 73 74 72 69 6e  y returned strin
130b0 67 2e 20 20 49 66 20 66 69 6c 65 20 69 73 0a 20  g.  If file is. 
130c0 20 20 63 6c 6f 73 65 64 2c 20 74 68 65 6e 20 74    closed, then t
130d0 68 65 20 73 74 72 69 6e 67 20 70 72 65 76 69 6f  he string previo
130e0 75 73 6c 79 20 72 65 74 75 72 6e 65 64 20 62 79  usly returned by
130f0 20 67 7a 65 72 72 6f 72 20 77 69 6c 6c 20 6e 6f   gzerror will no
13100 20 6c 6f 6e 67 65 72 20 62 65 0a 20 20 20 61 76   longer be.   av
13110 61 69 6c 61 62 6c 65 2e 0a 0a 20 20 20 20 20 67  ailable...     g
13120 7a 65 72 72 6f 72 28 29 20 73 68 6f 75 6c 64 20  zerror() should 
13130 62 65 20 75 73 65 64 20 74 6f 20 64 69 73 74 69  be used to disti
13140 6e 67 75 69 73 68 20 65 72 72 6f 72 73 20 66 72  nguish errors fr
13150 6f 6d 20 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 66  om end-of-file f
13160 6f 72 20 74 68 6f 73 65 0a 20 20 20 66 75 6e 63  or those.   func
13170 74 69 6f 6e 73 20 61 62 6f 76 65 20 74 68 61 74  tions above that
13180 20 64 6f 20 6e 6f 74 20 64 69 73 74 69 6e 67 75   do not distingu
13190 69 73 68 20 74 68 6f 73 65 20 63 61 73 65 73 20  ish those cases 
131a0 69 6e 20 74 68 65 69 72 20 72 65 74 75 72 6e 20  in their return 
131b0 76 61 6c 75 65 73 2e 0a 2a 2f 0a 0a 5a 45 58 54  values..*/..ZEXT
131c0 45 52 4e 20 76 6f 69 64 20 5a 45 58 50 4f 52 54  ERN void ZEXPORT
131d0 20 67 7a 63 6c 65 61 72 65 72 72 20 4f 46 28 28   gzclearerr OF((
131e0 67 7a 46 69 6c 65 20 66 69 6c 65 29 29 3b 0a 2f  gzFile file));./
131f0 2a 0a 20 20 20 20 20 43 6c 65 61 72 73 20 74 68  *.     Clears th
13200 65 20 65 72 72 6f 72 20 61 6e 64 20 65 6e 64 2d  e error and end-
13210 6f 66 2d 66 69 6c 65 20 66 6c 61 67 73 20 66 6f  of-file flags fo
13220 72 20 66 69 6c 65 2e 20 20 54 68 69 73 20 69 73  r file.  This is
13230 20 61 6e 61 6c 6f 67 6f 75 73 20 74 6f 20 74 68   analogous to th
13240 65 0a 20 20 20 63 6c 65 61 72 65 72 72 28 29 20  e.   clearerr() 
13250 66 75 6e 63 74 69 6f 6e 20 69 6e 20 73 74 64 69  function in stdi
13260 6f 2e 20 20 54 68 69 73 20 69 73 20 75 73 65 66  o.  This is usef
13270 75 6c 20 66 6f 72 20 63 6f 6e 74 69 6e 75 69 6e  ul for continuin
13280 67 20 74 6f 20 72 65 61 64 20 61 20 67 7a 69 70  g to read a gzip
13290 0a 20 20 20 66 69 6c 65 20 74 68 61 74 20 69 73  .   file that is
132a0 20 62 65 69 6e 67 20 77 72 69 74 74 65 6e 20 63   being written c
132b0 6f 6e 63 75 72 72 65 6e 74 6c 79 2e 0a 2a 2f 0a  oncurrently..*/.
132c0 0a 23 65 6e 64 69 66 20 2f 2a 20 21 5a 5f 53 4f  .#endif /* !Z_SO
132d0 4c 4f 20 2a 2f 0a 0a 20 20 20 20 20 20 20 20 20  LO */..         
132e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
132f0 2a 20 63 68 65 63 6b 73 75 6d 20 66 75 6e 63 74  * checksum funct
13300 69 6f 6e 73 20 2a 2f 0a 0a 2f 2a 0a 20 20 20 20  ions */../*.    
13310 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   These functions
13320 20 61 72 65 20 6e 6f 74 20 72 65 6c 61 74 65 64   are not related
13330 20 74 6f 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20   to compression 
13340 62 75 74 20 61 72 65 20 65 78 70 6f 72 74 65 64  but are exported
13350 0a 20 20 20 61 6e 79 77 61 79 20 62 65 63 61 75  .   anyway becau
13360 73 65 20 74 68 65 79 20 6d 69 67 68 74 20 62 65  se they might be
13370 20 75 73 65 66 75 6c 20 69 6e 20 61 70 70 6c 69   useful in appli
13380 63 61 74 69 6f 6e 73 20 75 73 69 6e 67 20 74 68  cations using th
13390 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 0a 20 20  e compression.  
133a0 20 6c 69 62 72 61 72 79 2e 0a 2a 2f 0a 0a 5a 45   library..*/..ZE
133b0 58 54 45 52 4e 20 75 4c 6f 6e 67 20 5a 45 58 50  XTERN uLong ZEXP
133c0 4f 52 54 20 61 64 6c 65 72 33 32 20 4f 46 28 28  ORT adler32 OF((
133d0 75 4c 6f 6e 67 20 61 64 6c 65 72 2c 20 63 6f 6e  uLong adler, con
133e0 73 74 20 42 79 74 65 66 20 2a 62 75 66 2c 20 75  st Bytef *buf, u
133f0 49 6e 74 20 6c 65 6e 29 29 3b 0a 2f 2a 0a 20 20  Int len));./*.  
13400 20 20 20 55 70 64 61 74 65 20 61 20 72 75 6e 6e     Update a runn
13410 69 6e 67 20 41 64 6c 65 72 2d 33 32 20 63 68 65  ing Adler-32 che
13420 63 6b 73 75 6d 20 77 69 74 68 20 74 68 65 20 62  cksum with the b
13430 79 74 65 73 20 62 75 66 5b 30 2e 2e 6c 65 6e 2d  ytes buf[0..len-
13440 31 5d 20 61 6e 64 0a 20 20 20 72 65 74 75 72 6e  1] and.   return
13450 20 74 68 65 20 75 70 64 61 74 65 64 20 63 68 65   the updated che
13460 63 6b 73 75 6d 2e 20 20 49 66 20 62 75 66 20 69  cksum.  If buf i
13470 73 20 5a 5f 4e 55 4c 4c 2c 20 74 68 69 73 20 66  s Z_NULL, this f
13480 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
13490 74 68 65 0a 20 20 20 72 65 71 75 69 72 65 64 20  the.   required 
134a0 69 6e 69 74 69 61 6c 20 76 61 6c 75 65 20 66 6f  initial value fo
134b0 72 20 74 68 65 20 63 68 65 63 6b 73 75 6d 2e 0a  r the checksum..
134c0 0a 20 20 20 20 20 41 6e 20 41 64 6c 65 72 2d 33  .     An Adler-3
134d0 32 20 63 68 65 63 6b 73 75 6d 20 69 73 20 61 6c  2 checksum is al
134e0 6d 6f 73 74 20 61 73 20 72 65 6c 69 61 62 6c 65  most as reliable
134f0 20 61 73 20 61 20 43 52 43 33 32 20 62 75 74 20   as a CRC32 but 
13500 63 61 6e 20 62 65 20 63 6f 6d 70 75 74 65 64 0a  can be computed.
13510 20 20 20 6d 75 63 68 20 66 61 73 74 65 72 2e 0a     much faster..
13520 0a 20 20 20 55 73 61 67 65 20 65 78 61 6d 70 6c  .   Usage exampl
13530 65 3a 0a 0a 20 20 20 20 20 75 4c 6f 6e 67 20 61  e:..     uLong a
13540 64 6c 65 72 20 3d 20 61 64 6c 65 72 33 32 28 30  dler = adler32(0
13550 4c 2c 20 5a 5f 4e 55 4c 4c 2c 20 30 29 3b 0a 0a  L, Z_NULL, 0);..
13560 20 20 20 20 20 77 68 69 6c 65 20 28 72 65 61 64       while (read
13570 5f 62 75 66 66 65 72 28 62 75 66 66 65 72 2c 20  _buffer(buffer, 
13580 6c 65 6e 67 74 68 29 20 21 3d 20 45 4f 46 29 20  length) != EOF) 
13590 7b 0a 20 20 20 20 20 20 20 61 64 6c 65 72 20 3d  {.       adler =
135a0 20 61 64 6c 65 72 33 32 28 61 64 6c 65 72 2c 20   adler32(adler, 
135b0 62 75 66 66 65 72 2c 20 6c 65 6e 67 74 68 29 3b  buffer, length);
135c0 0a 20 20 20 20 20 7d 0a 20 20 20 20 20 69 66 20  .     }.     if 
135d0 28 61 64 6c 65 72 20 21 3d 20 6f 72 69 67 69 6e  (adler != origin
135e0 61 6c 5f 61 64 6c 65 72 29 20 65 72 72 6f 72 28  al_adler) error(
135f0 29 3b 0a 2a 2f 0a 0a 2f 2a 0a 5a 45 58 54 45 52  );.*/../*.ZEXTER
13600 4e 20 75 4c 6f 6e 67 20 5a 45 58 50 4f 52 54 20  N uLong ZEXPORT 
13610 61 64 6c 65 72 33 32 5f 63 6f 6d 62 69 6e 65 20  adler32_combine 
13620 4f 46 28 28 75 4c 6f 6e 67 20 61 64 6c 65 72 31  OF((uLong adler1
13630 2c 20 75 4c 6f 6e 67 20 61 64 6c 65 72 32 2c 0a  , uLong adler2,.
13640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13660 20 20 20 20 20 20 20 20 20 20 7a 5f 6f 66 66 5f            z_off_
13670 74 20 6c 65 6e 32 29 29 3b 0a 0a 20 20 20 20 20  t len2));..     
13680 43 6f 6d 62 69 6e 65 20 74 77 6f 20 41 64 6c 65  Combine two Adle
13690 72 2d 33 32 20 63 68 65 63 6b 73 75 6d 73 20 69  r-32 checksums i
136a0 6e 74 6f 20 6f 6e 65 2e 20 20 46 6f 72 20 74 77  nto one.  For tw
136b0 6f 20 73 65 71 75 65 6e 63 65 73 20 6f 66 20 62  o sequences of b
136c0 79 74 65 73 2c 20 73 65 71 31 0a 20 20 20 61 6e  ytes, seq1.   an
136d0 64 20 73 65 71 32 20 77 69 74 68 20 6c 65 6e 67  d seq2 with leng
136e0 74 68 73 20 6c 65 6e 31 20 61 6e 64 20 6c 65 6e  ths len1 and len
136f0 32 2c 20 41 64 6c 65 72 2d 33 32 20 63 68 65 63  2, Adler-32 chec
13700 6b 73 75 6d 73 20 77 65 72 65 20 63 61 6c 63 75  ksums were calcu
13710 6c 61 74 65 64 20 66 6f 72 0a 20 20 20 65 61 63  lated for.   eac
13720 68 2c 20 61 64 6c 65 72 31 20 61 6e 64 20 61 64  h, adler1 and ad
13730 6c 65 72 32 2e 20 20 61 64 6c 65 72 33 32 5f 63  ler2.  adler32_c
13740 6f 6d 62 69 6e 65 28 29 20 72 65 74 75 72 6e 73  ombine() returns
13750 20 74 68 65 20 41 64 6c 65 72 2d 33 32 20 63 68   the Adler-32 ch
13760 65 63 6b 73 75 6d 20 6f 66 0a 20 20 20 73 65 71  ecksum of.   seq
13770 31 20 61 6e 64 20 73 65 71 32 20 63 6f 6e 63 61  1 and seq2 conca
13780 74 65 6e 61 74 65 64 2c 20 72 65 71 75 69 72 69  tenated, requiri
13790 6e 67 20 6f 6e 6c 79 20 61 64 6c 65 72 31 2c 20  ng only adler1, 
137a0 61 64 6c 65 72 32 2c 20 61 6e 64 20 6c 65 6e 32  adler2, and len2
137b0 2e 20 20 4e 6f 74 65 0a 20 20 20 74 68 61 74 20  .  Note.   that 
137c0 74 68 65 20 7a 5f 6f 66 66 5f 74 20 74 79 70 65  the z_off_t type
137d0 20 28 6c 69 6b 65 20 6f 66 66 5f 74 29 20 69 73   (like off_t) is
137e0 20 61 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65   a signed intege
137f0 72 2e 20 20 49 66 20 6c 65 6e 32 20 69 73 0a 20  r.  If len2 is. 
13800 20 20 6e 65 67 61 74 69 76 65 2c 20 74 68 65 20    negative, the 
13810 72 65 73 75 6c 74 20 68 61 73 20 6e 6f 20 6d 65  result has no me
13820 61 6e 69 6e 67 20 6f 72 20 75 74 69 6c 69 74 79  aning or utility
13830 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 75 4c  ..*/..ZEXTERN uL
13840 6f 6e 67 20 5a 45 58 50 4f 52 54 20 63 72 63 33  ong ZEXPORT crc3
13850 32 20 20 20 4f 46 28 28 75 4c 6f 6e 67 20 63 72  2   OF((uLong cr
13860 63 2c 20 63 6f 6e 73 74 20 42 79 74 65 66 20 2a  c, const Bytef *
13870 62 75 66 2c 20 75 49 6e 74 20 6c 65 6e 29 29 3b  buf, uInt len));
13880 0a 2f 2a 0a 20 20 20 20 20 55 70 64 61 74 65 20  ./*.     Update 
13890 61 20 72 75 6e 6e 69 6e 67 20 43 52 43 2d 33 32  a running CRC-32
138a0 20 77 69 74 68 20 74 68 65 20 62 79 74 65 73 20   with the bytes 
138b0 62 75 66 5b 30 2e 2e 6c 65 6e 2d 31 5d 20 61 6e  buf[0..len-1] an
138c0 64 20 72 65 74 75 72 6e 20 74 68 65 0a 20 20 20  d return the.   
138d0 75 70 64 61 74 65 64 20 43 52 43 2d 33 32 2e 20  updated CRC-32. 
138e0 20 49 66 20 62 75 66 20 69 73 20 5a 5f 4e 55 4c   If buf is Z_NUL
138f0 4c 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  L, this function
13900 20 72 65 74 75 72 6e 73 20 74 68 65 20 72 65 71   returns the req
13910 75 69 72 65 64 0a 20 20 20 69 6e 69 74 69 61 6c  uired.   initial
13920 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20 63   value for the c
13930 72 63 2e 20 20 50 72 65 2d 20 61 6e 64 20 70 6f  rc.  Pre- and po
13940 73 74 2d 63 6f 6e 64 69 74 69 6f 6e 69 6e 67 20  st-conditioning 
13950 28 6f 6e 65 27 73 20 63 6f 6d 70 6c 65 6d 65 6e  (one's complemen
13960 74 29 20 69 73 0a 20 20 20 70 65 72 66 6f 72 6d  t) is.   perform
13970 65 64 20 77 69 74 68 69 6e 20 74 68 69 73 20 66  ed within this f
13980 75 6e 63 74 69 6f 6e 20 73 6f 20 69 74 20 73 68  unction so it sh
13990 6f 75 6c 64 6e 27 74 20 62 65 20 64 6f 6e 65 20  ouldn't be done 
139a0 62 79 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  by the applicati
139b0 6f 6e 2e 0a 0a 20 20 20 55 73 61 67 65 20 65 78  on...   Usage ex
139c0 61 6d 70 6c 65 3a 0a 0a 20 20 20 20 20 75 4c 6f  ample:..     uLo
139d0 6e 67 20 63 72 63 20 3d 20 63 72 63 33 32 28 30  ng crc = crc32(0
139e0 4c 2c 20 5a 5f 4e 55 4c 4c 2c 20 30 29 3b 0a 0a  L, Z_NULL, 0);..
139f0 20 20 20 20 20 77 68 69 6c 65 20 28 72 65 61 64       while (read
13a00 5f 62 75 66 66 65 72 28 62 75 66 66 65 72 2c 20  _buffer(buffer, 
13a10 6c 65 6e 67 74 68 29 20 21 3d 20 45 4f 46 29 20  length) != EOF) 
13a20 7b 0a 20 20 20 20 20 20 20 63 72 63 20 3d 20 63  {.       crc = c
13a30 72 63 33 32 28 63 72 63 2c 20 62 75 66 66 65 72  rc32(crc, buffer
13a40 2c 20 6c 65 6e 67 74 68 29 3b 0a 20 20 20 20 20  , length);.     
13a50 7d 0a 20 20 20 20 20 69 66 20 28 63 72 63 20 21  }.     if (crc !
13a60 3d 20 6f 72 69 67 69 6e 61 6c 5f 63 72 63 29 20  = original_crc) 
13a70 65 72 72 6f 72 28 29 3b 0a 2a 2f 0a 0a 2f 2a 0a  error();.*/../*.
13a80 5a 45 58 54 45 52 4e 20 75 4c 6f 6e 67 20 5a 45  ZEXTERN uLong ZE
13a90 58 50 4f 52 54 20 63 72 63 33 32 5f 63 6f 6d 62  XPORT crc32_comb
13aa0 69 6e 65 20 4f 46 28 28 75 4c 6f 6e 67 20 63 72  ine OF((uLong cr
13ab0 63 31 2c 20 75 4c 6f 6e 67 20 63 72 63 32 2c 20  c1, uLong crc2, 
13ac0 7a 5f 6f 66 66 5f 74 20 6c 65 6e 32 29 29 3b 0a  z_off_t len2));.
13ad0 0a 20 20 20 20 20 43 6f 6d 62 69 6e 65 20 74 77  .     Combine tw
13ae0 6f 20 43 52 43 2d 33 32 20 63 68 65 63 6b 20 76  o CRC-32 check v
13af0 61 6c 75 65 73 20 69 6e 74 6f 20 6f 6e 65 2e 20  alues into one. 
13b00 20 46 6f 72 20 74 77 6f 20 73 65 71 75 65 6e 63   For two sequenc
13b10 65 73 20 6f 66 20 62 79 74 65 73 2c 0a 20 20 20  es of bytes,.   
13b20 73 65 71 31 20 61 6e 64 20 73 65 71 32 20 77 69  seq1 and seq2 wi
13b30 74 68 20 6c 65 6e 67 74 68 73 20 6c 65 6e 31 20  th lengths len1 
13b40 61 6e 64 20 6c 65 6e 32 2c 20 43 52 43 2d 33 32  and len2, CRC-32
13b50 20 63 68 65 63 6b 20 76 61 6c 75 65 73 20 77 65   check values we
13b60 72 65 0a 20 20 20 63 61 6c 63 75 6c 61 74 65 64  re.   calculated
13b70 20 66 6f 72 20 65 61 63 68 2c 20 63 72 63 31 20   for each, crc1 
13b80 61 6e 64 20 63 72 63 32 2e 20 20 63 72 63 33 32  and crc2.  crc32
13b90 5f 63 6f 6d 62 69 6e 65 28 29 20 72 65 74 75 72  _combine() retur
13ba0 6e 73 20 74 68 65 20 43 52 43 2d 33 32 0a 20 20  ns the CRC-32.  
13bb0 20 63 68 65 63 6b 20 76 61 6c 75 65 20 6f 66 20   check value of 
13bc0 73 65 71 31 20 61 6e 64 20 73 65 71 32 20 63 6f  seq1 and seq2 co
13bd0 6e 63 61 74 65 6e 61 74 65 64 2c 20 72 65 71 75  ncatenated, requ
13be0 69 72 69 6e 67 20 6f 6e 6c 79 20 63 72 63 31 2c  iring only crc1,
13bf0 20 63 72 63 32 2c 20 61 6e 64 0a 20 20 20 6c 65   crc2, and.   le
13c00 6e 32 2e 0a 2a 2f 0a 0a 0a 20 20 20 20 20 20 20  n2..*/...       
13c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c20 20 2f 2a 20 76 61 72 69 6f 75 73 20 68 61 63 6b   /* various hack
13c30 73 2c 20 64 6f 6e 27 74 20 6c 6f 6f 6b 20 3a 29  s, don't look :)
13c40 20 2a 2f 0a 0a 2f 2a 20 64 65 66 6c 61 74 65 49   */../* deflateI
13c50 6e 69 74 20 61 6e 64 20 69 6e 66 6c 61 74 65 49  nit and inflateI
13c60 6e 69 74 20 61 72 65 20 6d 61 63 72 6f 73 20 74  nit are macros t
13c70 6f 20 61 6c 6c 6f 77 20 63 68 65 63 6b 69 6e 67  o allow checking
13c80 20 74 68 65 20 7a 6c 69 62 20 76 65 72 73 69 6f   the zlib versio
13c90 6e 0a 20 2a 20 61 6e 64 20 74 68 65 20 63 6f 6d  n. * and the com
13ca0 70 69 6c 65 72 27 73 20 76 69 65 77 20 6f 66 20  piler's view of 
13cb0 7a 5f 73 74 72 65 61 6d 3a 0a 20 2a 2f 0a 5a 45  z_stream:. */.ZE
13cc0 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52  XTERN int ZEXPOR
13cd0 54 20 64 65 66 6c 61 74 65 49 6e 69 74 5f 20 4f  T deflateInit_ O
13ce0 46 28 28 7a 5f 73 74 72 65 61 6d 70 20 73 74 72  F((z_streamp str
13cf0 6d 2c 20 69 6e 74 20 6c 65 76 65 6c 2c 0a 20 20  m, int level,.  
13d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 76     const char *v
13d30 65 72 73 69 6f 6e 2c 20 69 6e 74 20 73 74 72 65  ersion, int stre
13d40 61 6d 5f 73 69 7a 65 29 29 3b 0a 5a 45 58 54 45  am_size));.ZEXTE
13d50 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 69  RN int ZEXPORT i
13d60 6e 66 6c 61 74 65 49 6e 69 74 5f 20 4f 46 28 28  nflateInit_ OF((
13d70 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 2c 0a  z_streamp strm,.
13d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13da0 20 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20       const char 
13db0 2a 76 65 72 73 69 6f 6e 2c 20 69 6e 74 20 73 74  *version, int st
13dc0 72 65 61 6d 5f 73 69 7a 65 29 29 3b 0a 5a 45 58  ream_size));.ZEX
13dd0 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54  TERN int ZEXPORT
13de0 20 64 65 66 6c 61 74 65 49 6e 69 74 32 5f 20 4f   deflateInit2_ O
13df0 46 28 28 7a 5f 73 74 72 65 61 6d 70 20 73 74 72  F((z_streamp str
13e00 6d 2c 20 69 6e 74 20 20 6c 65 76 65 6c 2c 20 69  m, int  level, i
13e10 6e 74 20 20 6d 65 74 68 6f 64 2c 0a 20 20 20 20  nt  method,.    
13e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e40 20 20 69 6e 74 20 77 69 6e 64 6f 77 42 69 74 73    int windowBits
13e50 2c 20 69 6e 74 20 6d 65 6d 4c 65 76 65 6c 2c 0a  , int memLevel,.
13e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e80 20 20 20 20 20 20 69 6e 74 20 73 74 72 61 74 65        int strate
13e90 67 79 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  gy, const char *
13ea0 76 65 72 73 69 6f 6e 2c 0a 20 20 20 20 20 20 20  version,.       
13eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
13ed0 6e 74 20 73 74 72 65 61 6d 5f 73 69 7a 65 29 29  nt stream_size))
13ee0 3b 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45  ;.ZEXTERN int ZE
13ef0 58 50 4f 52 54 20 69 6e 66 6c 61 74 65 49 6e 69  XPORT inflateIni
13f00 74 32 5f 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d  t2_ OF((z_stream
13f10 70 20 73 74 72 6d 2c 20 69 6e 74 20 20 77 69 6e  p strm, int  win
13f20 64 6f 77 42 69 74 73 2c 0a 20 20 20 20 20 20 20  dowBits,.       
13f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
13f50 6f 6e 73 74 20 63 68 61 72 20 2a 76 65 72 73 69  onst char *versi
13f60 6f 6e 2c 20 69 6e 74 20 73 74 72 65 61 6d 5f 73  on, int stream_s
13f70 69 7a 65 29 29 3b 0a 5a 45 58 54 45 52 4e 20 69  ize));.ZEXTERN i
13f80 6e 74 20 5a 45 58 50 4f 52 54 20 69 6e 66 6c 61  nt ZEXPORT infla
13f90 74 65 42 61 63 6b 49 6e 69 74 5f 20 4f 46 28 28  teBackInit_ OF((
13fa0 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 2c 20  z_streamp strm, 
13fb0 69 6e 74 20 77 69 6e 64 6f 77 42 69 74 73 2c 0a  int windowBits,.
13fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13fe0 20 20 20 20 20 20 20 20 20 75 6e 73 69 67 6e 65           unsigne
13ff0 64 20 63 68 61 72 20 46 41 52 20 2a 77 69 6e 64  d char FAR *wind
14000 6f 77 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  ow,.            
14010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14020 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
14030 73 74 20 63 68 61 72 20 2a 76 65 72 73 69 6f 6e  st char *version
14040 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
14050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14060 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
14070 74 72 65 61 6d 5f 73 69 7a 65 29 29 3b 0a 23 64  tream_size));.#d
14080 65 66 69 6e 65 20 64 65 66 6c 61 74 65 49 6e 69  efine deflateIni
14090 74 28 73 74 72 6d 2c 20 6c 65 76 65 6c 29 20 5c  t(strm, level) \
140a0 0a 20 20 20 20 20 20 20 20 64 65 66 6c 61 74 65  .        deflate
140b0 49 6e 69 74 5f 28 28 73 74 72 6d 29 2c 20 28 6c  Init_((strm), (l
140c0 65 76 65 6c 29 2c 20 5a 4c 49 42 5f 56 45 52 53  evel), ZLIB_VERS
140d0 49 4f 4e 2c 20 28 69 6e 74 29 73 69 7a 65 6f 66  ION, (int)sizeof
140e0 28 7a 5f 73 74 72 65 61 6d 29 29 0a 23 64 65 66  (z_stream)).#def
140f0 69 6e 65 20 69 6e 66 6c 61 74 65 49 6e 69 74 28  ine inflateInit(
14100 73 74 72 6d 29 20 5c 0a 20 20 20 20 20 20 20 20  strm) \.        
14110 69 6e 66 6c 61 74 65 49 6e 69 74 5f 28 28 73 74  inflateInit_((st
14120 72 6d 29 2c 20 5a 4c 49 42 5f 56 45 52 53 49 4f  rm), ZLIB_VERSIO
14130 4e 2c 20 28 69 6e 74 29 73 69 7a 65 6f 66 28 7a  N, (int)sizeof(z
14140 5f 73 74 72 65 61 6d 29 29 0a 23 64 65 66 69 6e  _stream)).#defin
14150 65 20 64 65 66 6c 61 74 65 49 6e 69 74 32 28 73  e deflateInit2(s
14160 74 72 6d 2c 20 6c 65 76 65 6c 2c 20 6d 65 74 68  trm, level, meth
14170 6f 64 2c 20 77 69 6e 64 6f 77 42 69 74 73 2c 20  od, windowBits, 
14180 6d 65 6d 4c 65 76 65 6c 2c 20 73 74 72 61 74 65  memLevel, strate
14190 67 79 29 20 5c 0a 20 20 20 20 20 20 20 20 64 65  gy) \.        de
141a0 66 6c 61 74 65 49 6e 69 74 32 5f 28 28 73 74 72  flateInit2_((str
141b0 6d 29 2c 28 6c 65 76 65 6c 29 2c 28 6d 65 74 68  m),(level),(meth
141c0 6f 64 29 2c 28 77 69 6e 64 6f 77 42 69 74 73 29  od),(windowBits)
141d0 2c 28 6d 65 6d 4c 65 76 65 6c 29 2c 5c 0a 20 20  ,(memLevel),\.  
141e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
141f0 20 20 20 20 28 73 74 72 61 74 65 67 79 29 2c 20      (strategy), 
14200 5a 4c 49 42 5f 56 45 52 53 49 4f 4e 2c 20 28 69  ZLIB_VERSION, (i
14210 6e 74 29 73 69 7a 65 6f 66 28 7a 5f 73 74 72 65  nt)sizeof(z_stre
14220 61 6d 29 29 0a 23 64 65 66 69 6e 65 20 69 6e 66  am)).#define inf
14230 6c 61 74 65 49 6e 69 74 32 28 73 74 72 6d 2c 20  lateInit2(strm, 
14240 77 69 6e 64 6f 77 42 69 74 73 29 20 5c 0a 20 20  windowBits) \.  
14250 20 20 20 20 20 20 69 6e 66 6c 61 74 65 49 6e 69        inflateIni
14260 74 32 5f 28 28 73 74 72 6d 29 2c 20 28 77 69 6e  t2_((strm), (win
14270 64 6f 77 42 69 74 73 29 2c 20 5a 4c 49 42 5f 56  dowBits), ZLIB_V
14280 45 52 53 49 4f 4e 2c 20 5c 0a 20 20 20 20 20 20  ERSION, \.      
14290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
142a0 28 69 6e 74 29 73 69 7a 65 6f 66 28 7a 5f 73 74  (int)sizeof(z_st
142b0 72 65 61 6d 29 29 0a 23 64 65 66 69 6e 65 20 69  ream)).#define i
142c0 6e 66 6c 61 74 65 42 61 63 6b 49 6e 69 74 28 73  nflateBackInit(s
142d0 74 72 6d 2c 20 77 69 6e 64 6f 77 42 69 74 73 2c  trm, windowBits,
142e0 20 77 69 6e 64 6f 77 29 20 5c 0a 20 20 20 20 20   window) \.     
142f0 20 20 20 69 6e 66 6c 61 74 65 42 61 63 6b 49 6e     inflateBackIn
14300 69 74 5f 28 28 73 74 72 6d 29 2c 20 28 77 69 6e  it_((strm), (win
14310 64 6f 77 42 69 74 73 29 2c 20 28 77 69 6e 64 6f  dowBits), (windo
14320 77 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20  w), \.          
14330 20 20 20 20 20 20 20 20 20 20 20 20 5a 4c 49 42              ZLIB
14340 5f 56 45 52 53 49 4f 4e 2c 20 28 69 6e 74 29 73  _VERSION, (int)s
14350 69 7a 65 6f 66 28 7a 5f 73 74 72 65 61 6d 29 29  izeof(z_stream))
14360 0a 0a 23 69 66 6e 64 65 66 20 5a 5f 53 4f 4c 4f  ..#ifndef Z_SOLO
14370 0a 0a 2f 2a 20 67 7a 67 65 74 63 28 29 20 6d 61  ../* gzgetc() ma
14380 63 72 6f 20 61 6e 64 20 69 74 73 20 73 75 70 70  cro and its supp
14390 6f 72 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20  orting function 
143a0 61 6e 64 20 65 78 70 6f 73 65 64 20 64 61 74 61  and exposed data
143b0 20 73 74 72 75 63 74 75 72 65 2e 20 20 4e 6f 74   structure.  Not
143c0 65 0a 20 2a 20 74 68 61 74 20 74 68 65 20 72 65  e. * that the re
143d0 61 6c 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  al internal stat
143e0 65 20 69 73 20 6d 75 63 68 20 6c 61 72 67 65 72  e is much larger
143f0 20 74 68 61 6e 20 74 68 65 20 65 78 70 6f 73 65   than the expose
14400 64 20 73 74 72 75 63 74 75 72 65 2e 0a 20 2a 20  d structure.. * 
14410 54 68 69 73 20 61 62 62 72 65 76 69 61 74 65 64  This abbreviated
14420 20 73 74 72 75 63 74 75 72 65 20 65 78 70 6f 73   structure expos
14430 65 73 20 6a 75 73 74 20 65 6e 6f 75 67 68 20 66  es just enough f
14440 6f 72 20 74 68 65 20 67 7a 67 65 74 63 28 29 20  or the gzgetc() 
14450 6d 61 63 72 6f 2e 20 20 54 68 65 0a 20 2a 20 75  macro.  The. * u
14460 73 65 72 20 73 68 6f 75 6c 64 20 6e 6f 74 20 6d  ser should not m
14470 65 73 73 20 77 69 74 68 20 74 68 65 73 65 20 65  ess with these e
14480 78 70 6f 73 65 64 20 65 6c 65 6d 65 6e 74 73 2c  xposed elements,
14490 20 73 69 6e 63 65 20 74 68 65 69 72 20 6e 61 6d   since their nam
144a0 65 73 20 6f 72 0a 20 2a 20 62 65 68 61 76 69 6f  es or. * behavio
144b0 72 20 63 6f 75 6c 64 20 63 68 61 6e 67 65 20 69  r could change i
144c0 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 70 65  n the future, pe
144d0 72 68 61 70 73 20 65 76 65 6e 20 63 61 70 72 69  rhaps even capri
144e0 63 69 6f 75 73 6c 79 2e 20 20 54 68 65 79 20 63  ciously.  They c
144f0 61 6e 0a 20 2a 20 6f 6e 6c 79 20 62 65 20 75 73  an. * only be us
14500 65 64 20 62 79 20 74 68 65 20 67 7a 67 65 74 63  ed by the gzgetc
14510 28 29 20 6d 61 63 72 6f 2e 20 20 59 6f 75 20 68  () macro.  You h
14520 61 76 65 20 62 65 65 6e 20 77 61 72 6e 65 64 2e  ave been warned.
14530 0a 20 2a 2f 0a 73 74 72 75 63 74 20 67 7a 46 69  . */.struct gzFi
14540 6c 65 5f 73 20 7b 0a 20 20 20 20 75 6e 73 69 67  le_s {.    unsig
14550 6e 65 64 20 68 61 76 65 3b 0a 20 20 20 20 75 6e  ned have;.    un
14560 73 69 67 6e 65 64 20 63 68 61 72 20 2a 6e 65 78  signed char *nex
14570 74 3b 0a 20 20 20 20 7a 5f 6f 66 66 36 34 5f 74  t;.    z_off64_t
14580 20 70 6f 73 3b 0a 7d 3b 0a 5a 45 58 54 45 52 4e   pos;.};.ZEXTERN
14590 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 67 7a 67   int ZEXPORT gzg
145a0 65 74 63 5f 20 4f 46 28 28 67 7a 46 69 6c 65 20  etc_ OF((gzFile 
145b0 66 69 6c 65 29 29 3b 20 20 2f 2a 20 62 61 63 6b  file));  /* back
145c0 77 61 72 64 20 63 6f 6d 70 61 74 69 62 69 6c 69  ward compatibili
145d0 74 79 20 2a 2f 0a 23 69 66 64 65 66 20 5a 5f 50  ty */.#ifdef Z_P
145e0 52 45 46 49 58 5f 53 45 54 0a 23 20 20 75 6e 64  REFIX_SET.#  und
145f0 65 66 20 7a 5f 67 7a 67 65 74 63 0a 23 20 20 64  ef z_gzgetc.#  d
14600 65 66 69 6e 65 20 7a 5f 67 7a 67 65 74 63 28 67  efine z_gzgetc(g
14610 29 20 5c 0a 20 20 20 20 20 20 20 20 20 20 28 28  ) \.          ((
14620 67 29 2d 3e 68 61 76 65 20 3f 20 28 28 67 29 2d  g)->have ? ((g)-
14630 3e 68 61 76 65 2d 2d 2c 20 28 67 29 2d 3e 70 6f  >have--, (g)->po
14640 73 2b 2b 2c 20 2a 28 28 67 29 2d 3e 6e 65 78 74  s++, *((g)->next
14650 29 2b 2b 29 20 3a 20 67 7a 67 65 74 63 28 67 29  )++) : gzgetc(g)
14660 29 0a 23 65 6c 73 65 0a 23 20 20 64 65 66 69 6e  ).#else.#  defin
14670 65 20 67 7a 67 65 74 63 28 67 29 20 5c 0a 20 20  e gzgetc(g) \.  
14680 20 20 20 20 20 20 20 20 28 28 67 29 2d 3e 68 61          ((g)->ha
14690 76 65 20 3f 20 28 28 67 29 2d 3e 68 61 76 65 2d  ve ? ((g)->have-
146a0 2d 2c 20 28 67 29 2d 3e 70 6f 73 2b 2b 2c 20 2a  -, (g)->pos++, *
146b0 28 28 67 29 2d 3e 6e 65 78 74 29 2b 2b 29 20 3a  ((g)->next)++) :
146c0 20 67 7a 67 65 74 63 28 67 29 29 0a 23 65 6e 64   gzgetc(g)).#end
146d0 69 66 0a 0a 2f 2a 20 70 72 6f 76 69 64 65 20 36  if../* provide 6
146e0 34 2d 62 69 74 20 6f 66 66 73 65 74 20 66 75 6e  4-bit offset fun
146f0 63 74 69 6f 6e 73 20 69 66 20 5f 4c 41 52 47 45  ctions if _LARGE
14700 46 49 4c 45 36 34 5f 53 4f 55 52 43 45 20 64 65  FILE64_SOURCE de
14710 66 69 6e 65 64 2c 20 61 6e 64 2f 6f 72 0a 20 2a  fined, and/or. *
14720 20 63 68 61 6e 67 65 20 74 68 65 20 72 65 67 75   change the regu
14730 6c 61 72 20 66 75 6e 63 74 69 6f 6e 73 20 74 6f  lar functions to
14740 20 36 34 20 62 69 74 73 20 69 66 20 5f 46 49 4c   64 bits if _FIL
14750 45 5f 4f 46 46 53 45 54 5f 42 49 54 53 20 69 73  E_OFFSET_BITS is
14760 20 36 34 20 28 69 66 0a 20 2a 20 62 6f 74 68 20   64 (if. * both 
14770 61 72 65 20 74 72 75 65 2c 20 74 68 65 20 61 70  are true, the ap
14780 70 6c 69 63 61 74 69 6f 6e 20 67 65 74 73 20 74  plication gets t
14790 68 65 20 2a 36 34 20 66 75 6e 63 74 69 6f 6e 73  he *64 functions
147a0 2c 20 61 6e 64 20 74 68 65 20 72 65 67 75 6c 61  , and the regula
147b0 72 0a 20 2a 20 66 75 6e 63 74 69 6f 6e 73 20 61  r. * functions a
147c0 72 65 20 63 68 61 6e 67 65 64 20 74 6f 20 36 34  re changed to 64
147d0 20 62 69 74 73 29 20 2d 2d 20 69 6e 20 63 61 73   bits) -- in cas
147e0 65 20 74 68 65 73 65 20 61 72 65 20 73 65 74 20  e these are set 
147f0 6f 6e 20 73 79 73 74 65 6d 73 0a 20 2a 20 77 69  on systems. * wi
14800 74 68 6f 75 74 20 6c 61 72 67 65 20 66 69 6c 65  thout large file
14810 20 73 75 70 70 6f 72 74 2c 20 5f 4c 46 53 36 34   support, _LFS64
14820 5f 4c 41 52 47 45 46 49 4c 45 20 6d 75 73 74 20  _LARGEFILE must 
14830 61 6c 73 6f 20 62 65 20 74 72 75 65 0a 20 2a 2f  also be true. */
14840 0a 23 69 66 64 65 66 20 5a 5f 4c 41 52 47 45 36  .#ifdef Z_LARGE6
14850 34 0a 20 20 20 5a 45 58 54 45 52 4e 20 67 7a 46  4.   ZEXTERN gzF
14860 69 6c 65 20 5a 45 58 50 4f 52 54 20 67 7a 6f 70  ile ZEXPORT gzop
14870 65 6e 36 34 20 4f 46 28 28 63 6f 6e 73 74 20 63  en64 OF((const c
14880 68 61 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61  har *, const cha
14890 72 20 2a 29 29 3b 0a 20 20 20 5a 45 58 54 45 52  r *));.   ZEXTER
148a0 4e 20 7a 5f 6f 66 66 36 34 5f 74 20 5a 45 58 50  N z_off64_t ZEXP
148b0 4f 52 54 20 67 7a 73 65 65 6b 36 34 20 4f 46 28  ORT gzseek64 OF(
148c0 28 67 7a 46 69 6c 65 2c 20 7a 5f 6f 66 66 36 34  (gzFile, z_off64
148d0 5f 74 2c 20 69 6e 74 29 29 3b 0a 20 20 20 5a 45  _t, int));.   ZE
148e0 58 54 45 52 4e 20 7a 5f 6f 66 66 36 34 5f 74 20  XTERN z_off64_t 
148f0 5a 45 58 50 4f 52 54 20 67 7a 74 65 6c 6c 36 34  ZEXPORT gztell64
14900 20 4f 46 28 28 67 7a 46 69 6c 65 29 29 3b 0a 20   OF((gzFile));. 
14910 20 20 5a 45 58 54 45 52 4e 20 7a 5f 6f 66 66 36    ZEXTERN z_off6
14920 34 5f 74 20 5a 45 58 50 4f 52 54 20 67 7a 6f 66  4_t ZEXPORT gzof
14930 66 73 65 74 36 34 20 4f 46 28 28 67 7a 46 69 6c  fset64 OF((gzFil
14940 65 29 29 3b 0a 20 20 20 5a 45 58 54 45 52 4e 20  e));.   ZEXTERN 
14950 75 4c 6f 6e 67 20 5a 45 58 50 4f 52 54 20 61 64  uLong ZEXPORT ad
14960 6c 65 72 33 32 5f 63 6f 6d 62 69 6e 65 36 34 20  ler32_combine64 
14970 4f 46 28 28 75 4c 6f 6e 67 2c 20 75 4c 6f 6e 67  OF((uLong, uLong
14980 2c 20 7a 5f 6f 66 66 36 34 5f 74 29 29 3b 0a 20  , z_off64_t));. 
14990 20 20 5a 45 58 54 45 52 4e 20 75 4c 6f 6e 67 20    ZEXTERN uLong 
149a0 5a 45 58 50 4f 52 54 20 63 72 63 33 32 5f 63 6f  ZEXPORT crc32_co
149b0 6d 62 69 6e 65 36 34 20 4f 46 28 28 75 4c 6f 6e  mbine64 OF((uLon
149c0 67 2c 20 75 4c 6f 6e 67 2c 20 7a 5f 6f 66 66 36  g, uLong, z_off6
149d0 34 5f 74 29 29 3b 0a 23 65 6e 64 69 66 0a 0a 23  4_t));.#endif..#
149e0 69 66 20 21 64 65 66 69 6e 65 64 28 5a 4c 49 42  if !defined(ZLIB
149f0 5f 49 4e 54 45 52 4e 41 4c 29 20 26 26 20 64 65  _INTERNAL) && de
14a00 66 69 6e 65 64 28 5a 5f 57 41 4e 54 36 34 29 0a  fined(Z_WANT64).
14a10 23 20 20 69 66 64 65 66 20 5a 5f 50 52 45 46 49  #  ifdef Z_PREFI
14a20 58 5f 53 45 54 0a 23 20 20 20 20 64 65 66 69 6e  X_SET.#    defin
14a30 65 20 7a 5f 67 7a 6f 70 65 6e 20 7a 5f 67 7a 6f  e z_gzopen z_gzo
14a40 70 65 6e 36 34 0a 23 20 20 20 20 64 65 66 69 6e  pen64.#    defin
14a50 65 20 7a 5f 67 7a 73 65 65 6b 20 7a 5f 67 7a 73  e z_gzseek z_gzs
14a60 65 65 6b 36 34 0a 23 20 20 20 20 64 65 66 69 6e  eek64.#    defin
14a70 65 20 7a 5f 67 7a 74 65 6c 6c 20 7a 5f 67 7a 74  e z_gztell z_gzt
14a80 65 6c 6c 36 34 0a 23 20 20 20 20 64 65 66 69 6e  ell64.#    defin
14a90 65 20 7a 5f 67 7a 6f 66 66 73 65 74 20 7a 5f 67  e z_gzoffset z_g
14aa0 7a 6f 66 66 73 65 74 36 34 0a 23 20 20 20 20 64  zoffset64.#    d
14ab0 65 66 69 6e 65 20 7a 5f 61 64 6c 65 72 33 32 5f  efine z_adler32_
14ac0 63 6f 6d 62 69 6e 65 20 7a 5f 61 64 6c 65 72 33  combine z_adler3
14ad0 32 5f 63 6f 6d 62 69 6e 65 36 34 0a 23 20 20 20  2_combine64.#   
14ae0 20 64 65 66 69 6e 65 20 7a 5f 63 72 63 33 32 5f   define z_crc32_
14af0 63 6f 6d 62 69 6e 65 20 7a 5f 63 72 63 33 32 5f  combine z_crc32_
14b00 63 6f 6d 62 69 6e 65 36 34 0a 23 20 20 65 6c 73  combine64.#  els
14b10 65 0a 23 20 20 20 20 64 65 66 69 6e 65 20 67 7a  e.#    define gz
14b20 6f 70 65 6e 20 67 7a 6f 70 65 6e 36 34 0a 23 20  open gzopen64.# 
14b30 20 20 20 64 65 66 69 6e 65 20 67 7a 73 65 65 6b     define gzseek
14b40 20 67 7a 73 65 65 6b 36 34 0a 23 20 20 20 20 64   gzseek64.#    d
14b50 65 66 69 6e 65 20 67 7a 74 65 6c 6c 20 67 7a 74  efine gztell gzt
14b60 65 6c 6c 36 34 0a 23 20 20 20 20 64 65 66 69 6e  ell64.#    defin
14b70 65 20 67 7a 6f 66 66 73 65 74 20 67 7a 6f 66 66  e gzoffset gzoff
14b80 73 65 74 36 34 0a 23 20 20 20 20 64 65 66 69 6e  set64.#    defin
14b90 65 20 61 64 6c 65 72 33 32 5f 63 6f 6d 62 69 6e  e adler32_combin
14ba0 65 20 61 64 6c 65 72 33 32 5f 63 6f 6d 62 69 6e  e adler32_combin
14bb0 65 36 34 0a 23 20 20 20 20 64 65 66 69 6e 65 20  e64.#    define 
14bc0 63 72 63 33 32 5f 63 6f 6d 62 69 6e 65 20 63 72  crc32_combine cr
14bd0 63 33 32 5f 63 6f 6d 62 69 6e 65 36 34 0a 23 20  c32_combine64.# 
14be0 20 65 6e 64 69 66 0a 23 20 20 69 66 6e 64 65 66   endif.#  ifndef
14bf0 20 5a 5f 4c 41 52 47 45 36 34 0a 20 20 20 20 20   Z_LARGE64.     
14c00 5a 45 58 54 45 52 4e 20 67 7a 46 69 6c 65 20 5a  ZEXTERN gzFile Z
14c10 45 58 50 4f 52 54 20 67 7a 6f 70 65 6e 36 34 20  EXPORT gzopen64 
14c20 4f 46 28 28 63 6f 6e 73 74 20 63 68 61 72 20 2a  OF((const char *
14c30 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 29 29  , const char *))
14c40 3b 0a 20 20 20 20 20 5a 45 58 54 45 52 4e 20 7a  ;.     ZEXTERN z
14c50 5f 6f 66 66 5f 74 20 5a 45 58 50 4f 52 54 20 67  _off_t ZEXPORT g
14c60 7a 73 65 65 6b 36 34 20 4f 46 28 28 67 7a 46 69  zseek64 OF((gzFi
14c70 6c 65 2c 20 7a 5f 6f 66 66 5f 74 2c 20 69 6e 74  le, z_off_t, int
14c80 29 29 3b 0a 20 20 20 20 20 5a 45 58 54 45 52 4e  ));.     ZEXTERN
14c90 20 7a 5f 6f 66 66 5f 74 20 5a 45 58 50 4f 52 54   z_off_t ZEXPORT
14ca0 20 67 7a 74 65 6c 6c 36 34 20 4f 46 28 28 67 7a   gztell64 OF((gz
14cb0 46 69 6c 65 29 29 3b 0a 20 20 20 20 20 5a 45 58  File));.     ZEX
14cc0 54 45 52 4e 20 7a 5f 6f 66 66 5f 74 20 5a 45 58  TERN z_off_t ZEX
14cd0 50 4f 52 54 20 67 7a 6f 66 66 73 65 74 36 34 20  PORT gzoffset64 
14ce0 4f 46 28 28 67 7a 46 69 6c 65 29 29 3b 0a 20 20  OF((gzFile));.  
14cf0 20 20 20 5a 45 58 54 45 52 4e 20 75 4c 6f 6e 67     ZEXTERN uLong
14d00 20 5a 45 58 50 4f 52 54 20 61 64 6c 65 72 33 32   ZEXPORT adler32
14d10 5f 63 6f 6d 62 69 6e 65 36 34 20 4f 46 28 28 75  _combine64 OF((u
14d20 4c 6f 6e 67 2c 20 75 4c 6f 6e 67 2c 20 7a 5f 6f  Long, uLong, z_o
14d30 66 66 5f 74 29 29 3b 0a 20 20 20 20 20 5a 45 58  ff_t));.     ZEX
14d40 54 45 52 4e 20 75 4c 6f 6e 67 20 5a 45 58 50 4f  TERN uLong ZEXPO
14d50 52 54 20 63 72 63 33 32 5f 63 6f 6d 62 69 6e 65  RT crc32_combine
14d60 36 34 20 4f 46 28 28 75 4c 6f 6e 67 2c 20 75 4c  64 OF((uLong, uL
14d70 6f 6e 67 2c 20 7a 5f 6f 66 66 5f 74 29 29 3b 0a  ong, z_off_t));.
14d80 23 20 20 65 6e 64 69 66 0a 23 65 6c 73 65 0a 20  #  endif.#else. 
14d90 20 20 5a 45 58 54 45 52 4e 20 67 7a 46 69 6c 65    ZEXTERN gzFile
14da0 20 5a 45 58 50 4f 52 54 20 67 7a 6f 70 65 6e 20   ZEXPORT gzopen 
14db0 4f 46 28 28 63 6f 6e 73 74 20 63 68 61 72 20 2a  OF((const char *
14dc0 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 29 29  , const char *))
14dd0 3b 0a 20 20 20 5a 45 58 54 45 52 4e 20 7a 5f 6f  ;.   ZEXTERN z_o
14de0 66 66 5f 74 20 5a 45 58 50 4f 52 54 20 67 7a 73  ff_t ZEXPORT gzs
14df0 65 65 6b 20 4f 46 28 28 67 7a 46 69 6c 65 2c 20  eek OF((gzFile, 
14e00 7a 5f 6f 66 66 5f 74 2c 20 69 6e 74 29 29 3b 0a  z_off_t, int));.
14e10 20 20 20 5a 45 58 54 45 52 4e 20 7a 5f 6f 66 66     ZEXTERN z_off
14e20 5f 74 20 5a 45 58 50 4f 52 54 20 67 7a 74 65 6c  _t ZEXPORT gztel
14e30 6c 20 4f 46 28 28 67 7a 46 69 6c 65 29 29 3b 0a  l OF((gzFile));.
14e40 20 20 20 5a 45 58 54 45 52 4e 20 7a 5f 6f 66 66     ZEXTERN z_off
14e50 5f 74 20 5a 45 58 50 4f 52 54 20 67 7a 6f 66 66  _t ZEXPORT gzoff
14e60 73 65 74 20 4f 46 28 28 67 7a 46 69 6c 65 29 29  set OF((gzFile))
14e70 3b 0a 20 20 20 5a 45 58 54 45 52 4e 20 75 4c 6f  ;.   ZEXTERN uLo
14e80 6e 67 20 5a 45 58 50 4f 52 54 20 61 64 6c 65 72  ng ZEXPORT adler
14e90 33 32 5f 63 6f 6d 62 69 6e 65 20 4f 46 28 28 75  32_combine OF((u
14ea0 4c 6f 6e 67 2c 20 75 4c 6f 6e 67 2c 20 7a 5f 6f  Long, uLong, z_o
14eb0 66 66 5f 74 29 29 3b 0a 20 20 20 5a 45 58 54 45  ff_t));.   ZEXTE
14ec0 52 4e 20 75 4c 6f 6e 67 20 5a 45 58 50 4f 52 54  RN uLong ZEXPORT
14ed0 20 63 72 63 33 32 5f 63 6f 6d 62 69 6e 65 20 4f   crc32_combine O
14ee0 46 28 28 75 4c 6f 6e 67 2c 20 75 4c 6f 6e 67 2c  F((uLong, uLong,
14ef0 20 7a 5f 6f 66 66 5f 74 29 29 3b 0a 23 65 6e 64   z_off_t));.#end
14f00 69 66 0a 0a 23 65 6c 73 65 20 2f 2a 20 5a 5f 53  if..#else /* Z_S
14f10 4f 4c 4f 20 2a 2f 0a 0a 20 20 20 5a 45 58 54 45  OLO */..   ZEXTE
14f20 52 4e 20 75 4c 6f 6e 67 20 5a 45 58 50 4f 52 54  RN uLong ZEXPORT
14f30 20 61 64 6c 65 72 33 32 5f 63 6f 6d 62 69 6e 65   adler32_combine
14f40 20 4f 46 28 28 75 4c 6f 6e 67 2c 20 75 4c 6f 6e   OF((uLong, uLon
14f50 67 2c 20 7a 5f 6f 66 66 5f 74 29 29 3b 0a 20 20  g, z_off_t));.  
14f60 20 5a 45 58 54 45 52 4e 20 75 4c 6f 6e 67 20 5a   ZEXTERN uLong Z
14f70 45 58 50 4f 52 54 20 63 72 63 33 32 5f 63 6f 6d  EXPORT crc32_com
14f80 62 69 6e 65 20 4f 46 28 28 75 4c 6f 6e 67 2c 20  bine OF((uLong, 
14f90 75 4c 6f 6e 67 2c 20 7a 5f 6f 66 66 5f 74 29 29  uLong, z_off_t))
14fa0 3b 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 21 5a 5f  ;..#endif /* !Z_
14fb0 53 4f 4c 4f 20 2a 2f 0a 0a 2f 2a 20 68 61 63 6b  SOLO */../* hack
14fc0 20 66 6f 72 20 62 75 67 67 79 20 63 6f 6d 70 69   for buggy compi
14fd0 6c 65 72 73 20 2a 2f 0a 23 69 66 20 21 64 65 66  lers */.#if !def
14fe0 69 6e 65 64 28 5a 55 54 49 4c 5f 48 29 20 26 26  ined(ZUTIL_H) &&
14ff0 20 21 64 65 66 69 6e 65 64 28 4e 4f 5f 44 55 4d   !defined(NO_DUM
15000 4d 59 5f 44 45 43 4c 29 0a 20 20 20 20 73 74 72  MY_DECL).    str
15010 75 63 74 20 69 6e 74 65 72 6e 61 6c 5f 73 74 61  uct internal_sta
15020 74 65 20 7b 69 6e 74 20 64 75 6d 6d 79 3b 7d 3b  te {int dummy;};
15030 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 75 6e 64 6f  .#endif../* undo
15040 63 75 6d 65 6e 74 65 64 20 66 75 6e 63 74 69 6f  cumented functio
15050 6e 73 20 2a 2f 0a 5a 45 58 54 45 52 4e 20 63 6f  ns */.ZEXTERN co
15060 6e 73 74 20 63 68 61 72 20 20 20 2a 20 5a 45 58  nst char   * ZEX
15070 50 4f 52 54 20 7a 45 72 72 6f 72 20 20 20 20 20  PORT zError     
15080 20 20 20 20 20 20 4f 46 28 28 69 6e 74 29 29 3b        OF((int));
15090 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 20 20 20  .ZEXTERN int    
150a0 20 20 20 20 20 20 20 20 5a 45 58 50 4f 52 54 20          ZEXPORT 
150b0 69 6e 66 6c 61 74 65 53 79 6e 63 50 6f 69 6e 74  inflateSyncPoint
150c0 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70 29 29   OF((z_streamp))
150d0 3b 0a 5a 45 58 54 45 52 4e 20 63 6f 6e 73 74 20  ;.ZEXTERN const 
150e0 7a 5f 63 72 63 5f 74 20 46 41 52 20 2a 20 5a 45  z_crc_t FAR * ZE
150f0 58 50 4f 52 54 20 67 65 74 5f 63 72 63 5f 74 61  XPORT get_crc_ta
15100 62 6c 65 20 20 20 20 4f 46 28 28 76 6f 69 64 29  ble    OF((void)
15110 29 3b 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 20  );.ZEXTERN int  
15120 20 20 20 20 20 20 20 20 20 20 5a 45 58 50 4f 52            ZEXPOR
15130 54 20 69 6e 66 6c 61 74 65 55 6e 64 65 72 6d 69  T inflateUndermi
15140 6e 65 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70  ne OF((z_streamp
15150 2c 20 69 6e 74 29 29 3b 0a 5a 45 58 54 45 52 4e  , int));.ZEXTERN
15160 20 69 6e 74 20 20 20 20 20 20 20 20 20 20 20 20   int            
15170 5a 45 58 50 4f 52 54 20 69 6e 66 6c 61 74 65 52  ZEXPORT inflateR
15180 65 73 65 74 4b 65 65 70 20 4f 46 28 28 7a 5f 73  esetKeep OF((z_s
15190 74 72 65 61 6d 70 29 29 3b 0a 5a 45 58 54 45 52  treamp));.ZEXTER
151a0 4e 20 69 6e 74 20 20 20 20 20 20 20 20 20 20 20  N int           
151b0 20 5a 45 58 50 4f 52 54 20 64 65 66 6c 61 74 65   ZEXPORT deflate
151c0 52 65 73 65 74 4b 65 65 70 20 4f 46 28 28 7a 5f  ResetKeep OF((z_
151d0 73 74 72 65 61 6d 70 29 29 3b 0a 23 69 66 20 64  streamp));.#if d
151e0 65 66 69 6e 65 64 28 5f 57 49 4e 33 32 29 20 26  efined(_WIN32) &
151f0 26 20 21 64 65 66 69 6e 65 64 28 5a 5f 53 4f 4c  & !defined(Z_SOL
15200 4f 29 0a 5a 45 58 54 45 52 4e 20 67 7a 46 69 6c  O).ZEXTERN gzFil
15210 65 20 20 20 20 20 20 20 20 20 5a 45 58 50 4f 52  e         ZEXPOR
15220 54 20 67 7a 6f 70 65 6e 5f 77 20 4f 46 28 28 63  T gzopen_w OF((c
15230 6f 6e 73 74 20 77 63 68 61 72 5f 74 20 2a 70 61  onst wchar_t *pa
15240 74 68 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  th,.            
15250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15270 63 6f 6e 73 74 20 63 68 61 72 20 2a 6d 6f 64 65  const char *mode
15280 29 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 69 66 64  ));.#endif..#ifd
15290 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 7d  ef __cplusplus.}
152a0 0a 23 65 6e 64 69 66 0a 0a 23 65 6e 64 69 66 20  .#endif..#endif 
152b0 2f 2a 20 5a 4c 49 42 5f 48 20 2a 2f 0a           /* ZLIB_H */.