Hex Artifact Content

Artifact 1a18ba7ea3e458b5ed735bcee4dcbef328d601c0:


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 33 2c 20 4a 75 6c 79 20 31  on 1.2.3, July 1
0060: 38 74 68 2c 20 32 30 30 35 0a 0a 20 20 43 6f 70  8th, 2005..  Cop
0070: 79 72 69 67 68 74 20 28 43 29 20 31 39 39 35 2d  yright (C) 1995-
0080: 32 30 30 35 20 4a 65 61 6e 2d 6c 6f 75 70 20 47  2005 Jean-loup G
0090: 61 69 6c 6c 79 20 61 6e 64 20 4d 61 72 6b 20 41  ailly and Mark A
00a0: 64 6c 65 72 0a 0a 20 20 54 68 69 73 20 73 6f 66  dler..  This sof
00b0: 74 77 61 72 65 20 69 73 20 70 72 6f 76 69 64 65  tware is provide
00c0: 64 20 27 61 73 2d 69 73 27 2c 20 77 69 74 68 6f  d 'as-is', witho
00d0: 75 74 20 61 6e 79 20 65 78 70 72 65 73 73 20 6f  ut any express o
00e0: 72 20 69 6d 70 6c 69 65 64 0a 20 20 77 61 72 72  r implied.  warr
00f0: 61 6e 74 79 2e 20 20 49 6e 20 6e 6f 20 65 76 65  anty.  In no eve
0100: 6e 74 20 77 69 6c 6c 20 74 68 65 20 61 75 74 68  nt will the auth
0110: 6f 72 73 20 62 65 20 68 65 6c 64 20 6c 69 61 62  ors be held liab
0120: 6c 65 20 66 6f 72 20 61 6e 79 20 64 61 6d 61 67  le for any damag
0130: 65 73 0a 20 20 61 72 69 73 69 6e 67 20 66 72 6f  es.  arising fro
0140: 6d 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 69  m the use of thi
0150: 73 20 73 6f 66 74 77 61 72 65 2e 0a 0a 20 20 50  s software...  P
0160: 65 72 6d 69 73 73 69 6f 6e 20 69 73 20 67 72 61  ermission is gra
0170: 6e 74 65 64 20 74 6f 20 61 6e 79 6f 6e 65 20 74  nted to anyone t
0180: 6f 20 75 73 65 20 74 68 69 73 20 73 6f 66 74 77  o use this softw
0190: 61 72 65 20 66 6f 72 20 61 6e 79 20 70 75 72 70  are for any purp
01a0: 6f 73 65 2c 0a 20 20 69 6e 63 6c 75 64 69 6e 67  ose,.  including
01b0: 20 63 6f 6d 6d 65 72 63 69 61 6c 20 61 70 70 6c   commercial appl
01c0: 69 63 61 74 69 6f 6e 73 2c 20 61 6e 64 20 74 6f  ications, and to
01d0: 20 61 6c 74 65 72 20 69 74 20 61 6e 64 20 72 65   alter it and re
01e0: 64 69 73 74 72 69 62 75 74 65 20 69 74 0a 20 20  distribute it.  
01f0: 66 72 65 65 6c 79 2c 20 73 75 62 6a 65 63 74 20  freely, subject 
0200: 74 6f 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  to the following
0210: 20 72 65 73 74 72 69 63 74 69 6f 6e 73 3a 0a 0a   restrictions:..
0220: 20 20 31 2e 20 54 68 65 20 6f 72 69 67 69 6e 20    1. The origin 
0230: 6f 66 20 74 68 69 73 20 73 6f 66 74 77 61 72 65  of this software
0240: 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 6d 69 73   must not be mis
0250: 72 65 70 72 65 73 65 6e 74 65 64 3b 20 79 6f 75  represented; you
0260: 20 6d 75 73 74 20 6e 6f 74 0a 20 20 20 20 20 63   must not.     c
0270: 6c 61 69 6d 20 74 68 61 74 20 79 6f 75 20 77 72  laim that you wr
0280: 6f 74 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c  ote the original
0290: 20 73 6f 66 74 77 61 72 65 2e 20 49 66 20 79 6f   software. If yo
02a0: 75 20 75 73 65 20 74 68 69 73 20 73 6f 66 74 77  u use this softw
02b0: 61 72 65 0a 20 20 20 20 20 69 6e 20 61 20 70 72  are.     in a pr
02c0: 6f 64 75 63 74 2c 20 61 6e 20 61 63 6b 6e 6f 77  oduct, an acknow
02d0: 6c 65 64 67 6d 65 6e 74 20 69 6e 20 74 68 65 20  ledgment in the 
02e0: 70 72 6f 64 75 63 74 20 64 6f 63 75 6d 65 6e 74  product document
02f0: 61 74 69 6f 6e 20 77 6f 75 6c 64 20 62 65 0a 20  ation would be. 
0300: 20 20 20 20 61 70 70 72 65 63 69 61 74 65 64 20      appreciated 
0310: 62 75 74 20 69 73 20 6e 6f 74 20 72 65 71 75 69  but is not requi
0320: 72 65 64 2e 0a 20 20 32 2e 20 41 6c 74 65 72 65  red..  2. Altere
0330: 64 20 73 6f 75 72 63 65 20 76 65 72 73 69 6f 6e  d source version
0340: 73 20 6d 75 73 74 20 62 65 20 70 6c 61 69 6e 6c  s must be plainl
0350: 79 20 6d 61 72 6b 65 64 20 61 73 20 73 75 63 68  y marked as such
0360: 2c 20 61 6e 64 20 6d 75 73 74 20 6e 6f 74 20 62  , and must not b
0370: 65 0a 20 20 20 20 20 6d 69 73 72 65 70 72 65 73  e.     misrepres
0380: 65 6e 74 65 64 20 61 73 20 62 65 69 6e 67 20 74  ented as being t
0390: 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 6f 66 74  he original soft
03a0: 77 61 72 65 2e 0a 20 20 33 2e 20 54 68 69 73 20  ware..  3. This 
03b0: 6e 6f 74 69 63 65 20 6d 61 79 20 6e 6f 74 20 62  notice may not b
03c0: 65 20 72 65 6d 6f 76 65 64 20 6f 72 20 61 6c 74  e removed or alt
03d0: 65 72 65 64 20 66 72 6f 6d 20 61 6e 79 20 73 6f  ered from any so
03e0: 75 72 63 65 20 64 69 73 74 72 69 62 75 74 69 6f  urce distributio
03f0: 6e 2e 0a 0a 20 20 4a 65 61 6e 2d 6c 6f 75 70 20  n...  Jean-loup 
0400: 47 61 69 6c 6c 79 20 20 20 20 20 20 20 20 4d 61  Gailly        Ma
0410: 72 6b 20 41 64 6c 65 72 0a 20 20 6a 6c 6f 75 70  rk Adler.  jloup
0420: 40 67 7a 69 70 2e 6f 72 67 20 20 20 20 20 20 20  @gzip.org       
0430: 20 20 20 6d 61 64 6c 65 72 40 61 6c 75 6d 6e 69     madler@alumni
0440: 2e 63 61 6c 74 65 63 68 2e 65 64 75 0a 0a 0a 20  .caltech.edu... 
0450: 20 54 68 65 20 64 61 74 61 20 66 6f 72 6d 61 74   The data format
0460: 20 75 73 65 64 20 62 79 20 74 68 65 20 7a 6c 69   used by the zli
0470: 62 20 6c 69 62 72 61 72 79 20 69 73 20 64 65 73  b library is des
0480: 63 72 69 62 65 64 20 62 79 20 52 46 43 73 20 28  cribed by RFCs (
0490: 52 65 71 75 65 73 74 20 66 6f 72 0a 20 20 43 6f  Request for.  Co
04a0: 6d 6d 65 6e 74 73 29 20 31 39 35 30 20 74 6f 20  mments) 1950 to 
04b0: 31 39 35 32 20 69 6e 20 74 68 65 20 66 69 6c 65  1952 in the file
04c0: 73 20 68 74 74 70 3a 2f 2f 77 77 77 2e 69 65 74  s http://www.iet
04d0: 66 2e 6f 72 67 2f 72 66 63 2f 72 66 63 31 39 35  f.org/rfc/rfc195
04e0: 30 2e 74 78 74 0a 20 20 28 7a 6c 69 62 20 66 6f  0.txt.  (zlib fo
04f0: 72 6d 61 74 29 2c 20 72 66 63 31 39 35 31 2e 74  rmat), rfc1951.t
0500: 78 74 20 28 64 65 66 6c 61 74 65 20 66 6f 72 6d  xt (deflate form
0510: 61 74 29 20 61 6e 64 20 72 66 63 31 39 35 32 2e  at) and rfc1952.
0520: 74 78 74 20 28 67 7a 69 70 20 66 6f 72 6d 61 74  txt (gzip format
0530: 29 2e 0a 2a 2f 0a 0a 23 69 66 6e 64 65 66 20 5a  )..*/..#ifndef Z
0540: 4c 49 42 5f 48 0a 23 64 65 66 69 6e 65 20 5a 4c  LIB_H.#define ZL
0550: 49 42 5f 48 0a 0a 23 69 6e 63 6c 75 64 65 20 22  IB_H..#include "
0560: 7a 63 6f 6e 66 2e 68 22 0a 0a 23 69 66 64 65 66  zconf.h"..#ifdef
0570: 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 65 78 74   __cplusplus.ext
0580: 65 72 6e 20 22 43 22 20 7b 0a 23 65 6e 64 69 66  ern "C" {.#endif
0590: 0a 0a 23 64 65 66 69 6e 65 20 5a 4c 49 42 5f 56  ..#define ZLIB_V
05a0: 45 52 53 49 4f 4e 20 22 31 2e 32 2e 33 22 0a 23  ERSION "1.2.3".#
05b0: 64 65 66 69 6e 65 20 5a 4c 49 42 5f 56 45 52 4e  define ZLIB_VERN
05c0: 55 4d 20 30 78 31 32 33 30 0a 0a 2f 2a 0a 20 20  UM 0x1230../*.  
05d0: 20 20 20 54 68 65 20 27 7a 6c 69 62 27 20 63 6f     The 'zlib' co
05e0: 6d 70 72 65 73 73 69 6f 6e 20 6c 69 62 72 61 72  mpression librar
05f0: 79 20 70 72 6f 76 69 64 65 73 20 69 6e 2d 6d 65  y provides in-me
0600: 6d 6f 72 79 20 63 6f 6d 70 72 65 73 73 69 6f 6e  mory compression
0610: 20 61 6e 64 0a 20 20 64 65 63 6f 6d 70 72 65 73   and.  decompres
0620: 73 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 2c 20  sion functions, 
0630: 69 6e 63 6c 75 64 69 6e 67 20 69 6e 74 65 67 72  including integr
0640: 69 74 79 20 63 68 65 63 6b 73 20 6f 66 20 74 68  ity checks of th
0650: 65 20 75 6e 63 6f 6d 70 72 65 73 73 65 64 0a 20  e uncompressed. 
0660: 20 64 61 74 61 2e 20 20 54 68 69 73 20 76 65 72   data.  This ver
0670: 73 69 6f 6e 20 6f 66 20 74 68 65 20 6c 69 62 72  sion of the libr
0680: 61 72 79 20 73 75 70 70 6f 72 74 73 20 6f 6e 6c  ary supports onl
0690: 79 20 6f 6e 65 20 63 6f 6d 70 72 65 73 73 69 6f  y one compressio
06a0: 6e 20 6d 65 74 68 6f 64 0a 20 20 28 64 65 66 6c  n method.  (defl
06b0: 61 74 69 6f 6e 29 20 62 75 74 20 6f 74 68 65 72  ation) but other
06c0: 20 61 6c 67 6f 72 69 74 68 6d 73 20 77 69 6c 6c   algorithms will
06d0: 20 62 65 20 61 64 64 65 64 20 6c 61 74 65 72 20   be added later 
06e0: 61 6e 64 20 77 69 6c 6c 20 68 61 76 65 20 74 68  and will have th
06f0: 65 20 73 61 6d 65 0a 20 20 73 74 72 65 61 6d 20  e same.  stream 
0700: 69 6e 74 65 72 66 61 63 65 2e 0a 0a 20 20 20 20  interface...    
0710: 20 43 6f 6d 70 72 65 73 73 69 6f 6e 20 63 61 6e   Compression can
0720: 20 62 65 20 64 6f 6e 65 20 69 6e 20 61 20 73 69   be done in a si
0730: 6e 67 6c 65 20 73 74 65 70 20 69 66 20 74 68 65  ngle step if the
0740: 20 62 75 66 66 65 72 73 20 61 72 65 20 6c 61 72   buffers are lar
0750: 67 65 0a 20 20 65 6e 6f 75 67 68 20 28 66 6f 72  ge.  enough (for
0760: 20 65 78 61 6d 70 6c 65 20 69 66 20 61 6e 20 69   example if an i
0770: 6e 70 75 74 20 66 69 6c 65 20 69 73 20 6d 6d 61  nput file is mma
0780: 70 27 65 64 29 2c 20 6f 72 20 63 61 6e 20 62 65  p'ed), or can be
0790: 20 64 6f 6e 65 20 62 79 0a 20 20 72 65 70 65 61   done by.  repea
07a0: 74 65 64 20 63 61 6c 6c 73 20 6f 66 20 74 68 65  ted calls of the
07b0: 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 66 75 6e   compression fun
07c0: 63 74 69 6f 6e 2e 20 20 49 6e 20 74 68 65 20 6c  ction.  In the l
07d0: 61 74 74 65 72 20 63 61 73 65 2c 20 74 68 65 0a  atter case, the.
07e0: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75    application mu
07f0: 73 74 20 70 72 6f 76 69 64 65 20 6d 6f 72 65 20  st provide more 
0800: 69 6e 70 75 74 20 61 6e 64 2f 6f 72 20 63 6f 6e  input and/or con
0810: 73 75 6d 65 20 74 68 65 20 6f 75 74 70 75 74 0a  sume the output.
0820: 20 20 28 70 72 6f 76 69 64 69 6e 67 20 6d 6f 72    (providing mor
0830: 65 20 6f 75 74 70 75 74 20 73 70 61 63 65 29 20  e output space) 
0840: 62 65 66 6f 72 65 20 65 61 63 68 20 63 61 6c 6c  before each call
0850: 2e 0a 0a 20 20 20 20 20 54 68 65 20 63 6f 6d 70  ...     The comp
0860: 72 65 73 73 65 64 20 64 61 74 61 20 66 6f 72 6d  ressed data form
0870: 61 74 20 75 73 65 64 20 62 79 20 64 65 66 61 75  at used by defau
0880: 6c 74 20 62 79 20 74 68 65 20 69 6e 2d 6d 65 6d  lt by the in-mem
0890: 6f 72 79 20 66 75 6e 63 74 69 6f 6e 73 20 69 73  ory functions is
08a0: 0a 20 20 74 68 65 20 7a 6c 69 62 20 66 6f 72 6d  .  the zlib form
08b0: 61 74 2c 20 77 68 69 63 68 20 69 73 20 61 20 7a  at, which is a z
08c0: 6c 69 62 20 77 72 61 70 70 65 72 20 64 6f 63 75  lib wrapper docu
08d0: 6d 65 6e 74 65 64 20 69 6e 20 52 46 43 20 31 39  mented in RFC 19
08e0: 35 30 2c 20 77 72 61 70 70 65 64 0a 20 20 61 72  50, wrapped.  ar
08f0: 6f 75 6e 64 20 61 20 64 65 66 6c 61 74 65 20 73  ound a deflate s
0900: 74 72 65 61 6d 2c 20 77 68 69 63 68 20 69 73 20  tream, which is 
0910: 69 74 73 65 6c 66 20 64 6f 63 75 6d 65 6e 74 65  itself documente
0920: 64 20 69 6e 20 52 46 43 20 31 39 35 31 2e 0a 0a  d in RFC 1951...
0930: 20 20 20 20 20 54 68 65 20 6c 69 62 72 61 72 79       The library
0940: 20 61 6c 73 6f 20 73 75 70 70 6f 72 74 73 20 72   also supports r
0950: 65 61 64 69 6e 67 20 61 6e 64 20 77 72 69 74 69  eading and writi
0960: 6e 67 20 66 69 6c 65 73 20 69 6e 20 67 7a 69 70  ng files in gzip
0970: 20 28 2e 67 7a 29 20 66 6f 72 6d 61 74 0a 20 20   (.gz) format.  
0980: 77 69 74 68 20 61 6e 20 69 6e 74 65 72 66 61 63  with an interfac
0990: 65 20 73 69 6d 69 6c 61 72 20 74 6f 20 74 68 61  e similar to tha
09a0: 74 20 6f 66 20 73 74 64 69 6f 20 75 73 69 6e 67  t of stdio using
09b0: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 73 20 74   the functions t
09c0: 68 61 74 20 73 74 61 72 74 0a 20 20 77 69 74 68  hat start.  with
09d0: 20 22 67 7a 22 2e 20 20 54 68 65 20 67 7a 69 70   "gz".  The gzip
09e0: 20 66 6f 72 6d 61 74 20 69 73 20 64 69 66 66 65   format is diffe
09f0: 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 7a 6c  rent from the zl
0a00: 69 62 20 66 6f 72 6d 61 74 2e 20 20 67 7a 69 70  ib format.  gzip
0a10: 20 69 73 20 61 0a 20 20 67 7a 69 70 20 77 72 61   is a.  gzip wra
0a20: 70 70 65 72 2c 20 64 6f 63 75 6d 65 6e 74 65 64  pper, documented
0a30: 20 69 6e 20 52 46 43 20 31 39 35 32 2c 20 77 72   in RFC 1952, wr
0a40: 61 70 70 65 64 20 61 72 6f 75 6e 64 20 61 20 64  apped around a d
0a50: 65 66 6c 61 74 65 20 73 74 72 65 61 6d 2e 0a 0a  eflate stream...
0a60: 20 20 20 20 20 54 68 69 73 20 6c 69 62 72 61 72       This librar
0a70: 79 20 63 61 6e 20 6f 70 74 69 6f 6e 61 6c 6c 79  y can optionally
0a80: 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20   read and write 
0a90: 67 7a 69 70 20 73 74 72 65 61 6d 73 20 69 6e 20  gzip streams in 
0aa0: 6d 65 6d 6f 72 79 20 61 73 20 77 65 6c 6c 2e 0a  memory as well..
0ab0: 0a 20 20 20 20 20 54 68 65 20 7a 6c 69 62 20 66  .     The zlib f
0ac0: 6f 72 6d 61 74 20 77 61 73 20 64 65 73 69 67 6e  ormat was design
0ad0: 65 64 20 74 6f 20 62 65 20 63 6f 6d 70 61 63 74  ed to be compact
0ae0: 20 61 6e 64 20 66 61 73 74 20 66 6f 72 20 75 73   and fast for us
0af0: 65 20 69 6e 20 6d 65 6d 6f 72 79 0a 20 20 61 6e  e in memory.  an
0b00: 64 20 6f 6e 20 63 6f 6d 6d 75 6e 69 63 61 74 69  d on communicati
0b10: 6f 6e 73 20 63 68 61 6e 6e 65 6c 73 2e 20 20 54  ons channels.  T
0b20: 68 65 20 67 7a 69 70 20 66 6f 72 6d 61 74 20 77  he gzip format w
0b30: 61 73 20 64 65 73 69 67 6e 65 64 20 66 6f 72 20  as designed for 
0b40: 73 69 6e 67 6c 65 2d 0a 20 20 66 69 6c 65 20 63  single-.  file c
0b50: 6f 6d 70 72 65 73 73 69 6f 6e 20 6f 6e 20 66 69  ompression on fi
0b60: 6c 65 20 73 79 73 74 65 6d 73 2c 20 68 61 73 20  le systems, has 
0b70: 61 20 6c 61 72 67 65 72 20 68 65 61 64 65 72 20  a larger header 
0b80: 74 68 61 6e 20 7a 6c 69 62 20 74 6f 20 6d 61 69  than zlib to mai
0b90: 6e 74 61 69 6e 0a 20 20 64 69 72 65 63 74 6f 72  ntain.  director
0ba0: 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 61  y information, a
0bb0: 6e 64 20 75 73 65 73 20 61 20 64 69 66 66 65 72  nd uses a differ
0bc0: 65 6e 74 2c 20 73 6c 6f 77 65 72 20 63 68 65 63  ent, slower chec
0bd0: 6b 20 6d 65 74 68 6f 64 20 74 68 61 6e 20 7a 6c  k method than zl
0be0: 69 62 2e 0a 0a 20 20 20 20 20 54 68 65 20 6c 69  ib...     The li
0bf0: 62 72 61 72 79 20 64 6f 65 73 20 6e 6f 74 20 69  brary does not i
0c00: 6e 73 74 61 6c 6c 20 61 6e 79 20 73 69 67 6e 61  nstall any signa
0c10: 6c 20 68 61 6e 64 6c 65 72 2e 20 54 68 65 20 64  l handler. The d
0c20: 65 63 6f 64 65 72 20 63 68 65 63 6b 73 0a 20 20  ecoder checks.  
0c30: 74 68 65 20 63 6f 6e 73 69 73 74 65 6e 63 79 20  the consistency 
0c40: 6f 66 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65  of the compresse
0c50: 64 20 64 61 74 61 2c 20 73 6f 20 74 68 65 20 6c  d data, so the l
0c60: 69 62 72 61 72 79 20 73 68 6f 75 6c 64 20 6e 65  ibrary should ne
0c70: 76 65 72 0a 20 20 63 72 61 73 68 20 65 76 65 6e  ver.  crash even
0c80: 20 69 6e 20 63 61 73 65 20 6f 66 20 63 6f 72 72   in case of corr
0c90: 75 70 74 65 64 20 69 6e 70 75 74 2e 0a 2a 2f 0a  upted input..*/.
0ca0: 0a 74 79 70 65 64 65 66 20 76 6f 69 64 70 66 20  .typedef voidpf 
0cb0: 28 2a 61 6c 6c 6f 63 5f 66 75 6e 63 29 20 4f 46  (*alloc_func) OF
0cc0: 28 28 76 6f 69 64 70 66 20 6f 70 61 71 75 65 2c  ((voidpf opaque,
0cd0: 20 75 49 6e 74 20 69 74 65 6d 73 2c 20 75 49 6e   uInt items, uIn
0ce0: 74 20 73 69 7a 65 29 29 3b 0a 74 79 70 65 64 65  t size));.typede
0cf0: 66 20 76 6f 69 64 20 20 20 28 2a 66 72 65 65 5f  f void   (*free_
0d00: 66 75 6e 63 29 20 20 4f 46 28 28 76 6f 69 64 70  func)  OF((voidp
0d10: 66 20 6f 70 61 71 75 65 2c 20 76 6f 69 64 70 66  f opaque, voidpf
0d20: 20 61 64 64 72 65 73 73 29 29 3b 0a 0a 73 74 72   address));..str
0d30: 75 63 74 20 69 6e 74 65 72 6e 61 6c 5f 73 74 61  uct internal_sta
0d40: 74 65 3b 0a 0a 74 79 70 65 64 65 66 20 73 74 72  te;..typedef str
0d50: 75 63 74 20 7a 5f 73 74 72 65 61 6d 5f 73 20 7b  uct z_stream_s {
0d60: 0a 20 20 20 20 42 79 74 65 66 20 20 20 20 2a 6e  .    Bytef    *n
0d70: 65 78 74 5f 69 6e 3b 20 20 2f 2a 20 6e 65 78 74  ext_in;  /* next
0d80: 20 69 6e 70 75 74 20 62 79 74 65 20 2a 2f 0a 20   input byte */. 
0d90: 20 20 20 75 49 6e 74 20 20 20 20 20 61 76 61 69     uInt     avai
0da0: 6c 5f 69 6e 3b 20 20 2f 2a 20 6e 75 6d 62 65 72  l_in;  /* number
0db0: 20 6f 66 20 62 79 74 65 73 20 61 76 61 69 6c 61   of bytes availa
0dc0: 62 6c 65 20 61 74 20 6e 65 78 74 5f 69 6e 20 2a  ble at next_in *
0dd0: 2f 0a 20 20 20 20 75 4c 6f 6e 67 20 20 20 20 74  /.    uLong    t
0de0: 6f 74 61 6c 5f 69 6e 3b 20 20 2f 2a 20 74 6f 74  otal_in;  /* tot
0df0: 61 6c 20 6e 62 20 6f 66 20 69 6e 70 75 74 20 62  al nb of input b
0e00: 79 74 65 73 20 72 65 61 64 20 73 6f 20 66 61 72  ytes read so far
0e10: 20 2a 2f 0a 0a 20 20 20 20 42 79 74 65 66 20 20   */..    Bytef  
0e20: 20 20 2a 6e 65 78 74 5f 6f 75 74 3b 20 2f 2a 20    *next_out; /* 
0e30: 6e 65 78 74 20 6f 75 74 70 75 74 20 62 79 74 65  next output byte
0e40: 20 73 68 6f 75 6c 64 20 62 65 20 70 75 74 20 74   should be put t
0e50: 68 65 72 65 20 2a 2f 0a 20 20 20 20 75 49 6e 74  here */.    uInt
0e60: 20 20 20 20 20 61 76 61 69 6c 5f 6f 75 74 3b 20       avail_out; 
0e70: 2f 2a 20 72 65 6d 61 69 6e 69 6e 67 20 66 72 65  /* remaining fre
0e80: 65 20 73 70 61 63 65 20 61 74 20 6e 65 78 74 5f  e space at next_
0e90: 6f 75 74 20 2a 2f 0a 20 20 20 20 75 4c 6f 6e 67  out */.    uLong
0ea0: 20 20 20 20 74 6f 74 61 6c 5f 6f 75 74 3b 20 2f      total_out; /
0eb0: 2a 20 74 6f 74 61 6c 20 6e 62 20 6f 66 20 62 79  * total nb of by
0ec0: 74 65 73 20 6f 75 74 70 75 74 20 73 6f 20 66 61  tes output so fa
0ed0: 72 20 2a 2f 0a 0a 20 20 20 20 63 68 61 72 20 20  r */..    char  
0ee0: 20 20 20 2a 6d 73 67 3b 20 20 20 20 20 20 2f 2a     *msg;      /*
0ef0: 20 6c 61 73 74 20 65 72 72 6f 72 20 6d 65 73 73   last error mess
0f00: 61 67 65 2c 20 4e 55 4c 4c 20 69 66 20 6e 6f 20  age, NULL if no 
0f10: 65 72 72 6f 72 20 2a 2f 0a 20 20 20 20 73 74 72  error */.    str
0f20: 75 63 74 20 69 6e 74 65 72 6e 61 6c 5f 73 74 61  uct internal_sta
0f30: 74 65 20 46 41 52 20 2a 73 74 61 74 65 3b 20 2f  te FAR *state; /
0f40: 2a 20 6e 6f 74 20 76 69 73 69 62 6c 65 20 62 79  * not visible by
0f50: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 2a 2f   applications */
0f60: 0a 0a 20 20 20 20 61 6c 6c 6f 63 5f 66 75 6e 63  ..    alloc_func
0f70: 20 7a 61 6c 6c 6f 63 3b 20 20 2f 2a 20 75 73 65   zalloc;  /* use
0f80: 64 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 74 68  d to allocate th
0f90: 65 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 65  e internal state
0fa0: 20 2a 2f 0a 20 20 20 20 66 72 65 65 5f 66 75 6e   */.    free_fun
0fb0: 63 20 20 7a 66 72 65 65 3b 20 20 20 2f 2a 20 75  c  zfree;   /* u
0fc0: 73 65 64 20 74 6f 20 66 72 65 65 20 74 68 65 20  sed to free the 
0fd0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 65 20 2a  internal state *
0fe0: 2f 0a 20 20 20 20 76 6f 69 64 70 66 20 20 20 20  /.    voidpf    
0ff0: 20 6f 70 61 71 75 65 3b 20 20 2f 2a 20 70 72 69   opaque;  /* pri
1000: 76 61 74 65 20 64 61 74 61 20 6f 62 6a 65 63 74  vate data object
1010: 20 70 61 73 73 65 64 20 74 6f 20 7a 61 6c 6c 6f   passed to zallo
1020: 63 20 61 6e 64 20 7a 66 72 65 65 20 2a 2f 0a 0a  c and zfree */..
1030: 20 20 20 20 69 6e 74 20 20 20 20 20 64 61 74 61      int     data
1040: 5f 74 79 70 65 3b 20 20 2f 2a 20 62 65 73 74 20  _type;  /* best 
1050: 67 75 65 73 73 20 61 62 6f 75 74 20 74 68 65 20  guess about the 
1060: 64 61 74 61 20 74 79 70 65 3a 20 62 69 6e 61 72  data type: binar
1070: 79 20 6f 72 20 74 65 78 74 20 2a 2f 0a 20 20 20  y or text */.   
1080: 20 75 4c 6f 6e 67 20 20 20 61 64 6c 65 72 3b 20   uLong   adler; 
1090: 20 20 20 20 20 2f 2a 20 61 64 6c 65 72 33 32 20       /* adler32 
10a0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 75 6e 63  value of the unc
10b0: 6f 6d 70 72 65 73 73 65 64 20 64 61 74 61 20 2a  ompressed data *
10c0: 2f 0a 20 20 20 20 75 4c 6f 6e 67 20 20 20 72 65  /.    uLong   re
10d0: 73 65 72 76 65 64 3b 20 20 20 2f 2a 20 72 65 73  served;   /* res
10e0: 65 72 76 65 64 20 66 6f 72 20 66 75 74 75 72 65  erved for future
10f0: 20 75 73 65 20 2a 2f 0a 7d 20 7a 5f 73 74 72 65   use */.} z_stre
1100: 61 6d 3b 0a 0a 74 79 70 65 64 65 66 20 7a 5f 73  am;..typedef z_s
1110: 74 72 65 61 6d 20 46 41 52 20 2a 7a 5f 73 74 72  tream FAR *z_str
1120: 65 61 6d 70 3b 0a 0a 2f 2a 0a 20 20 20 20 20 67  eamp;../*.     g
1130: 7a 69 70 20 68 65 61 64 65 72 20 69 6e 66 6f 72  zip header infor
1140: 6d 61 74 69 6f 6e 20 70 61 73 73 65 64 20 74 6f  mation passed to
1150: 20 61 6e 64 20 66 72 6f 6d 20 7a 6c 69 62 20 72   and from zlib r
1160: 6f 75 74 69 6e 65 73 2e 20 20 53 65 65 20 52 46  outines.  See RF
1170: 43 20 31 39 35 32 0a 20 20 66 6f 72 20 6d 6f 72  C 1952.  for mor
1180: 65 20 64 65 74 61 69 6c 73 20 6f 6e 20 74 68 65  e details on the
1190: 20 6d 65 61 6e 69 6e 67 73 20 6f 66 20 74 68 65   meanings of the
11a0: 73 65 20 66 69 65 6c 64 73 2e 0a 2a 2f 0a 74 79  se fields..*/.ty
11b0: 70 65 64 65 66 20 73 74 72 75 63 74 20 67 7a 5f  pedef struct gz_
11c0: 68 65 61 64 65 72 5f 73 20 7b 0a 20 20 20 20 69  header_s {.    i
11d0: 6e 74 20 20 20 20 20 74 65 78 74 3b 20 20 20 20  nt     text;    
11e0: 20 20 20 2f 2a 20 74 72 75 65 20 69 66 20 63 6f     /* true if co
11f0: 6d 70 72 65 73 73 65 64 20 64 61 74 61 20 62 65  mpressed data be
1200: 6c 69 65 76 65 64 20 74 6f 20 62 65 20 74 65 78  lieved to be tex
1210: 74 20 2a 2f 0a 20 20 20 20 75 4c 6f 6e 67 20 20  t */.    uLong  
1220: 20 74 69 6d 65 3b 20 20 20 20 20 20 20 2f 2a 20   time;       /* 
1230: 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 74 69 6d  modification tim
1240: 65 20 2a 2f 0a 20 20 20 20 69 6e 74 20 20 20 20  e */.    int    
1250: 20 78 66 6c 61 67 73 3b 20 20 20 20 20 2f 2a 20   xflags;     /* 
1260: 65 78 74 72 61 20 66 6c 61 67 73 20 28 6e 6f 74  extra flags (not
1270: 20 75 73 65 64 20 77 68 65 6e 20 77 72 69 74 69   used when writi
1280: 6e 67 20 61 20 67 7a 69 70 20 66 69 6c 65 29 20  ng a gzip file) 
1290: 2a 2f 0a 20 20 20 20 69 6e 74 20 20 20 20 20 6f  */.    int     o
12a0: 73 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 70  s;         /* op
12b0: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 2a  erating system *
12c0: 2f 0a 20 20 20 20 42 79 74 65 66 20 20 20 2a 65  /.    Bytef   *e
12d0: 78 74 72 61 3b 20 20 20 20 20 2f 2a 20 70 6f 69  xtra;     /* poi
12e0: 6e 74 65 72 20 74 6f 20 65 78 74 72 61 20 66 69  nter to extra fi
12f0: 65 6c 64 20 6f 72 20 5a 5f 4e 55 4c 4c 20 69 66  eld or Z_NULL if
1300: 20 6e 6f 6e 65 20 2a 2f 0a 20 20 20 20 75 49 6e   none */.    uIn
1310: 74 20 20 20 20 65 78 74 72 61 5f 6c 65 6e 3b 20  t    extra_len; 
1320: 20 2f 2a 20 65 78 74 72 61 20 66 69 65 6c 64 20   /* extra field 
1330: 6c 65 6e 67 74 68 20 28 76 61 6c 69 64 20 69 66  length (valid if
1340: 20 65 78 74 72 61 20 21 3d 20 5a 5f 4e 55 4c 4c   extra != Z_NULL
1350: 29 20 2a 2f 0a 20 20 20 20 75 49 6e 74 20 20 20  ) */.    uInt   
1360: 20 65 78 74 72 61 5f 6d 61 78 3b 20 20 2f 2a 20   extra_max;  /* 
1370: 73 70 61 63 65 20 61 74 20 65 78 74 72 61 20 28  space at extra (
1380: 6f 6e 6c 79 20 77 68 65 6e 20 72 65 61 64 69 6e  only when readin
1390: 67 20 68 65 61 64 65 72 29 20 2a 2f 0a 20 20 20  g header) */.   
13a0: 20 42 79 74 65 66 20 20 20 2a 6e 61 6d 65 3b 20   Bytef   *name; 
13b0: 20 20 20 20 20 2f 2a 20 70 6f 69 6e 74 65 72 20       /* pointer 
13c0: 74 6f 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74  to zero-terminat
13d0: 65 64 20 66 69 6c 65 20 6e 61 6d 65 20 6f 72 20  ed file name or 
13e0: 5a 5f 4e 55 4c 4c 20 2a 2f 0a 20 20 20 20 75 49  Z_NULL */.    uI
13f0: 6e 74 20 20 20 20 6e 61 6d 65 5f 6d 61 78 3b 20  nt    name_max; 
1400: 20 20 2f 2a 20 73 70 61 63 65 20 61 74 20 6e 61    /* space at na
1410: 6d 65 20 28 6f 6e 6c 79 20 77 68 65 6e 20 72 65  me (only when re
1420: 61 64 69 6e 67 20 68 65 61 64 65 72 29 20 2a 2f  ading header) */
1430: 0a 20 20 20 20 42 79 74 65 66 20 20 20 2a 63 6f  .    Bytef   *co
1440: 6d 6d 65 6e 74 3b 20 20 20 2f 2a 20 70 6f 69 6e  mment;   /* poin
1450: 74 65 72 20 74 6f 20 7a 65 72 6f 2d 74 65 72 6d  ter to zero-term
1460: 69 6e 61 74 65 64 20 63 6f 6d 6d 65 6e 74 20 6f  inated comment o
1470: 72 20 5a 5f 4e 55 4c 4c 20 2a 2f 0a 20 20 20 20  r Z_NULL */.    
1480: 75 49 6e 74 20 20 20 20 63 6f 6d 6d 5f 6d 61 78  uInt    comm_max
1490: 3b 20 20 20 2f 2a 20 73 70 61 63 65 20 61 74 20  ;   /* space at 
14a0: 63 6f 6d 6d 65 6e 74 20 28 6f 6e 6c 79 20 77 68  comment (only wh
14b0: 65 6e 20 72 65 61 64 69 6e 67 20 68 65 61 64 65  en reading heade
14c0: 72 29 20 2a 2f 0a 20 20 20 20 69 6e 74 20 20 20  r) */.    int   
14d0: 20 20 68 63 72 63 3b 20 20 20 20 20 20 20 2f 2a    hcrc;       /*
14e0: 20 74 72 75 65 20 69 66 20 74 68 65 72 65 20 77   true if there w
14f0: 61 73 20 6f 72 20 77 69 6c 6c 20 62 65 20 61 20  as or will be a 
1500: 68 65 61 64 65 72 20 63 72 63 20 2a 2f 0a 20 20  header crc */.  
1510: 20 20 69 6e 74 20 20 20 20 20 64 6f 6e 65 3b 20    int     done; 
1520: 20 20 20 20 20 20 2f 2a 20 74 72 75 65 20 77 68        /* true wh
1530: 65 6e 20 64 6f 6e 65 20 72 65 61 64 69 6e 67 20  en done reading 
1540: 67 7a 69 70 20 68 65 61 64 65 72 20 28 6e 6f 74  gzip header (not
1550: 20 75 73 65 64 0a 20 20 20 20 20 20 20 20 20 20   used.          
1560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1570: 20 77 68 65 6e 20 77 72 69 74 69 6e 67 20 61 20   when writing a 
1580: 67 7a 69 70 20 66 69 6c 65 29 20 2a 2f 0a 7d 20  gzip file) */.} 
1590: 67 7a 5f 68 65 61 64 65 72 3b 0a 0a 74 79 70 65  gz_header;..type
15a0: 64 65 66 20 67 7a 5f 68 65 61 64 65 72 20 46 41  def gz_header FA
15b0: 52 20 2a 67 7a 5f 68 65 61 64 65 72 70 3b 0a 0a  R *gz_headerp;..
15c0: 2f 2a 0a 20 20 20 54 68 65 20 61 70 70 6c 69 63  /*.   The applic
15d0: 61 74 69 6f 6e 20 6d 75 73 74 20 75 70 64 61 74  ation must updat
15e0: 65 20 6e 65 78 74 5f 69 6e 20 61 6e 64 20 61 76  e next_in and av
15f0: 61 69 6c 5f 69 6e 20 77 68 65 6e 20 61 76 61 69  ail_in when avai
1600: 6c 5f 69 6e 20 68 61 73 0a 20 20 20 64 72 6f 70  l_in has.   drop
1610: 70 65 64 20 74 6f 20 7a 65 72 6f 2e 20 49 74 20  ped to zero. It 
1620: 6d 75 73 74 20 75 70 64 61 74 65 20 6e 65 78 74  must update next
1630: 5f 6f 75 74 20 61 6e 64 20 61 76 61 69 6c 5f 6f  _out and avail_o
1640: 75 74 20 77 68 65 6e 20 61 76 61 69 6c 5f 6f 75  ut when avail_ou
1650: 74 0a 20 20 20 68 61 73 20 64 72 6f 70 70 65 64  t.   has dropped
1660: 20 74 6f 20 7a 65 72 6f 2e 20 54 68 65 20 61 70   to zero. The ap
1670: 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 69  plication must i
1680: 6e 69 74 69 61 6c 69 7a 65 20 7a 61 6c 6c 6f 63  nitialize zalloc
1690: 2c 20 7a 66 72 65 65 20 61 6e 64 0a 20 20 20 6f  , zfree and.   o
16a0: 70 61 71 75 65 20 62 65 66 6f 72 65 20 63 61 6c  paque before cal
16b0: 6c 69 6e 67 20 74 68 65 20 69 6e 69 74 20 66 75  ling the init fu
16c0: 6e 63 74 69 6f 6e 2e 20 41 6c 6c 20 6f 74 68 65  nction. All othe
16d0: 72 20 66 69 65 6c 64 73 20 61 72 65 20 73 65 74  r fields are set
16e0: 20 62 79 20 74 68 65 0a 20 20 20 63 6f 6d 70 72   by the.   compr
16f0: 65 73 73 69 6f 6e 20 6c 69 62 72 61 72 79 20 61  ession library a
1700: 6e 64 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 75  nd must not be u
1710: 70 64 61 74 65 64 20 62 79 20 74 68 65 20 61 70  pdated by the ap
1720: 70 6c 69 63 61 74 69 6f 6e 2e 0a 0a 20 20 20 54  plication...   T
1730: 68 65 20 6f 70 61 71 75 65 20 76 61 6c 75 65 20  he opaque value 
1740: 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20  provided by the 
1750: 61 70 70 6c 69 63 61 74 69 6f 6e 20 77 69 6c 6c  application will
1760: 20 62 65 20 70 61 73 73 65 64 20 61 73 20 74 68   be passed as th
1770: 65 20 66 69 72 73 74 0a 20 20 20 70 61 72 61 6d  e first.   param
1780: 65 74 65 72 20 66 6f 72 20 63 61 6c 6c 73 20 6f  eter for calls o
1790: 66 20 7a 61 6c 6c 6f 63 20 61 6e 64 20 7a 66 72  f zalloc and zfr
17a0: 65 65 2e 20 54 68 69 73 20 63 61 6e 20 62 65 20  ee. This can be 
17b0: 75 73 65 66 75 6c 20 66 6f 72 20 63 75 73 74 6f  useful for custo
17c0: 6d 0a 20 20 20 6d 65 6d 6f 72 79 20 6d 61 6e 61  m.   memory mana
17d0: 67 65 6d 65 6e 74 2e 20 54 68 65 20 63 6f 6d 70  gement. The comp
17e0: 72 65 73 73 69 6f 6e 20 6c 69 62 72 61 72 79 20  ression library 
17f0: 61 74 74 61 63 68 65 73 20 6e 6f 20 6d 65 61 6e  attaches no mean
1800: 69 6e 67 20 74 6f 20 74 68 65 0a 20 20 20 6f 70  ing to the.   op
1810: 61 71 75 65 20 76 61 6c 75 65 2e 0a 0a 20 20 20  aque value...   
1820: 7a 61 6c 6c 6f 63 20 6d 75 73 74 20 72 65 74 75  zalloc must retu
1830: 72 6e 20 5a 5f 4e 55 4c 4c 20 69 66 20 74 68 65  rn Z_NULL if the
1840: 72 65 20 69 73 20 6e 6f 74 20 65 6e 6f 75 67 68  re is not enough
1850: 20 6d 65 6d 6f 72 79 20 66 6f 72 20 74 68 65 20   memory for the 
1860: 6f 62 6a 65 63 74 2e 0a 20 20 20 49 66 20 7a 6c  object..   If zl
1870: 69 62 20 69 73 20 75 73 65 64 20 69 6e 20 61 20  ib is used in a 
1880: 6d 75 6c 74 69 2d 74 68 72 65 61 64 65 64 20 61  multi-threaded a
1890: 70 70 6c 69 63 61 74 69 6f 6e 2c 20 7a 61 6c 6c  pplication, zall
18a0: 6f 63 20 61 6e 64 20 7a 66 72 65 65 20 6d 75 73  oc and zfree mus
18b0: 74 20 62 65 0a 20 20 20 74 68 72 65 61 64 20 73  t be.   thread s
18c0: 61 66 65 2e 0a 0a 20 20 20 4f 6e 20 31 36 2d 62  afe...   On 16-b
18d0: 69 74 20 73 79 73 74 65 6d 73 2c 20 74 68 65 20  it systems, the 
18e0: 66 75 6e 63 74 69 6f 6e 73 20 7a 61 6c 6c 6f 63  functions zalloc
18f0: 20 61 6e 64 20 7a 66 72 65 65 20 6d 75 73 74 20   and zfree must 
1900: 62 65 20 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63  be able to alloc
1910: 61 74 65 0a 20 20 20 65 78 61 63 74 6c 79 20 36  ate.   exactly 6
1920: 35 35 33 36 20 62 79 74 65 73 2c 20 62 75 74 20  5536 bytes, but 
1930: 77 69 6c 6c 20 6e 6f 74 20 62 65 20 72 65 71 75  will not be requ
1940: 69 72 65 64 20 74 6f 20 61 6c 6c 6f 63 61 74 65  ired to allocate
1950: 20 6d 6f 72 65 20 74 68 61 6e 20 74 68 69 73 0a   more than this.
1960: 20 20 20 69 66 20 74 68 65 20 73 79 6d 62 6f 6c     if the symbol
1970: 20 4d 41 58 53 45 47 5f 36 34 4b 20 69 73 20 64   MAXSEG_64K is d
1980: 65 66 69 6e 65 64 20 28 73 65 65 20 7a 63 6f 6e  efined (see zcon
1990: 66 2e 68 29 2e 20 57 41 52 4e 49 4e 47 3a 20 4f  f.h). WARNING: O
19a0: 6e 20 4d 53 44 4f 53 2c 0a 20 20 20 70 6f 69 6e  n MSDOS,.   poin
19b0: 74 65 72 73 20 72 65 74 75 72 6e 65 64 20 62 79  ters returned by
19c0: 20 7a 61 6c 6c 6f 63 20 66 6f 72 20 6f 62 6a 65   zalloc for obje
19d0: 63 74 73 20 6f 66 20 65 78 61 63 74 6c 79 20 36  cts of exactly 6
19e0: 35 35 33 36 20 62 79 74 65 73 20 2a 6d 75 73 74  5536 bytes *must
19f0: 2a 0a 20 20 20 68 61 76 65 20 74 68 65 69 72 20  *.   have their 
1a00: 6f 66 66 73 65 74 20 6e 6f 72 6d 61 6c 69 7a 65  offset normalize
1a10: 64 20 74 6f 20 7a 65 72 6f 2e 20 54 68 65 20 64  d to zero. The d
1a20: 65 66 61 75 6c 74 20 61 6c 6c 6f 63 61 74 69 6f  efault allocatio
1a30: 6e 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 70 72  n function.   pr
1a40: 6f 76 69 64 65 64 20 62 79 20 74 68 69 73 20 6c  ovided by this l
1a50: 69 62 72 61 72 79 20 65 6e 73 75 72 65 73 20 74  ibrary ensures t
1a60: 68 69 73 20 28 73 65 65 20 7a 75 74 69 6c 2e 63  his (see zutil.c
1a70: 29 2e 20 54 6f 20 72 65 64 75 63 65 20 6d 65 6d  ). To reduce mem
1a80: 6f 72 79 0a 20 20 20 72 65 71 75 69 72 65 6d 65  ory.   requireme
1a90: 6e 74 73 20 61 6e 64 20 61 76 6f 69 64 20 61 6e  nts and avoid an
1aa0: 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6f 66 20  y allocation of 
1ab0: 36 34 4b 20 6f 62 6a 65 63 74 73 2c 20 61 74 20  64K objects, at 
1ac0: 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66 0a 20  the expense of. 
1ad0: 20 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 72 61    compression ra
1ae0: 74 69 6f 2c 20 63 6f 6d 70 69 6c 65 20 74 68 65  tio, compile the
1af0: 20 6c 69 62 72 61 72 79 20 77 69 74 68 20 2d 44   library with -D
1b00: 4d 41 58 5f 57 42 49 54 53 3d 31 34 20 28 73 65  MAX_WBITS=14 (se
1b10: 65 20 7a 63 6f 6e 66 2e 68 29 2e 0a 0a 20 20 20  e zconf.h)...   
1b20: 54 68 65 20 66 69 65 6c 64 73 20 74 6f 74 61 6c  The fields total
1b30: 5f 69 6e 20 61 6e 64 20 74 6f 74 61 6c 5f 6f 75  _in and total_ou
1b40: 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 66 6f  t can be used fo
1b50: 72 20 73 74 61 74 69 73 74 69 63 73 20 6f 72 0a  r statistics or.
1b60: 20 20 20 70 72 6f 67 72 65 73 73 20 72 65 70 6f     progress repo
1b70: 72 74 73 2e 20 41 66 74 65 72 20 63 6f 6d 70 72  rts. After compr
1b80: 65 73 73 69 6f 6e 2c 20 74 6f 74 61 6c 5f 69 6e  ession, total_in
1b90: 20 68 6f 6c 64 73 20 74 68 65 20 74 6f 74 61 6c   holds the total
1ba0: 20 73 69 7a 65 20 6f 66 0a 20 20 20 74 68 65 20   size of.   the 
1bb0: 75 6e 63 6f 6d 70 72 65 73 73 65 64 20 64 61 74  uncompressed dat
1bc0: 61 20 61 6e 64 20 6d 61 79 20 62 65 20 73 61 76  a and may be sav
1bd0: 65 64 20 66 6f 72 20 75 73 65 20 69 6e 20 74 68  ed for use in th
1be0: 65 20 64 65 63 6f 6d 70 72 65 73 73 6f 72 0a 20  e decompressor. 
1bf0: 20 20 28 70 61 72 74 69 63 75 6c 61 72 6c 79 20    (particularly 
1c00: 69 66 20 74 68 65 20 64 65 63 6f 6d 70 72 65 73  if the decompres
1c10: 73 6f 72 20 77 61 6e 74 73 20 74 6f 20 64 65 63  sor wants to dec
1c20: 6f 6d 70 72 65 73 73 20 65 76 65 72 79 74 68 69  ompress everythi
1c30: 6e 67 20 69 6e 0a 20 20 20 61 20 73 69 6e 67 6c  ng in.   a singl
1c40: 65 20 73 74 65 70 29 2e 0a 2a 2f 0a 0a 20 20 20  e step)..*/..   
1c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c60: 20 20 20 20 20 2f 2a 20 63 6f 6e 73 74 61 6e 74       /* constant
1c70: 73 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5a 5f  s */..#define Z_
1c80: 4e 4f 5f 46 4c 55 53 48 20 20 20 20 20 20 30 0a  NO_FLUSH      0.
1c90: 23 64 65 66 69 6e 65 20 5a 5f 50 41 52 54 49 41  #define Z_PARTIA
1ca0: 4c 5f 46 4c 55 53 48 20 31 20 2f 2a 20 77 69 6c  L_FLUSH 1 /* wil
1cb0: 6c 20 62 65 20 72 65 6d 6f 76 65 64 2c 20 75 73  l be removed, us
1cc0: 65 20 5a 5f 53 59 4e 43 5f 46 4c 55 53 48 20 69  e Z_SYNC_FLUSH i
1cd0: 6e 73 74 65 61 64 20 2a 2f 0a 23 64 65 66 69 6e  nstead */.#defin
1ce0: 65 20 5a 5f 53 59 4e 43 5f 46 4c 55 53 48 20 20  e Z_SYNC_FLUSH  
1cf0: 20 20 32 0a 23 64 65 66 69 6e 65 20 5a 5f 46 55    2.#define Z_FU
1d00: 4c 4c 5f 46 4c 55 53 48 20 20 20 20 33 0a 23 64  LL_FLUSH    3.#d
1d10: 65 66 69 6e 65 20 5a 5f 46 49 4e 49 53 48 20 20  efine Z_FINISH  
1d20: 20 20 20 20 20 20 34 0a 23 64 65 66 69 6e 65 20        4.#define 
1d30: 5a 5f 42 4c 4f 43 4b 20 20 20 20 20 20 20 20 20  Z_BLOCK         
1d40: 35 0a 2f 2a 20 41 6c 6c 6f 77 65 64 20 66 6c 75  5./* Allowed flu
1d50: 73 68 20 76 61 6c 75 65 73 3b 20 73 65 65 20 64  sh values; see d
1d60: 65 66 6c 61 74 65 28 29 20 61 6e 64 20 69 6e 66  eflate() and inf
1d70: 6c 61 74 65 28 29 20 62 65 6c 6f 77 20 66 6f 72  late() below for
1d80: 20 64 65 74 61 69 6c 73 20 2a 2f 0a 0a 23 64 65   details */..#de
1d90: 66 69 6e 65 20 5a 5f 4f 4b 20 20 20 20 20 20 20  fine Z_OK       
1da0: 20 20 20 20 20 30 0a 23 64 65 66 69 6e 65 20 5a       0.#define Z
1db0: 5f 53 54 52 45 41 4d 5f 45 4e 44 20 20 20 20 31  _STREAM_END    1
1dc0: 0a 23 64 65 66 69 6e 65 20 5a 5f 4e 45 45 44 5f  .#define Z_NEED_
1dd0: 44 49 43 54 20 20 20 20 20 32 0a 23 64 65 66 69  DICT     2.#defi
1de0: 6e 65 20 5a 5f 45 52 52 4e 4f 20 20 20 20 20 20  ne Z_ERRNO      
1df0: 20 20 28 2d 31 29 0a 23 64 65 66 69 6e 65 20 5a    (-1).#define Z
1e00: 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 28 2d  _STREAM_ERROR (-
1e10: 32 29 0a 23 64 65 66 69 6e 65 20 5a 5f 44 41 54  2).#define Z_DAT
1e20: 41 5f 45 52 52 4f 52 20 20 20 28 2d 33 29 0a 23  A_ERROR   (-3).#
1e30: 64 65 66 69 6e 65 20 5a 5f 4d 45 4d 5f 45 52 52  define Z_MEM_ERR
1e40: 4f 52 20 20 20 20 28 2d 34 29 0a 23 64 65 66 69  OR    (-4).#defi
1e50: 6e 65 20 5a 5f 42 55 46 5f 45 52 52 4f 52 20 20  ne Z_BUF_ERROR  
1e60: 20 20 28 2d 35 29 0a 23 64 65 66 69 6e 65 20 5a    (-5).#define Z
1e70: 5f 56 45 52 53 49 4f 4e 5f 45 52 52 4f 52 20 28  _VERSION_ERROR (
1e80: 2d 36 29 0a 2f 2a 20 52 65 74 75 72 6e 20 63 6f  -6)./* Return co
1e90: 64 65 73 20 66 6f 72 20 74 68 65 20 63 6f 6d 70  des for the comp
1ea0: 72 65 73 73 69 6f 6e 2f 64 65 63 6f 6d 70 72 65  ression/decompre
1eb0: 73 73 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 2e  ssion functions.
1ec0: 20 4e 65 67 61 74 69 76 65 0a 20 2a 20 76 61 6c   Negative. * val
1ed0: 75 65 73 20 61 72 65 20 65 72 72 6f 72 73 2c 20  ues are errors, 
1ee0: 70 6f 73 69 74 69 76 65 20 76 61 6c 75 65 73 20  positive values 
1ef0: 61 72 65 20 75 73 65 64 20 66 6f 72 20 73 70 65  are used for spe
1f00: 63 69 61 6c 20 62 75 74 20 6e 6f 72 6d 61 6c 20  cial but normal 
1f10: 65 76 65 6e 74 73 2e 0a 20 2a 2f 0a 0a 23 64 65  events.. */..#de
1f20: 66 69 6e 65 20 5a 5f 4e 4f 5f 43 4f 4d 50 52 45  fine Z_NO_COMPRE
1f30: 53 53 49 4f 4e 20 20 20 20 20 20 20 20 20 30 0a  SSION         0.
1f40: 23 64 65 66 69 6e 65 20 5a 5f 42 45 53 54 5f 53  #define Z_BEST_S
1f50: 50 45 45 44 20 20 20 20 20 20 20 20 20 20 20 20  PEED            
1f60: 20 31 0a 23 64 65 66 69 6e 65 20 5a 5f 42 45 53   1.#define Z_BES
1f70: 54 5f 43 4f 4d 50 52 45 53 53 49 4f 4e 20 20 20  T_COMPRESSION   
1f80: 20 20 20 20 39 0a 23 64 65 66 69 6e 65 20 5a 5f      9.#define Z_
1f90: 44 45 46 41 55 4c 54 5f 43 4f 4d 50 52 45 53 53  DEFAULT_COMPRESS
1fa0: 49 4f 4e 20 20 28 2d 31 29 0a 2f 2a 20 63 6f 6d  ION  (-1)./* com
1fb0: 70 72 65 73 73 69 6f 6e 20 6c 65 76 65 6c 73 20  pression levels 
1fc0: 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5a 5f 46 49  */..#define Z_FI
1fd0: 4c 54 45 52 45 44 20 20 20 20 20 20 20 20 20 20  LTERED          
1fe0: 20 20 31 0a 23 64 65 66 69 6e 65 20 5a 5f 48 55    1.#define Z_HU
1ff0: 46 46 4d 41 4e 5f 4f 4e 4c 59 20 20 20 20 20 20  FFMAN_ONLY      
2000: 20 20 32 0a 23 64 65 66 69 6e 65 20 5a 5f 52 4c    2.#define Z_RL
2010: 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  E               
2020: 20 20 33 0a 23 64 65 66 69 6e 65 20 5a 5f 46 49    3.#define Z_FI
2030: 58 45 44 20 20 20 20 20 20 20 20 20 20 20 20 20  XED             
2040: 20 20 34 0a 23 64 65 66 69 6e 65 20 5a 5f 44 45    4.#define Z_DE
2050: 46 41 55 4c 54 5f 53 54 52 41 54 45 47 59 20 20  FAULT_STRATEGY  
2060: 20 20 30 0a 2f 2a 20 63 6f 6d 70 72 65 73 73 69    0./* compressi
2070: 6f 6e 20 73 74 72 61 74 65 67 79 3b 20 73 65 65  on strategy; see
2080: 20 64 65 66 6c 61 74 65 49 6e 69 74 32 28 29 20   deflateInit2() 
2090: 62 65 6c 6f 77 20 66 6f 72 20 64 65 74 61 69 6c  below for detail
20a0: 73 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5a 5f  s */..#define Z_
20b0: 42 49 4e 41 52 59 20 20 20 30 0a 23 64 65 66 69  BINARY   0.#defi
20c0: 6e 65 20 5a 5f 54 45 58 54 20 20 20 20 20 31 0a  ne Z_TEXT     1.
20d0: 23 64 65 66 69 6e 65 20 5a 5f 41 53 43 49 49 20  #define Z_ASCII 
20e0: 20 20 20 5a 5f 54 45 58 54 20 20 20 2f 2a 20 66     Z_TEXT   /* f
20f0: 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  or compatibility
2100: 20 77 69 74 68 20 31 2e 32 2e 32 20 61 6e 64 20   with 1.2.2 and 
2110: 65 61 72 6c 69 65 72 20 2a 2f 0a 23 64 65 66 69  earlier */.#defi
2120: 6e 65 20 5a 5f 55 4e 4b 4e 4f 57 4e 20 20 32 0a  ne Z_UNKNOWN  2.
2130: 2f 2a 20 50 6f 73 73 69 62 6c 65 20 76 61 6c 75  /* Possible valu
2140: 65 73 20 6f 66 20 74 68 65 20 64 61 74 61 5f 74  es of the data_t
2150: 79 70 65 20 66 69 65 6c 64 20 28 74 68 6f 75 67  ype field (thoug
2160: 68 20 73 65 65 20 69 6e 66 6c 61 74 65 28 29 29  h see inflate())
2170: 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 5a 5f 44   */..#define Z_D
2180: 45 46 4c 41 54 45 44 20 20 20 38 0a 2f 2a 20 54  EFLATED   8./* T
2190: 68 65 20 64 65 66 6c 61 74 65 20 63 6f 6d 70 72  he deflate compr
21a0: 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 20 28 74  ession method (t
21b0: 68 65 20 6f 6e 6c 79 20 6f 6e 65 20 73 75 70 70  he only one supp
21c0: 6f 72 74 65 64 20 69 6e 20 74 68 69 73 20 76 65  orted in this ve
21d0: 72 73 69 6f 6e 29 20 2a 2f 0a 0a 23 64 65 66 69  rsion) */..#defi
21e0: 6e 65 20 5a 5f 4e 55 4c 4c 20 20 30 20 20 2f 2a  ne Z_NULL  0  /*
21f0: 20 66 6f 72 20 69 6e 69 74 69 61 6c 69 7a 69 6e   for initializin
2200: 67 20 7a 61 6c 6c 6f 63 2c 20 7a 66 72 65 65 2c  g zalloc, zfree,
2210: 20 6f 70 61 71 75 65 20 2a 2f 0a 0a 23 64 65 66   opaque */..#def
2220: 69 6e 65 20 7a 6c 69 62 5f 76 65 72 73 69 6f 6e  ine zlib_version
2230: 20 7a 6c 69 62 56 65 72 73 69 6f 6e 28 29 0a 2f   zlibVersion()./
2240: 2a 20 66 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c  * for compatibil
2250: 69 74 79 20 77 69 74 68 20 76 65 72 73 69 6f 6e  ity with version
2260: 73 20 3c 20 31 2e 30 2e 32 20 2a 2f 0a 0a 20 20  s < 1.0.2 */..  
2270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2280: 20 20 20 20 20 20 2f 2a 20 62 61 73 69 63 20 66        /* basic f
2290: 75 6e 63 74 69 6f 6e 73 20 2a 2f 0a 0a 5a 45 58  unctions */..ZEX
22a0: 54 45 52 4e 20 63 6f 6e 73 74 20 63 68 61 72 20  TERN const char 
22b0: 2a 20 5a 45 58 50 4f 52 54 20 7a 6c 69 62 56 65  * ZEXPORT zlibVe
22c0: 72 73 69 6f 6e 20 4f 46 28 28 76 6f 69 64 29 29  rsion OF((void))
22d0: 3b 0a 2f 2a 20 54 68 65 20 61 70 70 6c 69 63 61  ;./* The applica
22e0: 74 69 6f 6e 20 63 61 6e 20 63 6f 6d 70 61 72 65  tion can compare
22f0: 20 7a 6c 69 62 56 65 72 73 69 6f 6e 20 61 6e 64   zlibVersion and
2300: 20 5a 4c 49 42 5f 56 45 52 53 49 4f 4e 20 66 6f   ZLIB_VERSION fo
2310: 72 20 63 6f 6e 73 69 73 74 65 6e 63 79 2e 0a 20  r consistency.. 
2320: 20 20 49 66 20 74 68 65 20 66 69 72 73 74 20 63    If the first c
2330: 68 61 72 61 63 74 65 72 20 64 69 66 66 65 72 73  haracter differs
2340: 2c 20 74 68 65 20 6c 69 62 72 61 72 79 20 63 6f  , the library co
2350: 64 65 20 61 63 74 75 61 6c 6c 79 20 75 73 65 64  de actually used
2360: 20 69 73 0a 20 20 20 6e 6f 74 20 63 6f 6d 70 61   is.   not compa
2370: 74 69 62 6c 65 20 77 69 74 68 20 74 68 65 20 7a  tible with the z
2380: 6c 69 62 2e 68 20 68 65 61 64 65 72 20 66 69 6c  lib.h header fil
2390: 65 20 75 73 65 64 20 62 79 20 74 68 65 20 61 70  e used by the ap
23a0: 70 6c 69 63 61 74 69 6f 6e 2e 0a 20 20 20 54 68  plication..   Th
23b0: 69 73 20 63 68 65 63 6b 20 69 73 20 61 75 74 6f  is check is auto
23c0: 6d 61 74 69 63 61 6c 6c 79 20 6d 61 64 65 20 62  matically made b
23d0: 79 20 64 65 66 6c 61 74 65 49 6e 69 74 20 61 6e  y deflateInit an
23e0: 64 20 69 6e 66 6c 61 74 65 49 6e 69 74 2e 0a 20  d inflateInit.. 
23f0: 2a 2f 0a 0a 2f 2a 0a 5a 45 58 54 45 52 4e 20 69  */../*.ZEXTERN i
2400: 6e 74 20 5a 45 58 50 4f 52 54 20 64 65 66 6c 61  nt ZEXPORT defla
2410: 74 65 49 6e 69 74 20 4f 46 28 28 7a 5f 73 74 72  teInit OF((z_str
2420: 65 61 6d 70 20 73 74 72 6d 2c 20 69 6e 74 20 6c  eamp strm, int l
2430: 65 76 65 6c 29 29 3b 0a 0a 20 20 20 20 20 49 6e  evel));..     In
2440: 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20 69 6e  itializes the in
2450: 74 65 72 6e 61 6c 20 73 74 72 65 61 6d 20 73 74  ternal stream st
2460: 61 74 65 20 66 6f 72 20 63 6f 6d 70 72 65 73 73  ate for compress
2470: 69 6f 6e 2e 20 54 68 65 20 66 69 65 6c 64 73 0a  ion. The fields.
2480: 20 20 20 7a 61 6c 6c 6f 63 2c 20 7a 66 72 65 65     zalloc, zfree
2490: 20 61 6e 64 20 6f 70 61 71 75 65 20 6d 75 73 74   and opaque must
24a0: 20 62 65 20 69 6e 69 74 69 61 6c 69 7a 65 64 20   be initialized 
24b0: 62 65 66 6f 72 65 20 62 79 20 74 68 65 20 63 61  before by the ca
24c0: 6c 6c 65 72 2e 0a 20 20 20 49 66 20 7a 61 6c 6c  ller..   If zall
24d0: 6f 63 20 61 6e 64 20 7a 66 72 65 65 20 61 72 65  oc and zfree are
24e0: 20 73 65 74 20 74 6f 20 5a 5f 4e 55 4c 4c 2c 20   set to Z_NULL, 
24f0: 64 65 66 6c 61 74 65 49 6e 69 74 20 75 70 64 61  deflateInit upda
2500: 74 65 73 20 74 68 65 6d 20 74 6f 0a 20 20 20 75  tes them to.   u
2510: 73 65 20 64 65 66 61 75 6c 74 20 61 6c 6c 6f 63  se default alloc
2520: 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 2e  ation functions.
2530: 0a 0a 20 20 20 20 20 54 68 65 20 63 6f 6d 70 72  ..     The compr
2540: 65 73 73 69 6f 6e 20 6c 65 76 65 6c 20 6d 75 73  ession level mus
2550: 74 20 62 65 20 5a 5f 44 45 46 41 55 4c 54 5f 43  t be Z_DEFAULT_C
2560: 4f 4d 50 52 45 53 53 49 4f 4e 2c 20 6f 72 20 62  OMPRESSION, or b
2570: 65 74 77 65 65 6e 20 30 20 61 6e 64 20 39 3a 0a  etween 0 and 9:.
2580: 20 20 20 31 20 67 69 76 65 73 20 62 65 73 74 20     1 gives best 
2590: 73 70 65 65 64 2c 20 39 20 67 69 76 65 73 20 62  speed, 9 gives b
25a0: 65 73 74 20 63 6f 6d 70 72 65 73 73 69 6f 6e 2c  est compression,
25b0: 20 30 20 67 69 76 65 73 20 6e 6f 20 63 6f 6d 70   0 gives no comp
25c0: 72 65 73 73 69 6f 6e 20 61 74 0a 20 20 20 61 6c  ression at.   al
25d0: 6c 20 28 74 68 65 20 69 6e 70 75 74 20 64 61 74  l (the input dat
25e0: 61 20 69 73 20 73 69 6d 70 6c 79 20 63 6f 70 69  a is simply copi
25f0: 65 64 20 61 20 62 6c 6f 63 6b 20 61 74 20 61 20  ed a block at a 
2600: 74 69 6d 65 29 2e 0a 20 20 20 5a 5f 44 45 46 41  time)..   Z_DEFA
2610: 55 4c 54 5f 43 4f 4d 50 52 45 53 53 49 4f 4e 20  ULT_COMPRESSION 
2620: 72 65 71 75 65 73 74 73 20 61 20 64 65 66 61 75  requests a defau
2630: 6c 74 20 63 6f 6d 70 72 6f 6d 69 73 65 20 62 65  lt compromise be
2640: 74 77 65 65 6e 20 73 70 65 65 64 20 61 6e 64 0a  tween speed and.
2650: 20 20 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 28     compression (
2660: 63 75 72 72 65 6e 74 6c 79 20 65 71 75 69 76 61  currently equiva
2670: 6c 65 6e 74 20 74 6f 20 6c 65 76 65 6c 20 36 29  lent to level 6)
2680: 2e 0a 0a 20 20 20 20 20 64 65 66 6c 61 74 65 49  ...     deflateI
2690: 6e 69 74 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b  nit returns Z_OK
26a0: 20 69 66 20 73 75 63 63 65 73 73 2c 20 5a 5f 4d   if success, Z_M
26b0: 45 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 72  EM_ERROR if ther
26c0: 65 20 77 61 73 20 6e 6f 74 0a 20 20 20 65 6e 6f  e was not.   eno
26d0: 75 67 68 20 6d 65 6d 6f 72 79 2c 20 5a 5f 53 54  ugh memory, Z_ST
26e0: 52 45 41 4d 5f 45 52 52 4f 52 20 69 66 20 6c 65  REAM_ERROR if le
26f0: 76 65 6c 20 69 73 20 6e 6f 74 20 61 20 76 61 6c  vel is not a val
2700: 69 64 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c  id compression l
2710: 65 76 65 6c 2c 0a 20 20 20 5a 5f 56 45 52 53 49  evel,.   Z_VERSI
2720: 4f 4e 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20  ON_ERROR if the 
2730: 7a 6c 69 62 20 6c 69 62 72 61 72 79 20 76 65 72  zlib library ver
2740: 73 69 6f 6e 20 28 7a 6c 69 62 5f 76 65 72 73 69  sion (zlib_versi
2750: 6f 6e 29 20 69 73 20 69 6e 63 6f 6d 70 61 74 69  on) is incompati
2760: 62 6c 65 0a 20 20 20 77 69 74 68 20 74 68 65 20  ble.   with the 
2770: 76 65 72 73 69 6f 6e 20 61 73 73 75 6d 65 64 20  version assumed 
2780: 62 79 20 74 68 65 20 63 61 6c 6c 65 72 20 28 5a  by the caller (Z
2790: 4c 49 42 5f 56 45 52 53 49 4f 4e 29 2e 0a 20 20  LIB_VERSION)..  
27a0: 20 6d 73 67 20 69 73 20 73 65 74 20 74 6f 20 6e   msg is set to n
27b0: 75 6c 6c 20 69 66 20 74 68 65 72 65 20 69 73 20  ull if there is 
27c0: 6e 6f 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  no error message
27d0: 2e 20 20 64 65 66 6c 61 74 65 49 6e 69 74 20 64  .  deflateInit d
27e0: 6f 65 73 20 6e 6f 74 0a 20 20 20 70 65 72 66 6f  oes not.   perfo
27f0: 72 6d 20 61 6e 79 20 63 6f 6d 70 72 65 73 73 69  rm any compressi
2800: 6f 6e 3a 20 74 68 69 73 20 77 69 6c 6c 20 62 65  on: this will be
2810: 20 64 6f 6e 65 20 62 79 20 64 65 66 6c 61 74 65   done by deflate
2820: 28 29 2e 0a 2a 2f 0a 0a 0a 5a 45 58 54 45 52 4e  ()..*/...ZEXTERN
2830: 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 64 65 66   int ZEXPORT def
2840: 6c 61 74 65 20 4f 46 28 28 7a 5f 73 74 72 65 61  late OF((z_strea
2850: 6d 70 20 73 74 72 6d 2c 20 69 6e 74 20 66 6c 75  mp strm, int flu
2860: 73 68 29 29 3b 0a 2f 2a 0a 20 20 20 20 64 65 66  sh));./*.    def
2870: 6c 61 74 65 20 63 6f 6d 70 72 65 73 73 65 73 20  late compresses 
2880: 61 73 20 6d 75 63 68 20 64 61 74 61 20 61 73 20  as much data as 
2890: 70 6f 73 73 69 62 6c 65 2c 20 61 6e 64 20 73 74  possible, and st
28a0: 6f 70 73 20 77 68 65 6e 20 74 68 65 20 69 6e 70  ops when the inp
28b0: 75 74 0a 20 20 62 75 66 66 65 72 20 62 65 63 6f  ut.  buffer beco
28c0: 6d 65 73 20 65 6d 70 74 79 20 6f 72 20 74 68 65  mes empty or the
28d0: 20 6f 75 74 70 75 74 20 62 75 66 66 65 72 20 62   output buffer b
28e0: 65 63 6f 6d 65 73 20 66 75 6c 6c 2e 20 49 74 20  ecomes full. It 
28f0: 6d 61 79 20 69 6e 74 72 6f 64 75 63 65 20 73 6f  may introduce so
2900: 6d 65 0a 20 20 6f 75 74 70 75 74 20 6c 61 74 65  me.  output late
2910: 6e 63 79 20 28 72 65 61 64 69 6e 67 20 69 6e 70  ncy (reading inp
2920: 75 74 20 77 69 74 68 6f 75 74 20 70 72 6f 64 75  ut without produ
2930: 63 69 6e 67 20 61 6e 79 20 6f 75 74 70 75 74 29  cing any output)
2940: 20 65 78 63 65 70 74 20 77 68 65 6e 0a 20 20 66   except when.  f
2950: 6f 72 63 65 64 20 74 6f 20 66 6c 75 73 68 2e 0a  orced to flush..
2960: 0a 20 20 20 20 54 68 65 20 64 65 74 61 69 6c 65  .    The detaile
2970: 64 20 73 65 6d 61 6e 74 69 63 73 20 61 72 65 20  d semantics are 
2980: 61 73 20 66 6f 6c 6c 6f 77 73 2e 20 64 65 66 6c  as follows. defl
2990: 61 74 65 20 70 65 72 66 6f 72 6d 73 20 6f 6e 65  ate performs one
29a0: 20 6f 72 20 62 6f 74 68 20 6f 66 20 74 68 65 0a   or both of the.
29b0: 20 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 63 74 69    following acti
29c0: 6f 6e 73 3a 0a 0a 20 20 2d 20 43 6f 6d 70 72 65  ons:..  - Compre
29d0: 73 73 20 6d 6f 72 65 20 69 6e 70 75 74 20 73 74  ss more input st
29e0: 61 72 74 69 6e 67 20 61 74 20 6e 65 78 74 5f 69  arting at next_i
29f0: 6e 20 61 6e 64 20 75 70 64 61 74 65 20 6e 65 78  n and update nex
2a00: 74 5f 69 6e 20 61 6e 64 20 61 76 61 69 6c 5f 69  t_in and avail_i
2a10: 6e 0a 20 20 20 20 61 63 63 6f 72 64 69 6e 67 6c  n.    accordingl
2a20: 79 2e 20 49 66 20 6e 6f 74 20 61 6c 6c 20 69 6e  y. If not all in
2a30: 70 75 74 20 63 61 6e 20 62 65 20 70 72 6f 63 65  put can be proce
2a40: 73 73 65 64 20 28 62 65 63 61 75 73 65 20 74 68  ssed (because th
2a50: 65 72 65 20 69 73 20 6e 6f 74 0a 20 20 20 20 65  ere is not.    e
2a60: 6e 6f 75 67 68 20 72 6f 6f 6d 20 69 6e 20 74 68  nough room in th
2a70: 65 20 6f 75 74 70 75 74 20 62 75 66 66 65 72 29  e output buffer)
2a80: 2c 20 6e 65 78 74 5f 69 6e 20 61 6e 64 20 61 76  , next_in and av
2a90: 61 69 6c 5f 69 6e 20 61 72 65 20 75 70 64 61 74  ail_in are updat
2aa0: 65 64 20 61 6e 64 0a 20 20 20 20 70 72 6f 63 65  ed and.    proce
2ab0: 73 73 69 6e 67 20 77 69 6c 6c 20 72 65 73 75 6d  ssing will resum
2ac0: 65 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 20  e at this point 
2ad0: 66 6f 72 20 74 68 65 20 6e 65 78 74 20 63 61 6c  for the next cal
2ae0: 6c 20 6f 66 20 64 65 66 6c 61 74 65 28 29 2e 0a  l of deflate()..
2af0: 0a 20 20 2d 20 50 72 6f 76 69 64 65 20 6d 6f 72  .  - Provide mor
2b00: 65 20 6f 75 74 70 75 74 20 73 74 61 72 74 69 6e  e output startin
2b10: 67 20 61 74 20 6e 65 78 74 5f 6f 75 74 20 61 6e  g at next_out an
2b20: 64 20 75 70 64 61 74 65 20 6e 65 78 74 5f 6f 75  d update next_ou
2b30: 74 20 61 6e 64 20 61 76 61 69 6c 5f 6f 75 74 0a  t and avail_out.
2b40: 20 20 20 20 61 63 63 6f 72 64 69 6e 67 6c 79 2e      accordingly.
2b50: 20 54 68 69 73 20 61 63 74 69 6f 6e 20 69 73 20   This action is 
2b60: 66 6f 72 63 65 64 20 69 66 20 74 68 65 20 70 61  forced if the pa
2b70: 72 61 6d 65 74 65 72 20 66 6c 75 73 68 20 69 73  rameter flush is
2b80: 20 6e 6f 6e 20 7a 65 72 6f 2e 0a 20 20 20 20 46   non zero..    F
2b90: 6f 72 63 69 6e 67 20 66 6c 75 73 68 20 66 72 65  orcing flush fre
2ba0: 71 75 65 6e 74 6c 79 20 64 65 67 72 61 64 65 73  quently degrades
2bb0: 20 74 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e   the compression
2bc0: 20 72 61 74 69 6f 2c 20 73 6f 20 74 68 69 73 20   ratio, so this 
2bd0: 70 61 72 61 6d 65 74 65 72 0a 20 20 20 20 73 68  parameter.    sh
2be0: 6f 75 6c 64 20 62 65 20 73 65 74 20 6f 6e 6c 79  ould be set only
2bf0: 20 77 68 65 6e 20 6e 65 63 65 73 73 61 72 79 20   when necessary 
2c00: 28 69 6e 20 69 6e 74 65 72 61 63 74 69 76 65 20  (in interactive 
2c10: 61 70 70 6c 69 63 61 74 69 6f 6e 73 29 2e 0a 20  applications).. 
2c20: 20 20 20 53 6f 6d 65 20 6f 75 74 70 75 74 20 6d     Some output m
2c30: 61 79 20 62 65 20 70 72 6f 76 69 64 65 64 20 65  ay be provided e
2c40: 76 65 6e 20 69 66 20 66 6c 75 73 68 20 69 73 20  ven if flush is 
2c50: 6e 6f 74 20 73 65 74 2e 0a 0a 20 20 42 65 66 6f  not set...  Befo
2c60: 72 65 20 74 68 65 20 63 61 6c 6c 20 6f 66 20 64  re the call of d
2c70: 65 66 6c 61 74 65 28 29 2c 20 74 68 65 20 61 70  eflate(), the ap
2c80: 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64  plication should
2c90: 20 65 6e 73 75 72 65 20 74 68 61 74 20 61 74 20   ensure that at 
2ca0: 6c 65 61 73 74 0a 20 20 6f 6e 65 20 6f 66 20 74  least.  one of t
2cb0: 68 65 20 61 63 74 69 6f 6e 73 20 69 73 20 70 6f  he actions is po
2cc0: 73 73 69 62 6c 65 2c 20 62 79 20 70 72 6f 76 69  ssible, by provi
2cd0: 64 69 6e 67 20 6d 6f 72 65 20 69 6e 70 75 74 20  ding more input 
2ce0: 61 6e 64 2f 6f 72 20 63 6f 6e 73 75 6d 69 6e 67  and/or consuming
2cf0: 0a 20 20 6d 6f 72 65 20 6f 75 74 70 75 74 2c 20  .  more output, 
2d00: 61 6e 64 20 75 70 64 61 74 69 6e 67 20 61 76 61  and updating ava
2d10: 69 6c 5f 69 6e 20 6f 72 20 61 76 61 69 6c 5f 6f  il_in or avail_o
2d20: 75 74 20 61 63 63 6f 72 64 69 6e 67 6c 79 3b 20  ut accordingly; 
2d30: 61 76 61 69 6c 5f 6f 75 74 0a 20 20 73 68 6f 75  avail_out.  shou
2d40: 6c 64 20 6e 65 76 65 72 20 62 65 20 7a 65 72 6f  ld never be zero
2d50: 20 62 65 66 6f 72 65 20 74 68 65 20 63 61 6c 6c   before the call
2d60: 2e 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f  . The applicatio
2d70: 6e 20 63 61 6e 20 63 6f 6e 73 75 6d 65 20 74 68  n can consume th
2d80: 65 0a 20 20 63 6f 6d 70 72 65 73 73 65 64 20 6f  e.  compressed o
2d90: 75 74 70 75 74 20 77 68 65 6e 20 69 74 20 77 61  utput when it wa
2da0: 6e 74 73 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65  nts, for example
2db0: 20 77 68 65 6e 20 74 68 65 20 6f 75 74 70 75 74   when the output
2dc0: 20 62 75 66 66 65 72 20 69 73 20 66 75 6c 6c 0a   buffer is full.
2dd0: 20 20 28 61 76 61 69 6c 5f 6f 75 74 20 3d 3d 20    (avail_out == 
2de0: 30 29 2c 20 6f 72 20 61 66 74 65 72 20 65 61 63  0), or after eac
2df0: 68 20 63 61 6c 6c 20 6f 66 20 64 65 66 6c 61 74  h call of deflat
2e00: 65 28 29 2e 20 49 66 20 64 65 66 6c 61 74 65 20  e(). If deflate 
2e10: 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 0a 20 20 61  returns Z_OK.  a
2e20: 6e 64 20 77 69 74 68 20 7a 65 72 6f 20 61 76 61  nd with zero ava
2e30: 69 6c 5f 6f 75 74 2c 20 69 74 20 6d 75 73 74 20  il_out, it must 
2e40: 62 65 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20  be called again 
2e50: 61 66 74 65 72 20 6d 61 6b 69 6e 67 20 72 6f 6f  after making roo
2e60: 6d 20 69 6e 20 74 68 65 0a 20 20 6f 75 74 70 75  m in the.  outpu
2e70: 74 20 62 75 66 66 65 72 20 62 65 63 61 75 73 65  t buffer because
2e80: 20 74 68 65 72 65 20 6d 69 67 68 74 20 62 65 20   there might be 
2e90: 6d 6f 72 65 20 6f 75 74 70 75 74 20 70 65 6e 64  more output pend
2ea0: 69 6e 67 2e 0a 0a 20 20 20 20 4e 6f 72 6d 61 6c  ing...    Normal
2eb0: 6c 79 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  ly the parameter
2ec0: 20 66 6c 75 73 68 20 69 73 20 73 65 74 20 74 6f   flush is set to
2ed0: 20 5a 5f 4e 4f 5f 46 4c 55 53 48 2c 20 77 68 69   Z_NO_FLUSH, whi
2ee0: 63 68 20 61 6c 6c 6f 77 73 20 64 65 66 6c 61 74  ch allows deflat
2ef0: 65 20 74 6f 0a 20 20 64 65 63 69 64 65 20 68 6f  e to.  decide ho
2f00: 77 20 6d 75 63 68 20 64 61 74 61 20 74 6f 20 61  w much data to a
2f10: 63 63 75 6d 75 61 6c 74 65 20 62 65 66 6f 72 65  ccumualte before
2f20: 20 70 72 6f 64 75 63 69 6e 67 20 6f 75 74 70 75   producing outpu
2f30: 74 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a 20  t, in order to. 
2f40: 20 6d 61 78 69 6d 69 7a 65 20 63 6f 6d 70 72 65   maximize compre
2f50: 73 73 69 6f 6e 2e 0a 0a 20 20 20 20 49 66 20 74  ssion...    If t
2f60: 68 65 20 70 61 72 61 6d 65 74 65 72 20 66 6c 75  he parameter flu
2f70: 73 68 20 69 73 20 73 65 74 20 74 6f 20 5a 5f 53  sh is set to Z_S
2f80: 59 4e 43 5f 46 4c 55 53 48 2c 20 61 6c 6c 20 70  YNC_FLUSH, all p
2f90: 65 6e 64 69 6e 67 20 6f 75 74 70 75 74 20 69 73  ending output is
2fa0: 0a 20 20 66 6c 75 73 68 65 64 20 74 6f 20 74 68  .  flushed to th
2fb0: 65 20 6f 75 74 70 75 74 20 62 75 66 66 65 72 20  e output buffer 
2fc0: 61 6e 64 20 74 68 65 20 6f 75 74 70 75 74 20 69  and the output i
2fd0: 73 20 61 6c 69 67 6e 65 64 20 6f 6e 20 61 20 62  s aligned on a b
2fe0: 79 74 65 20 62 6f 75 6e 64 61 72 79 2c 20 73 6f  yte boundary, so
2ff0: 0a 20 20 74 68 61 74 20 74 68 65 20 64 65 63 6f  .  that the deco
3000: 6d 70 72 65 73 73 6f 72 20 63 61 6e 20 67 65 74  mpressor can get
3010: 20 61 6c 6c 20 69 6e 70 75 74 20 64 61 74 61 20   all input data 
3020: 61 76 61 69 6c 61 62 6c 65 20 73 6f 20 66 61 72  available so far
3030: 2e 20 28 49 6e 20 70 61 72 74 69 63 75 6c 61 72  . (In particular
3040: 0a 20 20 61 76 61 69 6c 5f 69 6e 20 69 73 20 7a  .  avail_in is z
3050: 65 72 6f 20 61 66 74 65 72 20 74 68 65 20 63 61  ero after the ca
3060: 6c 6c 20 69 66 20 65 6e 6f 75 67 68 20 6f 75 74  ll if enough out
3070: 70 75 74 20 73 70 61 63 65 20 68 61 73 20 62 65  put space has be
3080: 65 6e 20 70 72 6f 76 69 64 65 64 0a 20 20 62 65  en provided.  be
3090: 66 6f 72 65 20 74 68 65 20 63 61 6c 6c 2e 29 20  fore the call.) 
30a0: 20 46 6c 75 73 68 69 6e 67 20 6d 61 79 20 64 65   Flushing may de
30b0: 67 72 61 64 65 20 63 6f 6d 70 72 65 73 73 69 6f  grade compressio
30c0: 6e 20 66 6f 72 20 73 6f 6d 65 20 63 6f 6d 70 72  n for some compr
30d0: 65 73 73 69 6f 6e 0a 20 20 61 6c 67 6f 72 69 74  ession.  algorit
30e0: 68 6d 73 20 61 6e 64 20 73 6f 20 69 74 20 73 68  hms and so it sh
30f0: 6f 75 6c 64 20 62 65 20 75 73 65 64 20 6f 6e 6c  ould be used onl
3100: 79 20 77 68 65 6e 20 6e 65 63 65 73 73 61 72 79  y when necessary
3110: 2e 0a 0a 20 20 20 20 49 66 20 66 6c 75 73 68 20  ...    If flush 
3120: 69 73 20 73 65 74 20 74 6f 20 5a 5f 46 55 4c 4c  is set to Z_FULL
3130: 5f 46 4c 55 53 48 2c 20 61 6c 6c 20 6f 75 74 70  _FLUSH, all outp
3140: 75 74 20 69 73 20 66 6c 75 73 68 65 64 20 61 73  ut is flushed as
3150: 20 77 69 74 68 0a 20 20 5a 5f 53 59 4e 43 5f 46   with.  Z_SYNC_F
3160: 4c 55 53 48 2c 20 61 6e 64 20 74 68 65 20 63 6f  LUSH, and the co
3170: 6d 70 72 65 73 73 69 6f 6e 20 73 74 61 74 65 20  mpression state 
3180: 69 73 20 72 65 73 65 74 20 73 6f 20 74 68 61 74  is reset so that
3190: 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 63   decompression c
31a0: 61 6e 0a 20 20 72 65 73 74 61 72 74 20 66 72 6f  an.  restart fro
31b0: 6d 20 74 68 69 73 20 70 6f 69 6e 74 20 69 66 20  m this point if 
31c0: 70 72 65 76 69 6f 75 73 20 63 6f 6d 70 72 65 73  previous compres
31d0: 73 65 64 20 64 61 74 61 20 68 61 73 20 62 65 65  sed data has bee
31e0: 6e 20 64 61 6d 61 67 65 64 20 6f 72 20 69 66 0a  n damaged or if.
31f0: 20 20 72 61 6e 64 6f 6d 20 61 63 63 65 73 73 20    random access 
3200: 69 73 20 64 65 73 69 72 65 64 2e 20 55 73 69 6e  is desired. Usin
3210: 67 20 5a 5f 46 55 4c 4c 5f 46 4c 55 53 48 20 74  g Z_FULL_FLUSH t
3220: 6f 6f 20 6f 66 74 65 6e 20 63 61 6e 20 73 65 72  oo often can ser
3230: 69 6f 75 73 6c 79 20 64 65 67 72 61 64 65 0a 20  iously degrade. 
3240: 20 63 6f 6d 70 72 65 73 73 69 6f 6e 2e 0a 0a 20   compression... 
3250: 20 20 20 49 66 20 64 65 66 6c 61 74 65 20 72 65     If deflate re
3260: 74 75 72 6e 73 20 77 69 74 68 20 61 76 61 69 6c  turns with avail
3270: 5f 6f 75 74 20 3d 3d 20 30 2c 20 74 68 69 73 20  _out == 0, this 
3280: 66 75 6e 63 74 69 6f 6e 20 6d 75 73 74 20 62 65  function must be
3290: 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 0a 20 20   called again.  
32a0: 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 76 61  with the same va
32b0: 6c 75 65 20 6f 66 20 74 68 65 20 66 6c 75 73 68  lue of the flush
32c0: 20 70 61 72 61 6d 65 74 65 72 20 61 6e 64 20 6d   parameter and m
32d0: 6f 72 65 20 6f 75 74 70 75 74 20 73 70 61 63 65  ore output space
32e0: 20 28 75 70 64 61 74 65 64 0a 20 20 61 76 61 69   (updated.  avai
32f0: 6c 5f 6f 75 74 29 2c 20 75 6e 74 69 6c 20 74 68  l_out), until th
3300: 65 20 66 6c 75 73 68 20 69 73 20 63 6f 6d 70 6c  e flush is compl
3310: 65 74 65 20 28 64 65 66 6c 61 74 65 20 72 65 74  ete (deflate ret
3320: 75 72 6e 73 20 77 69 74 68 20 6e 6f 6e 2d 7a 65  urns with non-ze
3330: 72 6f 0a 20 20 61 76 61 69 6c 5f 6f 75 74 29 2e  ro.  avail_out).
3340: 20 49 6e 20 74 68 65 20 63 61 73 65 20 6f 66 20   In the case of 
3350: 61 20 5a 5f 46 55 4c 4c 5f 46 4c 55 53 48 20 6f  a Z_FULL_FLUSH o
3360: 72 20 5a 5f 53 59 4e 43 5f 46 4c 55 53 48 2c 20  r Z_SYNC_FLUSH, 
3370: 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 0a 20  make sure that. 
3380: 20 61 76 61 69 6c 5f 6f 75 74 20 69 73 20 67 72   avail_out is gr
3390: 65 61 74 65 72 20 74 68 61 6e 20 73 69 78 20 74  eater than six t
33a0: 6f 20 61 76 6f 69 64 20 72 65 70 65 61 74 65 64  o avoid repeated
33b0: 20 66 6c 75 73 68 20 6d 61 72 6b 65 72 73 20 64   flush markers d
33c0: 75 65 20 74 6f 0a 20 20 61 76 61 69 6c 5f 6f 75  ue to.  avail_ou
33d0: 74 20 3d 3d 20 30 20 6f 6e 20 72 65 74 75 72 6e  t == 0 on return
33e0: 2e 0a 0a 20 20 20 20 49 66 20 74 68 65 20 70 61  ...    If the pa
33f0: 72 61 6d 65 74 65 72 20 66 6c 75 73 68 20 69 73  rameter flush is
3400: 20 73 65 74 20 74 6f 20 5a 5f 46 49 4e 49 53 48   set to Z_FINISH
3410: 2c 20 70 65 6e 64 69 6e 67 20 69 6e 70 75 74 20  , pending input 
3420: 69 73 20 70 72 6f 63 65 73 73 65 64 2c 0a 20 20  is processed,.  
3430: 70 65 6e 64 69 6e 67 20 6f 75 74 70 75 74 20 69  pending output i
3440: 73 20 66 6c 75 73 68 65 64 20 61 6e 64 20 64 65  s flushed and de
3450: 66 6c 61 74 65 20 72 65 74 75 72 6e 73 20 77 69  flate returns wi
3460: 74 68 20 5a 5f 53 54 52 45 41 4d 5f 45 4e 44 20  th Z_STREAM_END 
3470: 69 66 20 74 68 65 72 65 0a 20 20 77 61 73 20 65  if there.  was e
3480: 6e 6f 75 67 68 20 6f 75 74 70 75 74 20 73 70 61  nough output spa
3490: 63 65 3b 20 69 66 20 64 65 66 6c 61 74 65 20 72  ce; if deflate r
34a0: 65 74 75 72 6e 73 20 77 69 74 68 20 5a 5f 4f 4b  eturns with Z_OK
34b0: 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  , this function 
34c0: 6d 75 73 74 20 62 65 0a 20 20 63 61 6c 6c 65 64  must be.  called
34d0: 20 61 67 61 69 6e 20 77 69 74 68 20 5a 5f 46 49   again with Z_FI
34e0: 4e 49 53 48 20 61 6e 64 20 6d 6f 72 65 20 6f 75  NISH and more ou
34f0: 74 70 75 74 20 73 70 61 63 65 20 28 75 70 64 61  tput space (upda
3500: 74 65 64 20 61 76 61 69 6c 5f 6f 75 74 29 20 62  ted avail_out) b
3510: 75 74 20 6e 6f 0a 20 20 6d 6f 72 65 20 69 6e 70  ut no.  more inp
3520: 75 74 20 64 61 74 61 2c 20 75 6e 74 69 6c 20 69  ut data, until i
3530: 74 20 72 65 74 75 72 6e 73 20 77 69 74 68 20 5a  t returns with Z
3540: 5f 53 54 52 45 41 4d 5f 45 4e 44 20 6f 72 20 61  _STREAM_END or a
3550: 6e 20 65 72 72 6f 72 2e 20 41 66 74 65 72 0a 20  n error. After. 
3560: 20 64 65 66 6c 61 74 65 20 68 61 73 20 72 65 74   deflate has ret
3570: 75 72 6e 65 64 20 5a 5f 53 54 52 45 41 4d 5f 45  urned Z_STREAM_E
3580: 4e 44 2c 20 74 68 65 20 6f 6e 6c 79 20 70 6f 73  ND, the only pos
3590: 73 69 62 6c 65 20 6f 70 65 72 61 74 69 6f 6e 73  sible operations
35a0: 20 6f 6e 20 74 68 65 0a 20 20 73 74 72 65 61 6d   on the.  stream
35b0: 20 61 72 65 20 64 65 66 6c 61 74 65 52 65 73 65   are deflateRese
35c0: 74 20 6f 72 20 64 65 66 6c 61 74 65 45 6e 64 2e  t or deflateEnd.
35d0: 0a 0a 20 20 20 20 5a 5f 46 49 4e 49 53 48 20 63  ..    Z_FINISH c
35e0: 61 6e 20 62 65 20 75 73 65 64 20 69 6d 6d 65 64  an be used immed
35f0: 69 61 74 65 6c 79 20 61 66 74 65 72 20 64 65 66  iately after def
3600: 6c 61 74 65 49 6e 69 74 20 69 66 20 61 6c 6c 20  lateInit if all 
3610: 74 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 0a  the compression.
3620: 20 20 69 73 20 74 6f 20 62 65 20 64 6f 6e 65 20    is to be done 
3630: 69 6e 20 61 20 73 69 6e 67 6c 65 20 73 74 65 70  in a single step
3640: 2e 20 49 6e 20 74 68 69 73 20 63 61 73 65 2c 20  . In this case, 
3650: 61 76 61 69 6c 5f 6f 75 74 20 6d 75 73 74 20 62  avail_out must b
3660: 65 20 61 74 20 6c 65 61 73 74 0a 20 20 74 68 65  e at least.  the
3670: 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20   value returned 
3680: 62 79 20 64 65 66 6c 61 74 65 42 6f 75 6e 64 20  by deflateBound 
3690: 28 73 65 65 20 62 65 6c 6f 77 29 2e 20 49 66 20  (see below). If 
36a0: 64 65 66 6c 61 74 65 20 64 6f 65 73 20 6e 6f 74  deflate does not
36b0: 20 72 65 74 75 72 6e 0a 20 20 5a 5f 53 54 52 45   return.  Z_STRE
36c0: 41 4d 5f 45 4e 44 2c 20 74 68 65 6e 20 69 74 20  AM_END, then it 
36d0: 6d 75 73 74 20 62 65 20 63 61 6c 6c 65 64 20 61  must be called a
36e0: 67 61 69 6e 20 61 73 20 64 65 73 63 72 69 62 65  gain as describe
36f0: 64 20 61 62 6f 76 65 2e 0a 0a 20 20 20 20 64 65  d above...    de
3700: 66 6c 61 74 65 28 29 20 73 65 74 73 20 73 74 72  flate() sets str
3710: 6d 2d 3e 61 64 6c 65 72 20 74 6f 20 74 68 65 20  m->adler to the 
3720: 61 64 6c 65 72 33 32 20 63 68 65 63 6b 73 75 6d  adler32 checksum
3730: 20 6f 66 20 61 6c 6c 20 69 6e 70 75 74 20 72 65   of all input re
3740: 61 64 0a 20 20 73 6f 20 66 61 72 20 28 74 68 61  ad.  so far (tha
3750: 74 20 69 73 2c 20 74 6f 74 61 6c 5f 69 6e 20 62  t is, total_in b
3760: 79 74 65 73 29 2e 0a 0a 20 20 20 20 64 65 66 6c  ytes)...    defl
3770: 61 74 65 28 29 20 6d 61 79 20 75 70 64 61 74 65  ate() may update
3780: 20 73 74 72 6d 2d 3e 64 61 74 61 5f 74 79 70 65   strm->data_type
3790: 20 69 66 20 69 74 20 63 61 6e 20 6d 61 6b 65 20   if it can make 
37a0: 61 20 67 6f 6f 64 20 67 75 65 73 73 20 61 62 6f  a good guess abo
37b0: 75 74 0a 20 20 74 68 65 20 69 6e 70 75 74 20 64  ut.  the input d
37c0: 61 74 61 20 74 79 70 65 20 28 5a 5f 42 49 4e 41  ata type (Z_BINA
37d0: 52 59 20 6f 72 20 5a 5f 54 45 58 54 29 2e 20 49  RY or Z_TEXT). I
37e0: 6e 20 64 6f 75 62 74 2c 20 74 68 65 20 64 61 74  n doubt, the dat
37f0: 61 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64 0a  a is considered.
3800: 20 20 62 69 6e 61 72 79 2e 20 54 68 69 73 20 66    binary. This f
3810: 69 65 6c 64 20 69 73 20 6f 6e 6c 79 20 66 6f 72  ield is only for
3820: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 70 75 72   information pur
3830: 70 6f 73 65 73 20 61 6e 64 20 64 6f 65 73 20 6e  poses and does n
3840: 6f 74 20 61 66 66 65 63 74 0a 20 20 74 68 65 20  ot affect.  the 
3850: 63 6f 6d 70 72 65 73 73 69 6f 6e 20 61 6c 67 6f  compression algo
3860: 72 69 74 68 6d 20 69 6e 20 61 6e 79 20 6d 61 6e  rithm in any man
3870: 6e 65 72 2e 0a 0a 20 20 20 20 64 65 66 6c 61 74  ner...    deflat
3880: 65 28 29 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b  e() returns Z_OK
3890: 20 69 66 20 73 6f 6d 65 20 70 72 6f 67 72 65 73   if some progres
38a0: 73 20 68 61 73 20 62 65 65 6e 20 6d 61 64 65 20  s has been made 
38b0: 28 6d 6f 72 65 20 69 6e 70 75 74 0a 20 20 70 72  (more input.  pr
38c0: 6f 63 65 73 73 65 64 20 6f 72 20 6d 6f 72 65 20  ocessed or more 
38d0: 6f 75 74 70 75 74 20 70 72 6f 64 75 63 65 64 29  output produced)
38e0: 2c 20 5a 5f 53 54 52 45 41 4d 5f 45 4e 44 20 69  , Z_STREAM_END i
38f0: 66 20 61 6c 6c 20 69 6e 70 75 74 20 68 61 73 20  f all input has 
3900: 62 65 65 6e 0a 20 20 63 6f 6e 73 75 6d 65 64 20  been.  consumed 
3910: 61 6e 64 20 61 6c 6c 20 6f 75 74 70 75 74 20 68  and all output h
3920: 61 73 20 62 65 65 6e 20 70 72 6f 64 75 63 65 64  as been produced
3930: 20 28 6f 6e 6c 79 20 77 68 65 6e 20 66 6c 75 73   (only when flus
3940: 68 20 69 73 20 73 65 74 20 74 6f 0a 20 20 5a 5f  h is set to.  Z_
3950: 46 49 4e 49 53 48 29 2c 20 5a 5f 53 54 52 45 41  FINISH), Z_STREA
3960: 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20 73  M_ERROR if the s
3970: 74 72 65 61 6d 20 73 74 61 74 65 20 77 61 73 20  tream state was 
3980: 69 6e 63 6f 6e 73 69 73 74 65 6e 74 20 28 66 6f  inconsistent (fo
3990: 72 20 65 78 61 6d 70 6c 65 0a 20 20 69 66 20 6e  r example.  if n
39a0: 65 78 74 5f 69 6e 20 6f 72 20 6e 65 78 74 5f 6f  ext_in or next_o
39b0: 75 74 20 77 61 73 20 4e 55 4c 4c 29 2c 20 5a 5f  ut was NULL), Z_
39c0: 42 55 46 5f 45 52 52 4f 52 20 69 66 20 6e 6f 20  BUF_ERROR if no 
39d0: 70 72 6f 67 72 65 73 73 20 69 73 20 70 6f 73 73  progress is poss
39e0: 69 62 6c 65 0a 20 20 28 66 6f 72 20 65 78 61 6d  ible.  (for exam
39f0: 70 6c 65 20 61 76 61 69 6c 5f 69 6e 20 6f 72 20  ple avail_in or 
3a00: 61 76 61 69 6c 5f 6f 75 74 20 77 61 73 20 7a 65  avail_out was ze
3a10: 72 6f 29 2e 20 4e 6f 74 65 20 74 68 61 74 20 5a  ro). Note that Z
3a20: 5f 42 55 46 5f 45 52 52 4f 52 20 69 73 20 6e 6f  _BUF_ERROR is no
3a30: 74 0a 20 20 66 61 74 61 6c 2c 20 61 6e 64 20 64  t.  fatal, and d
3a40: 65 66 6c 61 74 65 28 29 20 63 61 6e 20 62 65 20  eflate() can be 
3a50: 63 61 6c 6c 65 64 20 61 67 61 69 6e 20 77 69 74  called again wit
3a60: 68 20 6d 6f 72 65 20 69 6e 70 75 74 20 61 6e 64  h more input and
3a70: 20 6d 6f 72 65 20 6f 75 74 70 75 74 0a 20 20 73   more output.  s
3a80: 70 61 63 65 20 74 6f 20 63 6f 6e 74 69 6e 75 65  pace to continue
3a90: 20 63 6f 6d 70 72 65 73 73 69 6e 67 2e 0a 2a 2f   compressing..*/
3aa0: 0a 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a  ...ZEXTERN int Z
3ab0: 45 58 50 4f 52 54 20 64 65 66 6c 61 74 65 45 6e  EXPORT deflateEn
3ac0: 64 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70 20  d OF((z_streamp 
3ad0: 73 74 72 6d 29 29 3b 0a 2f 2a 0a 20 20 20 20 20  strm));./*.     
3ae0: 41 6c 6c 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20  All dynamically 
3af0: 61 6c 6c 6f 63 61 74 65 64 20 64 61 74 61 20 73  allocated data s
3b00: 74 72 75 63 74 75 72 65 73 20 66 6f 72 20 74 68  tructures for th
3b10: 69 73 20 73 74 72 65 61 6d 20 61 72 65 20 66 72  is stream are fr
3b20: 65 65 64 2e 0a 20 20 20 54 68 69 73 20 66 75 6e  eed..   This fun
3b30: 63 74 69 6f 6e 20 64 69 73 63 61 72 64 73 20 61  ction discards a
3b40: 6e 79 20 75 6e 70 72 6f 63 65 73 73 65 64 20 69  ny unprocessed i
3b50: 6e 70 75 74 20 61 6e 64 20 64 6f 65 73 20 6e 6f  nput and does no
3b60: 74 20 66 6c 75 73 68 20 61 6e 79 0a 20 20 20 70  t flush any.   p
3b70: 65 6e 64 69 6e 67 20 6f 75 74 70 75 74 2e 0a 0a  ending output...
3b80: 20 20 20 20 20 64 65 66 6c 61 74 65 45 6e 64 20       deflateEnd 
3b90: 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20 69 66 20  returns Z_OK if 
3ba0: 73 75 63 63 65 73 73 2c 20 5a 5f 53 54 52 45 41  success, Z_STREA
3bb0: 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 0a 20  M_ERROR if the. 
3bc0: 20 20 73 74 72 65 61 6d 20 73 74 61 74 65 20 77    stream state w
3bd0: 61 73 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74 2c  as inconsistent,
3be0: 20 5a 5f 44 41 54 41 5f 45 52 52 4f 52 20 69 66   Z_DATA_ERROR if
3bf0: 20 74 68 65 20 73 74 72 65 61 6d 20 77 61 73 20   the stream was 
3c00: 66 72 65 65 64 0a 20 20 20 70 72 65 6d 61 74 75  freed.   prematu
3c10: 72 65 6c 79 20 28 73 6f 6d 65 20 69 6e 70 75 74  rely (some input
3c20: 20 6f 72 20 6f 75 74 70 75 74 20 77 61 73 20 64   or output was d
3c30: 69 73 63 61 72 64 65 64 29 2e 20 49 6e 20 74 68  iscarded). In th
3c40: 65 20 65 72 72 6f 72 20 63 61 73 65 2c 0a 20 20  e error case,.  
3c50: 20 6d 73 67 20 6d 61 79 20 62 65 20 73 65 74 20   msg may be set 
3c60: 62 75 74 20 74 68 65 6e 20 70 6f 69 6e 74 73 20  but then points 
3c70: 74 6f 20 61 20 73 74 61 74 69 63 20 73 74 72 69  to a static stri
3c80: 6e 67 20 28 77 68 69 63 68 20 6d 75 73 74 20 6e  ng (which must n
3c90: 6f 74 20 62 65 0a 20 20 20 64 65 61 6c 6c 6f 63  ot be.   dealloc
3ca0: 61 74 65 64 29 2e 0a 2a 2f 0a 0a 0a 2f 2a 0a 5a  ated)..*/.../*.Z
3cb0: 45 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f  EXTERN int ZEXPO
3cc0: 52 54 20 69 6e 66 6c 61 74 65 49 6e 69 74 20 4f  RT inflateInit O
3cd0: 46 28 28 7a 5f 73 74 72 65 61 6d 70 20 73 74 72  F((z_streamp str
3ce0: 6d 29 29 3b 0a 0a 20 20 20 20 20 49 6e 69 74 69  m));..     Initi
3cf0: 61 6c 69 7a 65 73 20 74 68 65 20 69 6e 74 65 72  alizes the inter
3d00: 6e 61 6c 20 73 74 72 65 61 6d 20 73 74 61 74 65  nal stream state
3d10: 20 66 6f 72 20 64 65 63 6f 6d 70 72 65 73 73 69   for decompressi
3d20: 6f 6e 2e 20 54 68 65 20 66 69 65 6c 64 73 0a 20  on. The fields. 
3d30: 20 20 6e 65 78 74 5f 69 6e 2c 20 61 76 61 69 6c    next_in, avail
3d40: 5f 69 6e 2c 20 7a 61 6c 6c 6f 63 2c 20 7a 66 72  _in, zalloc, zfr
3d50: 65 65 20 61 6e 64 20 6f 70 61 71 75 65 20 6d 75  ee and opaque mu
3d60: 73 74 20 62 65 20 69 6e 69 74 69 61 6c 69 7a 65  st be initialize
3d70: 64 20 62 65 66 6f 72 65 20 62 79 0a 20 20 20 74  d before by.   t
3d80: 68 65 20 63 61 6c 6c 65 72 2e 20 49 66 20 6e 65  he caller. If ne
3d90: 78 74 5f 69 6e 20 69 73 20 6e 6f 74 20 5a 5f 4e  xt_in is not Z_N
3da0: 55 4c 4c 20 61 6e 64 20 61 76 61 69 6c 5f 69 6e  ULL and avail_in
3db0: 20 69 73 20 6c 61 72 67 65 20 65 6e 6f 75 67 68   is large enough
3dc0: 20 28 74 68 65 20 65 78 61 63 74 0a 20 20 20 76   (the exact.   v
3dd0: 61 6c 75 65 20 64 65 70 65 6e 64 73 20 6f 6e 20  alue depends on 
3de0: 74 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20  the compression 
3df0: 6d 65 74 68 6f 64 29 2c 20 69 6e 66 6c 61 74 65  method), inflate
3e00: 49 6e 69 74 20 64 65 74 65 72 6d 69 6e 65 73 20  Init determines 
3e10: 74 68 65 0a 20 20 20 63 6f 6d 70 72 65 73 73 69  the.   compressi
3e20: 6f 6e 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20 74  on method from t
3e30: 68 65 20 7a 6c 69 62 20 68 65 61 64 65 72 20 61  he zlib header a
3e40: 6e 64 20 61 6c 6c 6f 63 61 74 65 73 20 61 6c 6c  nd allocates all
3e50: 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65 73   data structures
3e60: 0a 20 20 20 61 63 63 6f 72 64 69 6e 67 6c 79 3b  .   accordingly;
3e70: 20 6f 74 68 65 72 77 69 73 65 20 74 68 65 20 61   otherwise the a
3e80: 6c 6c 6f 63 61 74 69 6f 6e 20 77 69 6c 6c 20 62  llocation will b
3e90: 65 20 64 65 66 65 72 72 65 64 20 74 6f 20 74 68  e deferred to th
3ea0: 65 20 66 69 72 73 74 20 63 61 6c 6c 20 6f 66 0a  e first call of.
3eb0: 20 20 20 69 6e 66 6c 61 74 65 2e 20 20 49 66 20     inflate.  If 
3ec0: 7a 61 6c 6c 6f 63 20 61 6e 64 20 7a 66 72 65 65  zalloc and zfree
3ed0: 20 61 72 65 20 73 65 74 20 74 6f 20 5a 5f 4e 55   are set to Z_NU
3ee0: 4c 4c 2c 20 69 6e 66 6c 61 74 65 49 6e 69 74 20  LL, inflateInit 
3ef0: 75 70 64 61 74 65 73 20 74 68 65 6d 20 74 6f 0a  updates them to.
3f00: 20 20 20 75 73 65 20 64 65 66 61 75 6c 74 20 61     use default a
3f10: 6c 6c 6f 63 61 74 69 6f 6e 20 66 75 6e 63 74 69  llocation functi
3f20: 6f 6e 73 2e 0a 0a 20 20 20 20 20 69 6e 66 6c 61  ons...     infla
3f30: 74 65 49 6e 69 74 20 72 65 74 75 72 6e 73 20 5a  teInit returns Z
3f40: 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73 2c 20  _OK if success, 
3f50: 5a 5f 4d 45 4d 5f 45 52 52 4f 52 20 69 66 20 74  Z_MEM_ERROR if t
3f60: 68 65 72 65 20 77 61 73 20 6e 6f 74 20 65 6e 6f  here was not eno
3f70: 75 67 68 0a 20 20 20 6d 65 6d 6f 72 79 2c 20 5a  ugh.   memory, Z
3f80: 5f 56 45 52 53 49 4f 4e 5f 45 52 52 4f 52 20 69  _VERSION_ERROR i
3f90: 66 20 74 68 65 20 7a 6c 69 62 20 6c 69 62 72 61  f the zlib libra
3fa0: 72 79 20 76 65 72 73 69 6f 6e 20 69 73 20 69 6e  ry version is in
3fb0: 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20  compatible with 
3fc0: 74 68 65 0a 20 20 20 76 65 72 73 69 6f 6e 20 61  the.   version a
3fd0: 73 73 75 6d 65 64 20 62 79 20 74 68 65 20 63 61  ssumed by the ca
3fe0: 6c 6c 65 72 2e 20 20 6d 73 67 20 69 73 20 73 65  ller.  msg is se
3ff0: 74 20 74 6f 20 6e 75 6c 6c 20 69 66 20 74 68 65  t to null if the
4000: 72 65 20 69 73 20 6e 6f 20 65 72 72 6f 72 0a 20  re is no error. 
4010: 20 20 6d 65 73 73 61 67 65 2e 20 69 6e 66 6c 61    message. infla
4020: 74 65 49 6e 69 74 20 64 6f 65 73 20 6e 6f 74 20  teInit does not 
4030: 70 65 72 66 6f 72 6d 20 61 6e 79 20 64 65 63 6f  perform any deco
4040: 6d 70 72 65 73 73 69 6f 6e 20 61 70 61 72 74 20  mpression apart 
4050: 66 72 6f 6d 20 72 65 61 64 69 6e 67 0a 20 20 20  from reading.   
4060: 74 68 65 20 7a 6c 69 62 20 68 65 61 64 65 72 20  the zlib header 
4070: 69 66 20 70 72 65 73 65 6e 74 3a 20 74 68 69 73  if present: this
4080: 20 77 69 6c 6c 20 62 65 20 64 6f 6e 65 20 62 79   will be done by
4090: 20 69 6e 66 6c 61 74 65 28 29 2e 20 20 28 53 6f   inflate().  (So
40a0: 20 6e 65 78 74 5f 69 6e 20 61 6e 64 0a 20 20 20   next_in and.   
40b0: 61 76 61 69 6c 5f 69 6e 20 6d 61 79 20 62 65 20  avail_in may be 
40c0: 6d 6f 64 69 66 69 65 64 2c 20 62 75 74 20 6e 65  modified, but ne
40d0: 78 74 5f 6f 75 74 20 61 6e 64 20 61 76 61 69 6c  xt_out and avail
40e0: 5f 6f 75 74 20 61 72 65 20 75 6e 63 68 61 6e 67  _out are unchang
40f0: 65 64 2e 29 0a 2a 2f 0a 0a 0a 5a 45 58 54 45 52  ed.).*/...ZEXTER
4100: 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 69 6e  N int ZEXPORT in
4110: 66 6c 61 74 65 20 4f 46 28 28 7a 5f 73 74 72 65  flate OF((z_stre
4120: 61 6d 70 20 73 74 72 6d 2c 20 69 6e 74 20 66 6c  amp strm, int fl
4130: 75 73 68 29 29 3b 0a 2f 2a 0a 20 20 20 20 69 6e  ush));./*.    in
4140: 66 6c 61 74 65 20 64 65 63 6f 6d 70 72 65 73 73  flate decompress
4150: 65 73 20 61 73 20 6d 75 63 68 20 64 61 74 61 20  es as much data 
4160: 61 73 20 70 6f 73 73 69 62 6c 65 2c 20 61 6e 64  as possible, and
4170: 20 73 74 6f 70 73 20 77 68 65 6e 20 74 68 65 20   stops when the 
4180: 69 6e 70 75 74 0a 20 20 62 75 66 66 65 72 20 62  input.  buffer b
4190: 65 63 6f 6d 65 73 20 65 6d 70 74 79 20 6f 72 20  ecomes empty or 
41a0: 74 68 65 20 6f 75 74 70 75 74 20 62 75 66 66 65  the output buffe
41b0: 72 20 62 65 63 6f 6d 65 73 20 66 75 6c 6c 2e 20  r becomes full. 
41c0: 49 74 20 6d 61 79 20 69 6e 74 72 6f 64 75 63 65  It may introduce
41d0: 0a 20 20 73 6f 6d 65 20 6f 75 74 70 75 74 20 6c  .  some output l
41e0: 61 74 65 6e 63 79 20 28 72 65 61 64 69 6e 67 20  atency (reading 
41f0: 69 6e 70 75 74 20 77 69 74 68 6f 75 74 20 70 72  input without pr
4200: 6f 64 75 63 69 6e 67 20 61 6e 79 20 6f 75 74 70  oducing any outp
4210: 75 74 29 20 65 78 63 65 70 74 20 77 68 65 6e 0a  ut) except when.
4220: 20 20 66 6f 72 63 65 64 20 74 6f 20 66 6c 75 73    forced to flus
4230: 68 2e 0a 0a 20 20 54 68 65 20 64 65 74 61 69 6c  h...  The detail
4240: 65 64 20 73 65 6d 61 6e 74 69 63 73 20 61 72 65  ed semantics are
4250: 20 61 73 20 66 6f 6c 6c 6f 77 73 2e 20 69 6e 66   as follows. inf
4260: 6c 61 74 65 20 70 65 72 66 6f 72 6d 73 20 6f 6e  late performs on
4270: 65 20 6f 72 20 62 6f 74 68 20 6f 66 20 74 68 65  e or both of the
4280: 0a 20 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 63 74  .  following act
4290: 69 6f 6e 73 3a 0a 0a 20 20 2d 20 44 65 63 6f 6d  ions:..  - Decom
42a0: 70 72 65 73 73 20 6d 6f 72 65 20 69 6e 70 75 74  press more input
42b0: 20 73 74 61 72 74 69 6e 67 20 61 74 20 6e 65 78   starting at nex
42c0: 74 5f 69 6e 20 61 6e 64 20 75 70 64 61 74 65 20  t_in and update 
42d0: 6e 65 78 74 5f 69 6e 20 61 6e 64 20 61 76 61 69  next_in and avai
42e0: 6c 5f 69 6e 0a 20 20 20 20 61 63 63 6f 72 64 69  l_in.    accordi
42f0: 6e 67 6c 79 2e 20 49 66 20 6e 6f 74 20 61 6c 6c  ngly. If not all
4300: 20 69 6e 70 75 74 20 63 61 6e 20 62 65 20 70 72   input can be pr
4310: 6f 63 65 73 73 65 64 20 28 62 65 63 61 75 73 65  ocessed (because
4320: 20 74 68 65 72 65 20 69 73 20 6e 6f 74 0a 20 20   there is not.  
4330: 20 20 65 6e 6f 75 67 68 20 72 6f 6f 6d 20 69 6e    enough room in
4340: 20 74 68 65 20 6f 75 74 70 75 74 20 62 75 66 66   the output buff
4350: 65 72 29 2c 20 6e 65 78 74 5f 69 6e 20 69 73 20  er), next_in is 
4360: 75 70 64 61 74 65 64 20 61 6e 64 20 70 72 6f 63  updated and proc
4370: 65 73 73 69 6e 67 0a 20 20 20 20 77 69 6c 6c 20  essing.    will 
4380: 72 65 73 75 6d 65 20 61 74 20 74 68 69 73 20 70  resume at this p
4390: 6f 69 6e 74 20 66 6f 72 20 74 68 65 20 6e 65 78  oint for the nex
43a0: 74 20 63 61 6c 6c 20 6f 66 20 69 6e 66 6c 61 74  t call of inflat
43b0: 65 28 29 2e 0a 0a 20 20 2d 20 50 72 6f 76 69 64  e()...  - Provid
43c0: 65 20 6d 6f 72 65 20 6f 75 74 70 75 74 20 73 74  e more output st
43d0: 61 72 74 69 6e 67 20 61 74 20 6e 65 78 74 5f 6f  arting at next_o
43e0: 75 74 20 61 6e 64 20 75 70 64 61 74 65 20 6e 65  ut and update ne
43f0: 78 74 5f 6f 75 74 20 61 6e 64 20 61 76 61 69 6c  xt_out and avail
4400: 5f 6f 75 74 0a 20 20 20 20 61 63 63 6f 72 64 69  _out.    accordi
4410: 6e 67 6c 79 2e 20 20 69 6e 66 6c 61 74 65 28 29  ngly.  inflate()
4420: 20 70 72 6f 76 69 64 65 73 20 61 73 20 6d 75 63   provides as muc
4430: 68 20 6f 75 74 70 75 74 20 61 73 20 70 6f 73 73  h output as poss
4440: 69 62 6c 65 2c 20 75 6e 74 69 6c 20 74 68 65 72  ible, until ther
4450: 65 0a 20 20 20 20 69 73 20 6e 6f 20 6d 6f 72 65  e.    is no more
4460: 20 69 6e 70 75 74 20 64 61 74 61 20 6f 72 20 6e   input data or n
4470: 6f 20 6d 6f 72 65 20 73 70 61 63 65 20 69 6e 20  o more space in 
4480: 74 68 65 20 6f 75 74 70 75 74 20 62 75 66 66 65  the output buffe
4490: 72 20 28 73 65 65 20 62 65 6c 6f 77 0a 20 20 20  r (see below.   
44a0: 20 61 62 6f 75 74 20 74 68 65 20 66 6c 75 73 68   about the flush
44b0: 20 70 61 72 61 6d 65 74 65 72 29 2e 0a 0a 20 20   parameter)...  
44c0: 42 65 66 6f 72 65 20 74 68 65 20 63 61 6c 6c 20  Before the call 
44d0: 6f 66 20 69 6e 66 6c 61 74 65 28 29 2c 20 74 68  of inflate(), th
44e0: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 68  e application sh
44f0: 6f 75 6c 64 20 65 6e 73 75 72 65 20 74 68 61 74  ould ensure that
4500: 20 61 74 20 6c 65 61 73 74 0a 20 20 6f 6e 65 20   at least.  one 
4510: 6f 66 20 74 68 65 20 61 63 74 69 6f 6e 73 20 69  of the actions i
4520: 73 20 70 6f 73 73 69 62 6c 65 2c 20 62 79 20 70  s possible, by p
4530: 72 6f 76 69 64 69 6e 67 20 6d 6f 72 65 20 69 6e  roviding more in
4540: 70 75 74 20 61 6e 64 2f 6f 72 20 63 6f 6e 73 75  put and/or consu
4550: 6d 69 6e 67 0a 20 20 6d 6f 72 65 20 6f 75 74 70  ming.  more outp
4560: 75 74 2c 20 61 6e 64 20 75 70 64 61 74 69 6e 67  ut, and updating
4570: 20 74 68 65 20 6e 65 78 74 5f 2a 20 61 6e 64 20   the next_* and 
4580: 61 76 61 69 6c 5f 2a 20 76 61 6c 75 65 73 20 61  avail_* values a
4590: 63 63 6f 72 64 69 6e 67 6c 79 2e 0a 20 20 54 68  ccordingly..  Th
45a0: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 61  e application ca
45b0: 6e 20 63 6f 6e 73 75 6d 65 20 74 68 65 20 75 6e  n consume the un
45c0: 63 6f 6d 70 72 65 73 73 65 64 20 6f 75 74 70 75  compressed outpu
45d0: 74 20 77 68 65 6e 20 69 74 20 77 61 6e 74 73 2c  t when it wants,
45e0: 20 66 6f 72 0a 20 20 65 78 61 6d 70 6c 65 20 77   for.  example w
45f0: 68 65 6e 20 74 68 65 20 6f 75 74 70 75 74 20 62  hen the output b
4600: 75 66 66 65 72 20 69 73 20 66 75 6c 6c 20 28 61  uffer is full (a
4610: 76 61 69 6c 5f 6f 75 74 20 3d 3d 20 30 29 2c 20  vail_out == 0), 
4620: 6f 72 20 61 66 74 65 72 20 65 61 63 68 0a 20 20  or after each.  
4630: 63 61 6c 6c 20 6f 66 20 69 6e 66 6c 61 74 65 28  call of inflate(
4640: 29 2e 20 49 66 20 69 6e 66 6c 61 74 65 20 72 65  ). If inflate re
4650: 74 75 72 6e 73 20 5a 5f 4f 4b 20 61 6e 64 20 77  turns Z_OK and w
4660: 69 74 68 20 7a 65 72 6f 20 61 76 61 69 6c 5f 6f  ith zero avail_o
4670: 75 74 2c 20 69 74 0a 20 20 6d 75 73 74 20 62 65  ut, it.  must be
4680: 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20 61 66   called again af
4690: 74 65 72 20 6d 61 6b 69 6e 67 20 72 6f 6f 6d 20  ter making room 
46a0: 69 6e 20 74 68 65 20 6f 75 74 70 75 74 20 62 75  in the output bu
46b0: 66 66 65 72 20 62 65 63 61 75 73 65 20 74 68 65  ffer because the
46c0: 72 65 0a 20 20 6d 69 67 68 74 20 62 65 20 6d 6f  re.  might be mo
46d0: 72 65 20 6f 75 74 70 75 74 20 70 65 6e 64 69 6e  re output pendin
46e0: 67 2e 0a 0a 20 20 20 20 54 68 65 20 66 6c 75 73  g...    The flus
46f0: 68 20 70 61 72 61 6d 65 74 65 72 20 6f 66 20 69  h parameter of i
4700: 6e 66 6c 61 74 65 28 29 20 63 61 6e 20 62 65 20  nflate() can be 
4710: 5a 5f 4e 4f 5f 46 4c 55 53 48 2c 20 5a 5f 53 59  Z_NO_FLUSH, Z_SY
4720: 4e 43 5f 46 4c 55 53 48 2c 0a 20 20 5a 5f 46 49  NC_FLUSH,.  Z_FI
4730: 4e 49 53 48 2c 20 6f 72 20 5a 5f 42 4c 4f 43 4b  NISH, or Z_BLOCK
4740: 2e 20 5a 5f 53 59 4e 43 5f 46 4c 55 53 48 20 72  . Z_SYNC_FLUSH r
4750: 65 71 75 65 73 74 73 20 74 68 61 74 20 69 6e 66  equests that inf
4760: 6c 61 74 65 28 29 20 66 6c 75 73 68 20 61 73 20  late() flush as 
4770: 6d 75 63 68 0a 20 20 6f 75 74 70 75 74 20 61 73  much.  output as
4780: 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 74 68 65   possible to the
4790: 20 6f 75 74 70 75 74 20 62 75 66 66 65 72 2e 20   output buffer. 
47a0: 5a 5f 42 4c 4f 43 4b 20 72 65 71 75 65 73 74 73  Z_BLOCK requests
47b0: 20 74 68 61 74 20 69 6e 66 6c 61 74 65 28 29 20   that inflate() 
47c0: 73 74 6f 70 0a 20 20 69 66 20 61 6e 64 20 77 68  stop.  if and wh
47d0: 65 6e 20 69 74 20 67 65 74 73 20 74 6f 20 74 68  en it gets to th
47e0: 65 20 6e 65 78 74 20 64 65 66 6c 61 74 65 20 62  e next deflate b
47f0: 6c 6f 63 6b 20 62 6f 75 6e 64 61 72 79 2e 20 57  lock boundary. W
4800: 68 65 6e 20 64 65 63 6f 64 69 6e 67 20 74 68 65  hen decoding the
4810: 0a 20 20 7a 6c 69 62 20 6f 72 20 67 7a 69 70 20  .  zlib or gzip 
4820: 66 6f 72 6d 61 74 2c 20 74 68 69 73 20 77 69 6c  format, this wil
4830: 6c 20 63 61 75 73 65 20 69 6e 66 6c 61 74 65 28  l cause inflate(
4840: 29 20 74 6f 20 72 65 74 75 72 6e 20 69 6d 6d 65  ) to return imme
4850: 64 69 61 74 65 6c 79 20 61 66 74 65 72 0a 20 20  diately after.  
4860: 74 68 65 20 68 65 61 64 65 72 20 61 6e 64 20 62  the header and b
4870: 65 66 6f 72 65 20 74 68 65 20 66 69 72 73 74 20  efore the first 
4880: 62 6c 6f 63 6b 2e 20 57 68 65 6e 20 64 6f 69 6e  block. When doin
4890: 67 20 61 20 72 61 77 20 69 6e 66 6c 61 74 65 2c  g a raw inflate,
48a0: 20 69 6e 66 6c 61 74 65 28 29 0a 20 20 77 69 6c   inflate().  wil
48b0: 6c 20 67 6f 20 61 68 65 61 64 20 61 6e 64 20 70  l go ahead and p
48c0: 72 6f 63 65 73 73 20 74 68 65 20 66 69 72 73 74  rocess the first
48d0: 20 62 6c 6f 63 6b 2c 20 61 6e 64 20 77 69 6c 6c   block, and will
48e0: 20 72 65 74 75 72 6e 20 77 68 65 6e 20 69 74 20   return when it 
48f0: 67 65 74 73 20 74 6f 0a 20 20 74 68 65 20 65 6e  gets to.  the en
4900: 64 20 6f 66 20 74 68 61 74 20 62 6c 6f 63 6b 2c  d of that block,
4910: 20 6f 72 20 77 68 65 6e 20 69 74 20 72 75 6e 73   or when it runs
4920: 20 6f 75 74 20 6f 66 20 64 61 74 61 2e 0a 0a 20   out of data... 
4930: 20 20 20 54 68 65 20 5a 5f 42 4c 4f 43 4b 20 6f     The Z_BLOCK o
4940: 70 74 69 6f 6e 20 61 73 73 69 73 74 73 20 69 6e  ption assists in
4950: 20 61 70 70 65 6e 64 69 6e 67 20 74 6f 20 6f 72   appending to or
4960: 20 63 6f 6d 62 69 6e 69 6e 67 20 64 65 66 6c 61   combining defla
4970: 74 65 20 73 74 72 65 61 6d 73 2e 0a 20 20 41 6c  te streams..  Al
4980: 73 6f 20 74 6f 20 61 73 73 69 73 74 20 69 6e 20  so to assist in 
4990: 74 68 69 73 2c 20 6f 6e 20 72 65 74 75 72 6e 20  this, on return 
49a0: 69 6e 66 6c 61 74 65 28 29 20 77 69 6c 6c 20 73  inflate() will s
49b0: 65 74 20 73 74 72 6d 2d 3e 64 61 74 61 5f 74 79  et strm->data_ty
49c0: 70 65 20 74 6f 20 74 68 65 0a 20 20 6e 75 6d 62  pe to the.  numb
49d0: 65 72 20 6f 66 20 75 6e 75 73 65 64 20 62 69 74  er of unused bit
49e0: 73 20 69 6e 20 74 68 65 20 6c 61 73 74 20 62 79  s in the last by
49f0: 74 65 20 74 61 6b 65 6e 20 66 72 6f 6d 20 73 74  te taken from st
4a00: 72 6d 2d 3e 6e 65 78 74 5f 69 6e 2c 20 70 6c 75  rm->next_in, plu
4a10: 73 20 36 34 0a 20 20 69 66 20 69 6e 66 6c 61 74  s 64.  if inflat
4a20: 65 28 29 20 69 73 20 63 75 72 72 65 6e 74 6c 79  e() is currently
4a30: 20 64 65 63 6f 64 69 6e 67 20 74 68 65 20 6c 61   decoding the la
4a40: 73 74 20 62 6c 6f 63 6b 20 69 6e 20 74 68 65 20  st block in the 
4a50: 64 65 66 6c 61 74 65 20 73 74 72 65 61 6d 2c 0a  deflate stream,.
4a60: 20 20 70 6c 75 73 20 31 32 38 20 69 66 20 69 6e    plus 128 if in
4a70: 66 6c 61 74 65 28 29 20 72 65 74 75 72 6e 65 64  flate() returned
4a80: 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 61 66 74   immediately aft
4a90: 65 72 20 64 65 63 6f 64 69 6e 67 20 61 6e 20 65  er decoding an e
4aa0: 6e 64 2d 6f 66 2d 62 6c 6f 63 6b 0a 20 20 63 6f  nd-of-block.  co
4ab0: 64 65 20 6f 72 20 64 65 63 6f 64 69 6e 67 20 74  de or decoding t
4ac0: 68 65 20 63 6f 6d 70 6c 65 74 65 20 68 65 61 64  he complete head
4ad0: 65 72 20 75 70 20 74 6f 20 6a 75 73 74 20 62 65  er up to just be
4ae0: 66 6f 72 65 20 74 68 65 20 66 69 72 73 74 20 62  fore the first b
4af0: 79 74 65 20 6f 66 20 74 68 65 0a 20 20 64 65 66  yte of the.  def
4b00: 6c 61 74 65 20 73 74 72 65 61 6d 2e 20 54 68 65  late stream. The
4b10: 20 65 6e 64 2d 6f 66 2d 62 6c 6f 63 6b 20 77 69   end-of-block wi
4b20: 6c 6c 20 6e 6f 74 20 62 65 20 69 6e 64 69 63 61  ll not be indica
4b30: 74 65 64 20 75 6e 74 69 6c 20 61 6c 6c 20 6f 66  ted until all of
4b40: 20 74 68 65 0a 20 20 75 6e 63 6f 6d 70 72 65 73   the.  uncompres
4b50: 73 65 64 20 64 61 74 61 20 66 72 6f 6d 20 74 68  sed data from th
4b60: 61 74 20 62 6c 6f 63 6b 20 68 61 73 20 62 65 65  at block has bee
4b70: 6e 20 77 72 69 74 74 65 6e 20 74 6f 20 73 74 72  n written to str
4b80: 6d 2d 3e 6e 65 78 74 5f 6f 75 74 2e 20 20 54 68  m->next_out.  Th
4b90: 65 0a 20 20 6e 75 6d 62 65 72 20 6f 66 20 75 6e  e.  number of un
4ba0: 75 73 65 64 20 62 69 74 73 20 6d 61 79 20 69 6e  used bits may in
4bb0: 20 67 65 6e 65 72 61 6c 20 62 65 20 67 72 65 61   general be grea
4bc0: 74 65 72 20 74 68 61 6e 20 73 65 76 65 6e 2c 20  ter than seven, 
4bd0: 65 78 63 65 70 74 20 77 68 65 6e 0a 20 20 62 69  except when.  bi
4be0: 74 20 37 20 6f 66 20 64 61 74 61 5f 74 79 70 65  t 7 of data_type
4bf0: 20 69 73 20 73 65 74 2c 20 69 6e 20 77 68 69 63   is set, in whic
4c00: 68 20 63 61 73 65 20 74 68 65 20 6e 75 6d 62 65  h case the numbe
4c10: 72 20 6f 66 20 75 6e 75 73 65 64 20 62 69 74 73  r of unused bits
4c20: 20 77 69 6c 6c 20 62 65 0a 20 20 6c 65 73 73 20   will be.  less 
4c30: 74 68 61 6e 20 65 69 67 68 74 2e 0a 0a 20 20 20  than eight...   
4c40: 20 69 6e 66 6c 61 74 65 28 29 20 73 68 6f 75 6c   inflate() shoul
4c50: 64 20 6e 6f 72 6d 61 6c 6c 79 20 62 65 20 63 61  d normally be ca
4c60: 6c 6c 65 64 20 75 6e 74 69 6c 20 69 74 20 72 65  lled until it re
4c70: 74 75 72 6e 73 20 5a 5f 53 54 52 45 41 4d 5f 45  turns Z_STREAM_E
4c80: 4e 44 20 6f 72 20 61 6e 0a 20 20 65 72 72 6f 72  ND or an.  error
4c90: 2e 20 48 6f 77 65 76 65 72 20 69 66 20 61 6c 6c  . However if all
4ca0: 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 69   decompression i
4cb0: 73 20 74 6f 20 62 65 20 70 65 72 66 6f 72 6d 65  s to be performe
4cc0: 64 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 73 74  d in a single st
4cd0: 65 70 0a 20 20 28 61 20 73 69 6e 67 6c 65 20 63  ep.  (a single c
4ce0: 61 6c 6c 20 6f 66 20 69 6e 66 6c 61 74 65 29 2c  all of inflate),
4cf0: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 66   the parameter f
4d00: 6c 75 73 68 20 73 68 6f 75 6c 64 20 62 65 20 73  lush should be s
4d10: 65 74 20 74 6f 0a 20 20 5a 5f 46 49 4e 49 53 48  et to.  Z_FINISH
4d20: 2e 20 49 6e 20 74 68 69 73 20 63 61 73 65 20 61  . In this case a
4d30: 6c 6c 20 70 65 6e 64 69 6e 67 20 69 6e 70 75 74  ll pending input
4d40: 20 69 73 20 70 72 6f 63 65 73 73 65 64 20 61 6e   is processed an
4d50: 64 20 61 6c 6c 20 70 65 6e 64 69 6e 67 0a 20 20  d all pending.  
4d60: 6f 75 74 70 75 74 20 69 73 20 66 6c 75 73 68 65  output is flushe
4d70: 64 3b 20 61 76 61 69 6c 5f 6f 75 74 20 6d 75 73  d; avail_out mus
4d80: 74 20 62 65 20 6c 61 72 67 65 20 65 6e 6f 75 67  t be large enoug
4d90: 68 20 74 6f 20 68 6f 6c 64 20 61 6c 6c 20 74 68  h to hold all th
4da0: 65 0a 20 20 75 6e 63 6f 6d 70 72 65 73 73 65 64  e.  uncompressed
4db0: 20 64 61 74 61 2e 20 28 54 68 65 20 73 69 7a 65   data. (The size
4dc0: 20 6f 66 20 74 68 65 20 75 6e 63 6f 6d 70 72 65   of the uncompre
4dd0: 73 73 65 64 20 64 61 74 61 20 6d 61 79 20 68 61  ssed data may ha
4de0: 76 65 20 62 65 65 6e 20 73 61 76 65 64 0a 20 20  ve been saved.  
4df0: 62 79 20 74 68 65 20 63 6f 6d 70 72 65 73 73 6f  by the compresso
4e00: 72 20 66 6f 72 20 74 68 69 73 20 70 75 72 70 6f  r for this purpo
4e10: 73 65 2e 29 20 54 68 65 20 6e 65 78 74 20 6f 70  se.) The next op
4e20: 65 72 61 74 69 6f 6e 20 6f 6e 20 74 68 69 73 20  eration on this 
4e30: 73 74 72 65 61 6d 20 6d 75 73 74 0a 20 20 62 65  stream must.  be
4e40: 20 69 6e 66 6c 61 74 65 45 6e 64 20 74 6f 20 64   inflateEnd to d
4e50: 65 61 6c 6c 6f 63 61 74 65 20 74 68 65 20 64 65  eallocate the de
4e60: 63 6f 6d 70 72 65 73 73 69 6f 6e 20 73 74 61 74  compression stat
4e70: 65 2e 20 54 68 65 20 75 73 65 20 6f 66 20 5a 5f  e. The use of Z_
4e80: 46 49 4e 49 53 48 0a 20 20 69 73 20 6e 65 76 65  FINISH.  is neve
4e90: 72 20 72 65 71 75 69 72 65 64 2c 20 62 75 74 20  r required, but 
4ea0: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 69  can be used to i
4eb0: 6e 66 6f 72 6d 20 69 6e 66 6c 61 74 65 20 74 68  nform inflate th
4ec0: 61 74 20 61 20 66 61 73 74 65 72 20 61 70 70 72  at a faster appr
4ed0: 6f 61 63 68 0a 20 20 6d 61 79 20 62 65 20 75 73  oach.  may be us
4ee0: 65 64 20 66 6f 72 20 74 68 65 20 73 69 6e 67 6c  ed for the singl
4ef0: 65 20 69 6e 66 6c 61 74 65 28 29 20 63 61 6c 6c  e inflate() call
4f00: 2e 0a 0a 20 20 20 20 20 49 6e 20 74 68 69 73 20  ...     In this 
4f10: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20  implementation, 
4f20: 69 6e 66 6c 61 74 65 28 29 20 61 6c 77 61 79 73  inflate() always
4f30: 20 66 6c 75 73 68 65 73 20 61 73 20 6d 75 63 68   flushes as much
4f40: 20 6f 75 74 70 75 74 20 61 73 0a 20 20 70 6f 73   output as.  pos
4f50: 73 69 62 6c 65 20 74 6f 20 74 68 65 20 6f 75 74  sible to the out
4f60: 70 75 74 20 62 75 66 66 65 72 2c 20 61 6e 64 20  put buffer, and 
4f70: 61 6c 77 61 79 73 20 75 73 65 73 20 74 68 65 20  always uses the 
4f80: 66 61 73 74 65 72 20 61 70 70 72 6f 61 63 68 20  faster approach 
4f90: 6f 6e 20 74 68 65 0a 20 20 66 69 72 73 74 20 63  on the.  first c
4fa0: 61 6c 6c 2e 20 53 6f 20 74 68 65 20 6f 6e 6c 79  all. So the only
4fb0: 20 65 66 66 65 63 74 20 6f 66 20 74 68 65 20 66   effect of the f
4fc0: 6c 75 73 68 20 70 61 72 61 6d 65 74 65 72 20 69  lush parameter i
4fd0: 6e 20 74 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74  n this implement
4fe0: 61 74 69 6f 6e 0a 20 20 69 73 20 6f 6e 20 74 68  ation.  is on th
4ff0: 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f  e return value o
5000: 66 20 69 6e 66 6c 61 74 65 28 29 2c 20 61 73 20  f inflate(), as 
5010: 6e 6f 74 65 64 20 62 65 6c 6f 77 2c 20 6f 72 20  noted below, or 
5020: 77 68 65 6e 20 69 74 20 72 65 74 75 72 6e 73 20  when it returns 
5030: 65 61 72 6c 79 0a 20 20 62 65 63 61 75 73 65 20  early.  because 
5040: 5a 5f 42 4c 4f 43 4b 20 69 73 20 75 73 65 64 2e  Z_BLOCK is used.
5050: 0a 0a 20 20 20 20 20 49 66 20 61 20 70 72 65 73  ..     If a pres
5060: 65 74 20 64 69 63 74 69 6f 6e 61 72 79 20 69 73  et dictionary is
5070: 20 6e 65 65 64 65 64 20 61 66 74 65 72 20 74 68   needed after th
5080: 69 73 20 63 61 6c 6c 20 28 73 65 65 20 69 6e 66  is call (see inf
5090: 6c 61 74 65 53 65 74 44 69 63 74 69 6f 6e 61 72  lateSetDictionar
50a0: 79 0a 20 20 62 65 6c 6f 77 29 2c 20 69 6e 66 6c  y.  below), infl
50b0: 61 74 65 20 73 65 74 73 20 73 74 72 6d 2d 3e 61  ate sets strm->a
50c0: 64 6c 65 72 20 74 6f 20 74 68 65 20 61 64 6c 65  dler to the adle
50d0: 72 33 32 20 63 68 65 63 6b 73 75 6d 20 6f 66 20  r32 checksum of 
50e0: 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79 0a 20  the dictionary. 
50f0: 20 63 68 6f 73 65 6e 20 62 79 20 74 68 65 20 63   chosen by the c
5100: 6f 6d 70 72 65 73 73 6f 72 20 61 6e 64 20 72 65  ompressor and re
5110: 74 75 72 6e 73 20 5a 5f 4e 45 45 44 5f 44 49 43  turns Z_NEED_DIC
5120: 54 3b 20 6f 74 68 65 72 77 69 73 65 20 69 74 20  T; otherwise it 
5130: 73 65 74 73 0a 20 20 73 74 72 6d 2d 3e 61 64 6c  sets.  strm->adl
5140: 65 72 20 74 6f 20 74 68 65 20 61 64 6c 65 72 33  er to the adler3
5150: 32 20 63 68 65 63 6b 73 75 6d 20 6f 66 20 61 6c  2 checksum of al
5160: 6c 20 6f 75 74 70 75 74 20 70 72 6f 64 75 63 65  l output produce
5170: 64 20 73 6f 20 66 61 72 20 28 74 68 61 74 20 69  d so far (that i
5180: 73 2c 0a 20 20 74 6f 74 61 6c 5f 6f 75 74 20 62  s,.  total_out b
5190: 79 74 65 73 29 20 61 6e 64 20 72 65 74 75 72 6e  ytes) and return
51a0: 73 20 5a 5f 4f 4b 2c 20 5a 5f 53 54 52 45 41 4d  s Z_OK, Z_STREAM
51b0: 5f 45 4e 44 20 6f 72 20 61 6e 20 65 72 72 6f 72  _END or an error
51c0: 20 63 6f 64 65 20 61 73 20 64 65 73 63 72 69 62   code as describ
51d0: 65 64 0a 20 20 62 65 6c 6f 77 2e 20 41 74 20 74  ed.  below. At t
51e0: 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 73 74  he end of the st
51f0: 72 65 61 6d 2c 20 69 6e 66 6c 61 74 65 28 29 20  ream, inflate() 
5200: 63 68 65 63 6b 73 20 74 68 61 74 20 69 74 73 20  checks that its 
5210: 63 6f 6d 70 75 74 65 64 20 61 64 6c 65 72 33 32  computed adler32
5220: 0a 20 20 63 68 65 63 6b 73 75 6d 20 69 73 20 65  .  checksum is e
5230: 71 75 61 6c 20 74 6f 20 74 68 61 74 20 73 61 76  qual to that sav
5240: 65 64 20 62 79 20 74 68 65 20 63 6f 6d 70 72 65  ed by the compre
5250: 73 73 6f 72 20 61 6e 64 20 72 65 74 75 72 6e 73  ssor and returns
5260: 20 5a 5f 53 54 52 45 41 4d 5f 45 4e 44 0a 20 20   Z_STREAM_END.  
5270: 6f 6e 6c 79 20 69 66 20 74 68 65 20 63 68 65 63  only if the chec
5280: 6b 73 75 6d 20 69 73 20 63 6f 72 72 65 63 74 2e  ksum is correct.
5290: 0a 0a 20 20 20 20 69 6e 66 6c 61 74 65 28 29 20  ..    inflate() 
52a0: 77 69 6c 6c 20 64 65 63 6f 6d 70 72 65 73 73 20  will decompress 
52b0: 61 6e 64 20 63 68 65 63 6b 20 65 69 74 68 65 72  and check either
52c0: 20 7a 6c 69 62 2d 77 72 61 70 70 65 64 20 6f 72   zlib-wrapped or
52d0: 20 67 7a 69 70 2d 77 72 61 70 70 65 64 0a 20 20   gzip-wrapped.  
52e0: 64 65 66 6c 61 74 65 20 64 61 74 61 2e 20 20 54  deflate data.  T
52f0: 68 65 20 68 65 61 64 65 72 20 74 79 70 65 20 69  he header type i
5300: 73 20 64 65 74 65 63 74 65 64 20 61 75 74 6f 6d  s detected autom
5310: 61 74 69 63 61 6c 6c 79 2e 20 20 41 6e 79 20 69  atically.  Any i
5320: 6e 66 6f 72 6d 61 74 69 6f 6e 0a 20 20 63 6f 6e  nformation.  con
5330: 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20 67 7a  tained in the gz
5340: 69 70 20 68 65 61 64 65 72 20 69 73 20 6e 6f 74  ip header is not
5350: 20 72 65 74 61 69 6e 65 64 2c 20 73 6f 20 61 70   retained, so ap
5360: 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20  plications that 
5370: 6e 65 65 64 20 74 68 61 74 0a 20 20 69 6e 66 6f  need that.  info
5380: 72 6d 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 69  rmation should i
5390: 6e 73 74 65 61 64 20 75 73 65 20 72 61 77 20 69  nstead use raw i
53a0: 6e 66 6c 61 74 65 2c 20 73 65 65 20 69 6e 66 6c  nflate, see infl
53b0: 61 74 65 49 6e 69 74 32 28 29 20 62 65 6c 6f 77  ateInit2() below
53c0: 2c 20 6f 72 0a 20 20 69 6e 66 6c 61 74 65 42 61  , or.  inflateBa
53d0: 63 6b 28 29 20 61 6e 64 20 70 65 72 66 6f 72 6d  ck() and perform
53e0: 20 74 68 65 69 72 20 6f 77 6e 20 70 72 6f 63 65   their own proce
53f0: 73 73 69 6e 67 20 6f 66 20 74 68 65 20 67 7a 69  ssing of the gzi
5400: 70 20 68 65 61 64 65 72 20 61 6e 64 0a 20 20 74  p header and.  t
5410: 72 61 69 6c 65 72 2e 0a 0a 20 20 20 20 69 6e 66  railer...    inf
5420: 6c 61 74 65 28 29 20 72 65 74 75 72 6e 73 20 5a  late() returns Z
5430: 5f 4f 4b 20 69 66 20 73 6f 6d 65 20 70 72 6f 67  _OK if some prog
5440: 72 65 73 73 20 68 61 73 20 62 65 65 6e 20 6d 61  ress has been ma
5450: 64 65 20 28 6d 6f 72 65 20 69 6e 70 75 74 20 70  de (more input p
5460: 72 6f 63 65 73 73 65 64 0a 20 20 6f 72 20 6d 6f  rocessed.  or mo
5470: 72 65 20 6f 75 74 70 75 74 20 70 72 6f 64 75 63  re output produc
5480: 65 64 29 2c 20 5a 5f 53 54 52 45 41 4d 5f 45 4e  ed), Z_STREAM_EN
5490: 44 20 69 66 20 74 68 65 20 65 6e 64 20 6f 66 20  D if the end of 
54a0: 74 68 65 20 63 6f 6d 70 72 65 73 73 65 64 20 64  the compressed d
54b0: 61 74 61 20 68 61 73 0a 20 20 62 65 65 6e 20 72  ata has.  been r
54c0: 65 61 63 68 65 64 20 61 6e 64 20 61 6c 6c 20 75  eached and all u
54d0: 6e 63 6f 6d 70 72 65 73 73 65 64 20 6f 75 74 70  ncompressed outp
54e0: 75 74 20 68 61 73 20 62 65 65 6e 20 70 72 6f 64  ut has been prod
54f0: 75 63 65 64 2c 20 5a 5f 4e 45 45 44 5f 44 49 43  uced, Z_NEED_DIC
5500: 54 20 69 66 20 61 0a 20 20 70 72 65 73 65 74 20  T if a.  preset 
5510: 64 69 63 74 69 6f 6e 61 72 79 20 69 73 20 6e 65  dictionary is ne
5520: 65 64 65 64 20 61 74 20 74 68 69 73 20 70 6f 69  eded at this poi
5530: 6e 74 2c 20 5a 5f 44 41 54 41 5f 45 52 52 4f 52  nt, Z_DATA_ERROR
5540: 20 69 66 20 74 68 65 20 69 6e 70 75 74 20 64 61   if the input da
5550: 74 61 20 77 61 73 0a 20 20 63 6f 72 72 75 70 74  ta was.  corrupt
5560: 65 64 20 28 69 6e 70 75 74 20 73 74 72 65 61 6d  ed (input stream
5570: 20 6e 6f 74 20 63 6f 6e 66 6f 72 6d 69 6e 67 20   not conforming 
5580: 74 6f 20 74 68 65 20 7a 6c 69 62 20 66 6f 72 6d  to the zlib form
5590: 61 74 20 6f 72 20 69 6e 63 6f 72 72 65 63 74 20  at or incorrect 
55a0: 63 68 65 63 6b 0a 20 20 76 61 6c 75 65 29 2c 20  check.  value), 
55b0: 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 69  Z_STREAM_ERROR i
55c0: 66 20 74 68 65 20 73 74 72 65 61 6d 20 73 74 72  f the stream str
55d0: 75 63 74 75 72 65 20 77 61 73 20 69 6e 63 6f 6e  ucture was incon
55e0: 73 69 73 74 65 6e 74 20 28 66 6f 72 20 65 78 61  sistent (for exa
55f0: 6d 70 6c 65 0a 20 20 69 66 20 6e 65 78 74 5f 69  mple.  if next_i
5600: 6e 20 6f 72 20 6e 65 78 74 5f 6f 75 74 20 77 61  n or next_out wa
5610: 73 20 4e 55 4c 4c 29 2c 20 5a 5f 4d 45 4d 5f 45  s NULL), Z_MEM_E
5620: 52 52 4f 52 20 69 66 20 74 68 65 72 65 20 77 61  RROR if there wa
5630: 73 20 6e 6f 74 20 65 6e 6f 75 67 68 20 6d 65 6d  s not enough mem
5640: 6f 72 79 2c 0a 20 20 5a 5f 42 55 46 5f 45 52 52  ory,.  Z_BUF_ERR
5650: 4f 52 20 69 66 20 6e 6f 20 70 72 6f 67 72 65 73  OR if no progres
5660: 73 20 69 73 20 70 6f 73 73 69 62 6c 65 20 6f 72  s is possible or
5670: 20 69 66 20 74 68 65 72 65 20 77 61 73 20 6e 6f   if there was no
5680: 74 20 65 6e 6f 75 67 68 20 72 6f 6f 6d 20 69 6e  t enough room in
5690: 20 74 68 65 0a 20 20 6f 75 74 70 75 74 20 62 75   the.  output bu
56a0: 66 66 65 72 20 77 68 65 6e 20 5a 5f 46 49 4e 49  ffer when Z_FINI
56b0: 53 48 20 69 73 20 75 73 65 64 2e 20 4e 6f 74 65  SH is used. Note
56c0: 20 74 68 61 74 20 5a 5f 42 55 46 5f 45 52 52 4f   that Z_BUF_ERRO
56d0: 52 20 69 73 20 6e 6f 74 20 66 61 74 61 6c 2c 20  R is not fatal, 
56e0: 61 6e 64 0a 20 20 69 6e 66 6c 61 74 65 28 29 20  and.  inflate() 
56f0: 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 61 67  can be called ag
5700: 61 69 6e 20 77 69 74 68 20 6d 6f 72 65 20 69 6e  ain with more in
5710: 70 75 74 20 61 6e 64 20 6d 6f 72 65 20 6f 75 74  put and more out
5720: 70 75 74 20 73 70 61 63 65 20 74 6f 0a 20 20 63  put space to.  c
5730: 6f 6e 74 69 6e 75 65 20 64 65 63 6f 6d 70 72 65  ontinue decompre
5740: 73 73 69 6e 67 2e 20 49 66 20 5a 5f 44 41 54 41  ssing. If Z_DATA
5750: 5f 45 52 52 4f 52 20 69 73 20 72 65 74 75 72 6e  _ERROR is return
5760: 65 64 2c 20 74 68 65 20 61 70 70 6c 69 63 61 74  ed, the applicat
5770: 69 6f 6e 20 6d 61 79 20 74 68 65 6e 0a 20 20 63  ion may then.  c
5780: 61 6c 6c 20 69 6e 66 6c 61 74 65 53 79 6e 63 28  all inflateSync(
5790: 29 20 74 6f 20 6c 6f 6f 6b 20 66 6f 72 20 61 20  ) to look for a 
57a0: 67 6f 6f 64 20 63 6f 6d 70 72 65 73 73 69 6f 6e  good compression
57b0: 20 62 6c 6f 63 6b 20 69 66 20 61 20 70 61 72 74   block if a part
57c0: 69 61 6c 20 72 65 63 6f 76 65 72 79 0a 20 20 6f  ial recovery.  o
57d0: 66 20 74 68 65 20 64 61 74 61 20 69 73 20 64 65  f the data is de
57e0: 73 69 72 65 64 2e 0a 2a 2f 0a 0a 0a 5a 45 58 54  sired..*/...ZEXT
57f0: 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20  ERN int ZEXPORT 
5800: 69 6e 66 6c 61 74 65 45 6e 64 20 4f 46 28 28 7a  inflateEnd OF((z
5810: 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 29 29 3b  _streamp strm));
5820: 0a 2f 2a 0a 20 20 20 20 20 41 6c 6c 20 64 79 6e  ./*.     All dyn
5830: 61 6d 69 63 61 6c 6c 79 20 61 6c 6c 6f 63 61 74  amically allocat
5840: 65 64 20 64 61 74 61 20 73 74 72 75 63 74 75 72  ed data structur
5850: 65 73 20 66 6f 72 20 74 68 69 73 20 73 74 72 65  es for this stre
5860: 61 6d 20 61 72 65 20 66 72 65 65 64 2e 0a 20 20  am are freed..  
5870: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 64   This function d
5880: 69 73 63 61 72 64 73 20 61 6e 79 20 75 6e 70 72  iscards any unpr
5890: 6f 63 65 73 73 65 64 20 69 6e 70 75 74 20 61 6e  ocessed input an
58a0: 64 20 64 6f 65 73 20 6e 6f 74 20 66 6c 75 73 68  d does not flush
58b0: 20 61 6e 79 0a 20 20 20 70 65 6e 64 69 6e 67 20   any.   pending 
58c0: 6f 75 74 70 75 74 2e 0a 0a 20 20 20 20 20 69 6e  output...     in
58d0: 66 6c 61 74 65 45 6e 64 20 72 65 74 75 72 6e 73  flateEnd returns
58e0: 20 5a 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73   Z_OK if success
58f0: 2c 20 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52  , Z_STREAM_ERROR
5900: 20 69 66 20 74 68 65 20 73 74 72 65 61 6d 20 73   if the stream s
5910: 74 61 74 65 0a 20 20 20 77 61 73 20 69 6e 63 6f  tate.   was inco
5920: 6e 73 69 73 74 65 6e 74 2e 20 49 6e 20 74 68 65  nsistent. In the
5930: 20 65 72 72 6f 72 20 63 61 73 65 2c 20 6d 73 67   error case, msg
5940: 20 6d 61 79 20 62 65 20 73 65 74 20 62 75 74 20   may be set but 
5950: 74 68 65 6e 20 70 6f 69 6e 74 73 20 74 6f 20 61  then points to a
5960: 0a 20 20 20 73 74 61 74 69 63 20 73 74 72 69 6e  .   static strin
5970: 67 20 28 77 68 69 63 68 20 6d 75 73 74 20 6e 6f  g (which must no
5980: 74 20 62 65 20 64 65 61 6c 6c 6f 63 61 74 65 64  t be deallocated
5990: 29 2e 0a 2a 2f 0a 0a 20 20 20 20 20 20 20 20 20  )..*/..         
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
59b0: 2a 20 41 64 76 61 6e 63 65 64 20 66 75 6e 63 74  * Advanced funct
59c0: 69 6f 6e 73 20 2a 2f 0a 0a 2f 2a 0a 20 20 20 20  ions */../*.    
59d0: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 75  The following fu
59e0: 6e 63 74 69 6f 6e 73 20 61 72 65 20 6e 65 65 64  nctions are need
59f0: 65 64 20 6f 6e 6c 79 20 69 6e 20 73 6f 6d 65 20  ed only in some 
5a00: 73 70 65 63 69 61 6c 20 61 70 70 6c 69 63 61 74  special applicat
5a10: 69 6f 6e 73 2e 0a 2a 2f 0a 0a 2f 2a 0a 5a 45 58  ions..*/../*.ZEX
5a20: 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54  TERN int ZEXPORT
5a30: 20 64 65 66 6c 61 74 65 49 6e 69 74 32 20 4f 46   deflateInit2 OF
5a40: 28 28 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d  ((z_streamp strm
5a50: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a70: 20 20 20 20 20 20 20 69 6e 74 20 20 6c 65 76 65         int  leve
5a80: 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  l,.             
5a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5aa0: 20 20 20 20 20 20 20 20 69 6e 74 20 20 6d 65 74          int  met
5ab0: 68 6f 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20  hod,.           
5ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ad0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 20 77            int  w
5ae0: 69 6e 64 6f 77 42 69 74 73 2c 0a 20 20 20 20 20  indowBits,.     
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b10: 69 6e 74 20 20 6d 65 6d 4c 65 76 65 6c 2c 0a 20  int  memLevel,. 
5b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b40: 20 20 20 20 69 6e 74 20 20 73 74 72 61 74 65 67      int  strateg
5b50: 79 29 29 3b 0a 0a 20 20 20 20 20 54 68 69 73 20  y));..     This 
5b60: 69 73 20 61 6e 6f 74 68 65 72 20 76 65 72 73 69  is another versi
5b70: 6f 6e 20 6f 66 20 64 65 66 6c 61 74 65 49 6e 69  on of deflateIni
5b80: 74 20 77 69 74 68 20 6d 6f 72 65 20 63 6f 6d 70  t with more comp
5b90: 72 65 73 73 69 6f 6e 20 6f 70 74 69 6f 6e 73 2e  ression options.
5ba0: 20 54 68 65 0a 20 20 20 66 69 65 6c 64 73 20 6e   The.   fields n
5bb0: 65 78 74 5f 69 6e 2c 20 7a 61 6c 6c 6f 63 2c 20  ext_in, zalloc, 
5bc0: 7a 66 72 65 65 20 61 6e 64 20 6f 70 61 71 75 65  zfree and opaque
5bd0: 20 6d 75 73 74 20 62 65 20 69 6e 69 74 69 61 6c   must be initial
5be0: 69 7a 65 64 20 62 65 66 6f 72 65 20 62 79 0a 20  ized before by. 
5bf0: 20 20 74 68 65 20 63 61 6c 6c 65 72 2e 0a 0a 20    the caller... 
5c00: 20 20 20 20 54 68 65 20 6d 65 74 68 6f 64 20 70      The method p
5c10: 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 20  arameter is the 
5c20: 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6d 65 74 68  compression meth
5c30: 6f 64 2e 20 49 74 20 6d 75 73 74 20 62 65 20 5a  od. It must be Z
5c40: 5f 44 45 46 4c 41 54 45 44 20 69 6e 0a 20 20 20  _DEFLATED in.   
5c50: 74 68 69 73 20 76 65 72 73 69 6f 6e 20 6f 66 20  this version of 
5c60: 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 0a 20 20  the library...  
5c70: 20 20 20 54 68 65 20 77 69 6e 64 6f 77 42 69 74     The windowBit
5c80: 73 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 74  s parameter is t
5c90: 68 65 20 62 61 73 65 20 74 77 6f 20 6c 6f 67 61  he base two loga
5ca0: 72 69 74 68 6d 20 6f 66 20 74 68 65 20 77 69 6e  rithm of the win
5cb0: 64 6f 77 20 73 69 7a 65 0a 20 20 20 28 74 68 65  dow size.   (the
5cc0: 20 73 69 7a 65 20 6f 66 20 74 68 65 20 68 69 73   size of the his
5cd0: 74 6f 72 79 20 62 75 66 66 65 72 29 2e 20 49 74  tory buffer). It
5ce0: 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 20 74 68   should be in th
5cf0: 65 20 72 61 6e 67 65 20 38 2e 2e 31 35 20 66 6f  e range 8..15 fo
5d00: 72 20 74 68 69 73 0a 20 20 20 76 65 72 73 69 6f  r this.   versio
5d10: 6e 20 6f 66 20 74 68 65 20 6c 69 62 72 61 72 79  n of the library
5d20: 2e 20 4c 61 72 67 65 72 20 76 61 6c 75 65 73 20  . Larger values 
5d30: 6f 66 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  of this paramete
5d40: 72 20 72 65 73 75 6c 74 20 69 6e 20 62 65 74 74  r result in bett
5d50: 65 72 0a 20 20 20 63 6f 6d 70 72 65 73 73 69 6f  er.   compressio
5d60: 6e 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65  n at the expense
5d70: 20 6f 66 20 6d 65 6d 6f 72 79 20 75 73 61 67 65   of memory usage
5d80: 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61  . The default va
5d90: 6c 75 65 20 69 73 20 31 35 20 69 66 0a 20 20 20  lue is 15 if.   
5da0: 64 65 66 6c 61 74 65 49 6e 69 74 20 69 73 20 75  deflateInit is u
5db0: 73 65 64 20 69 6e 73 74 65 61 64 2e 0a 0a 20 20  sed instead...  
5dc0: 20 20 20 77 69 6e 64 6f 77 42 69 74 73 20 63 61     windowBits ca
5dd0: 6e 20 61 6c 73 6f 20 62 65 20 2d 38 2e 2e 2d 31  n also be -8..-1
5de0: 35 20 66 6f 72 20 72 61 77 20 64 65 66 6c 61 74  5 for raw deflat
5df0: 65 2e 20 49 6e 20 74 68 69 73 20 63 61 73 65 2c  e. In this case,
5e00: 20 2d 77 69 6e 64 6f 77 42 69 74 73 0a 20 20 20   -windowBits.   
5e10: 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 77  determines the w
5e20: 69 6e 64 6f 77 20 73 69 7a 65 2e 20 64 65 66 6c  indow size. defl
5e30: 61 74 65 28 29 20 77 69 6c 6c 20 74 68 65 6e 20  ate() will then 
5e40: 67 65 6e 65 72 61 74 65 20 72 61 77 20 64 65 66  generate raw def
5e50: 6c 61 74 65 20 64 61 74 61 0a 20 20 20 77 69 74  late data.   wit
5e60: 68 20 6e 6f 20 7a 6c 69 62 20 68 65 61 64 65 72  h no zlib header
5e70: 20 6f 72 20 74 72 61 69 6c 65 72 2c 20 61 6e 64   or trailer, and
5e80: 20 77 69 6c 6c 20 6e 6f 74 20 63 6f 6d 70 75 74   will not comput
5e90: 65 20 61 6e 20 61 64 6c 65 72 33 32 20 63 68 65  e an adler32 che
5ea0: 63 6b 20 76 61 6c 75 65 2e 0a 0a 20 20 20 20 20  ck value...     
5eb0: 77 69 6e 64 6f 77 42 69 74 73 20 63 61 6e 20 61  windowBits can a
5ec0: 6c 73 6f 20 62 65 20 67 72 65 61 74 65 72 20 74  lso be greater t
5ed0: 68 61 6e 20 31 35 20 66 6f 72 20 6f 70 74 69 6f  han 15 for optio
5ee0: 6e 61 6c 20 67 7a 69 70 20 65 6e 63 6f 64 69 6e  nal gzip encodin
5ef0: 67 2e 20 41 64 64 0a 20 20 20 31 36 20 74 6f 20  g. Add.   16 to 
5f00: 77 69 6e 64 6f 77 42 69 74 73 20 74 6f 20 77 72  windowBits to wr
5f10: 69 74 65 20 61 20 73 69 6d 70 6c 65 20 67 7a 69  ite a simple gzi
5f20: 70 20 68 65 61 64 65 72 20 61 6e 64 20 74 72 61  p header and tra
5f30: 69 6c 65 72 20 61 72 6f 75 6e 64 20 74 68 65 0a  iler around the.
5f40: 20 20 20 63 6f 6d 70 72 65 73 73 65 64 20 64 61     compressed da
5f50: 74 61 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20  ta instead of a 
5f60: 7a 6c 69 62 20 77 72 61 70 70 65 72 2e 20 54 68  zlib wrapper. Th
5f70: 65 20 67 7a 69 70 20 68 65 61 64 65 72 20 77 69  e gzip header wi
5f80: 6c 6c 20 68 61 76 65 20 6e 6f 0a 20 20 20 66 69  ll have no.   fi
5f90: 6c 65 20 6e 61 6d 65 2c 20 6e 6f 20 65 78 74 72  le name, no extr
5fa0: 61 20 64 61 74 61 2c 20 6e 6f 20 63 6f 6d 6d 65  a data, no comme
5fb0: 6e 74 2c 20 6e 6f 20 6d 6f 64 69 66 69 63 61 74  nt, no modificat
5fc0: 69 6f 6e 20 74 69 6d 65 20 28 73 65 74 20 74 6f  ion time (set to
5fd0: 20 7a 65 72 6f 29 2c 0a 20 20 20 6e 6f 20 68 65   zero),.   no he
5fe0: 61 64 65 72 20 63 72 63 2c 20 61 6e 64 20 74 68  ader crc, and th
5ff0: 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  e operating syst
6000: 65 6d 20 77 69 6c 6c 20 62 65 20 73 65 74 20 74  em will be set t
6010: 6f 20 32 35 35 20 28 75 6e 6b 6e 6f 77 6e 29 2e  o 255 (unknown).
6020: 20 20 49 66 20 61 0a 20 20 20 67 7a 69 70 20 73    If a.   gzip s
6030: 74 72 65 61 6d 20 69 73 20 62 65 69 6e 67 20 77  tream is being w
6040: 72 69 74 74 65 6e 2c 20 73 74 72 6d 2d 3e 61 64  ritten, strm->ad
6050: 6c 65 72 20 69 73 20 61 20 63 72 63 33 32 20 69  ler is a crc32 i
6060: 6e 73 74 65 61 64 20 6f 66 20 61 6e 20 61 64 6c  nstead of an adl
6070: 65 72 33 32 2e 0a 0a 20 20 20 20 20 54 68 65 20  er32...     The 
6080: 6d 65 6d 4c 65 76 65 6c 20 70 61 72 61 6d 65 74  memLevel paramet
6090: 65 72 20 73 70 65 63 69 66 69 65 73 20 68 6f 77  er specifies how
60a0: 20 6d 75 63 68 20 6d 65 6d 6f 72 79 20 73 68 6f   much memory sho
60b0: 75 6c 64 20 62 65 20 61 6c 6c 6f 63 61 74 65 64  uld be allocated
60c0: 0a 20 20 20 66 6f 72 20 74 68 65 20 69 6e 74 65  .   for the inte
60d0: 72 6e 61 6c 20 63 6f 6d 70 72 65 73 73 69 6f 6e  rnal compression
60e0: 20 73 74 61 74 65 2e 20 6d 65 6d 4c 65 76 65 6c   state. memLevel
60f0: 3d 31 20 75 73 65 73 20 6d 69 6e 69 6d 75 6d 20  =1 uses minimum 
6100: 6d 65 6d 6f 72 79 20 62 75 74 0a 20 20 20 69 73  memory but.   is
6110: 20 73 6c 6f 77 20 61 6e 64 20 72 65 64 75 63 65   slow and reduce
6120: 73 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 72 61  s compression ra
6130: 74 69 6f 3b 20 6d 65 6d 4c 65 76 65 6c 3d 39 20  tio; memLevel=9 
6140: 75 73 65 73 20 6d 61 78 69 6d 75 6d 20 6d 65 6d  uses maximum mem
6150: 6f 72 79 0a 20 20 20 66 6f 72 20 6f 70 74 69 6d  ory.   for optim
6160: 61 6c 20 73 70 65 65 64 2e 20 54 68 65 20 64 65  al speed. The de
6170: 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 38  fault value is 8
6180: 2e 20 53 65 65 20 7a 63 6f 6e 66 2e 68 20 66 6f  . See zconf.h fo
6190: 72 20 74 6f 74 61 6c 20 6d 65 6d 6f 72 79 0a 20  r total memory. 
61a0: 20 20 75 73 61 67 65 20 61 73 20 61 20 66 75 6e    usage as a fun
61b0: 63 74 69 6f 6e 20 6f 66 20 77 69 6e 64 6f 77 42  ction of windowB
61c0: 69 74 73 20 61 6e 64 20 6d 65 6d 4c 65 76 65 6c  its and memLevel
61d0: 2e 0a 0a 20 20 20 20 20 54 68 65 20 73 74 72 61  ...     The stra
61e0: 74 65 67 79 20 70 61 72 61 6d 65 74 65 72 20 69  tegy parameter i
61f0: 73 20 75 73 65 64 20 74 6f 20 74 75 6e 65 20 74  s used to tune t
6200: 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 61  he compression a
6210: 6c 67 6f 72 69 74 68 6d 2e 20 55 73 65 20 74 68  lgorithm. Use th
6220: 65 0a 20 20 20 76 61 6c 75 65 20 5a 5f 44 45 46  e.   value Z_DEF
6230: 41 55 4c 54 5f 53 54 52 41 54 45 47 59 20 66 6f  AULT_STRATEGY fo
6240: 72 20 6e 6f 72 6d 61 6c 20 64 61 74 61 2c 20 5a  r normal data, Z
6250: 5f 46 49 4c 54 45 52 45 44 20 66 6f 72 20 64 61  _FILTERED for da
6260: 74 61 20 70 72 6f 64 75 63 65 64 20 62 79 20 61  ta produced by a
6270: 0a 20 20 20 66 69 6c 74 65 72 20 28 6f 72 20 70  .   filter (or p
6280: 72 65 64 69 63 74 6f 72 29 2c 20 5a 5f 48 55 46  redictor), Z_HUF
6290: 46 4d 41 4e 5f 4f 4e 4c 59 20 74 6f 20 66 6f 72  FMAN_ONLY to for
62a0: 63 65 20 48 75 66 66 6d 61 6e 20 65 6e 63 6f 64  ce Huffman encod
62b0: 69 6e 67 20 6f 6e 6c 79 20 28 6e 6f 0a 20 20 20  ing only (no.   
62c0: 73 74 72 69 6e 67 20 6d 61 74 63 68 29 2c 20 6f  string match), o
62d0: 72 20 5a 5f 52 4c 45 20 74 6f 20 6c 69 6d 69 74  r Z_RLE to limit
62e0: 20 6d 61 74 63 68 20 64 69 73 74 61 6e 63 65 73   match distances
62f0: 20 74 6f 20 6f 6e 65 20 28 72 75 6e 2d 6c 65 6e   to one (run-len
6300: 67 74 68 0a 20 20 20 65 6e 63 6f 64 69 6e 67 29  gth.   encoding)
6310: 2e 20 46 69 6c 74 65 72 65 64 20 64 61 74 61 20  . Filtered data 
6320: 63 6f 6e 73 69 73 74 73 20 6d 6f 73 74 6c 79 20  consists mostly 
6330: 6f 66 20 73 6d 61 6c 6c 20 76 61 6c 75 65 73 20  of small values 
6340: 77 69 74 68 20 61 20 73 6f 6d 65 77 68 61 74 0a  with a somewhat.
6350: 20 20 20 72 61 6e 64 6f 6d 20 64 69 73 74 72 69     random distri
6360: 62 75 74 69 6f 6e 2e 20 49 6e 20 74 68 69 73 20  bution. In this 
6370: 63 61 73 65 2c 20 74 68 65 20 63 6f 6d 70 72 65  case, the compre
6380: 73 73 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ssion algorithm 
6390: 69 73 20 74 75 6e 65 64 20 74 6f 0a 20 20 20 63  is tuned to.   c
63a0: 6f 6d 70 72 65 73 73 20 74 68 65 6d 20 62 65 74  ompress them bet
63b0: 74 65 72 2e 20 54 68 65 20 65 66 66 65 63 74 20  ter. The effect 
63c0: 6f 66 20 5a 5f 46 49 4c 54 45 52 45 44 20 69 73  of Z_FILTERED is
63d0: 20 74 6f 20 66 6f 72 63 65 20 6d 6f 72 65 20 48   to force more H
63e0: 75 66 66 6d 61 6e 0a 20 20 20 63 6f 64 69 6e 67  uffman.   coding
63f0: 20 61 6e 64 20 6c 65 73 73 20 73 74 72 69 6e 67   and less string
6400: 20 6d 61 74 63 68 69 6e 67 3b 20 69 74 20 69 73   matching; it is
6410: 20 73 6f 6d 65 77 68 61 74 20 69 6e 74 65 72 6d   somewhat interm
6420: 65 64 69 61 74 65 20 62 65 74 77 65 65 6e 0a 20  ediate between. 
6430: 20 20 5a 5f 44 45 46 41 55 4c 54 20 61 6e 64 20    Z_DEFAULT and 
6440: 5a 5f 48 55 46 46 4d 41 4e 5f 4f 4e 4c 59 2e 20  Z_HUFFMAN_ONLY. 
6450: 5a 5f 52 4c 45 20 69 73 20 64 65 73 69 67 6e 65  Z_RLE is designe
6460: 64 20 74 6f 20 62 65 20 61 6c 6d 6f 73 74 20 61  d to be almost a
6470: 73 20 66 61 73 74 20 61 73 0a 20 20 20 5a 5f 48  s fast as.   Z_H
6480: 55 46 46 4d 41 4e 5f 4f 4e 4c 59 2c 20 62 75 74  UFFMAN_ONLY, but
6490: 20 67 69 76 65 20 62 65 74 74 65 72 20 63 6f 6d   give better com
64a0: 70 72 65 73 73 69 6f 6e 20 66 6f 72 20 50 4e 47  pression for PNG
64b0: 20 69 6d 61 67 65 20 64 61 74 61 2e 20 54 68 65   image data. The
64c0: 20 73 74 72 61 74 65 67 79 0a 20 20 20 70 61 72   strategy.   par
64d0: 61 6d 65 74 65 72 20 6f 6e 6c 79 20 61 66 66 65  ameter only affe
64e0: 63 74 73 20 74 68 65 20 63 6f 6d 70 72 65 73 73  cts the compress
64f0: 69 6f 6e 20 72 61 74 69 6f 20 62 75 74 20 6e 6f  ion ratio but no
6500: 74 20 74 68 65 20 63 6f 72 72 65 63 74 6e 65 73  t the correctnes
6510: 73 20 6f 66 20 74 68 65 0a 20 20 20 63 6f 6d 70  s of the.   comp
6520: 72 65 73 73 65 64 20 6f 75 74 70 75 74 20 65 76  ressed output ev
6530: 65 6e 20 69 66 20 69 74 20 69 73 20 6e 6f 74 20  en if it is not 
6540: 73 65 74 20 61 70 70 72 6f 70 72 69 61 74 65 6c  set appropriatel
6550: 79 2e 20 20 5a 5f 46 49 58 45 44 20 70 72 65 76  y.  Z_FIXED prev
6560: 65 6e 74 73 20 74 68 65 0a 20 20 20 75 73 65 20  ents the.   use 
6570: 6f 66 20 64 79 6e 61 6d 69 63 20 48 75 66 66 6d  of dynamic Huffm
6580: 61 6e 20 63 6f 64 65 73 2c 20 61 6c 6c 6f 77 69  an codes, allowi
6590: 6e 67 20 66 6f 72 20 61 20 73 69 6d 70 6c 65 72  ng for a simpler
65a0: 20 64 65 63 6f 64 65 72 20 66 6f 72 20 73 70 65   decoder for spe
65b0: 63 69 61 6c 0a 20 20 20 61 70 70 6c 69 63 61 74  cial.   applicat
65c0: 69 6f 6e 73 2e 0a 0a 20 20 20 20 20 20 64 65 66  ions...      def
65d0: 6c 61 74 65 49 6e 69 74 32 20 72 65 74 75 72 6e  lateInit2 return
65e0: 73 20 5a 5f 4f 4b 20 69 66 20 73 75 63 63 65 73  s Z_OK if succes
65f0: 73 2c 20 5a 5f 4d 45 4d 5f 45 52 52 4f 52 20 69  s, Z_MEM_ERROR i
6600: 66 20 74 68 65 72 65 20 77 61 73 20 6e 6f 74 20  f there was not 
6610: 65 6e 6f 75 67 68 0a 20 20 20 6d 65 6d 6f 72 79  enough.   memory
6620: 2c 20 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52  , Z_STREAM_ERROR
6630: 20 69 66 20 61 20 70 61 72 61 6d 65 74 65 72 20   if a parameter 
6640: 69 73 20 69 6e 76 61 6c 69 64 20 28 73 75 63 68  is invalid (such
6650: 20 61 73 20 61 6e 20 69 6e 76 61 6c 69 64 0a 20   as an invalid. 
6660: 20 20 6d 65 74 68 6f 64 29 2e 20 6d 73 67 20 69    method). msg i
6670: 73 20 73 65 74 20 74 6f 20 6e 75 6c 6c 20 69 66  s set to null if
6680: 20 74 68 65 72 65 20 69 73 20 6e 6f 20 65 72 72   there is no err
6690: 6f 72 20 6d 65 73 73 61 67 65 2e 20 20 64 65 66  or message.  def
66a0: 6c 61 74 65 49 6e 69 74 32 20 64 6f 65 73 0a 20  lateInit2 does. 
66b0: 20 20 6e 6f 74 20 70 65 72 66 6f 72 6d 20 61 6e    not perform an
66c0: 79 20 63 6f 6d 70 72 65 73 73 69 6f 6e 3a 20 74  y compression: t
66d0: 68 69 73 20 77 69 6c 6c 20 62 65 20 64 6f 6e 65  his will be done
66e0: 20 62 79 20 64 65 66 6c 61 74 65 28 29 2e 0a 2a   by deflate()..*
66f0: 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a  /..ZEXTERN int Z
6700: 45 58 50 4f 52 54 20 64 65 66 6c 61 74 65 53 65  EXPORT deflateSe
6710: 74 44 69 63 74 69 6f 6e 61 72 79 20 4f 46 28 28  tDictionary OF((
6720: 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 2c 0a  z_streamp strm,.
6730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6750: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
6760: 73 74 20 42 79 74 65 66 20 2a 64 69 63 74 69 6f  st Bytef *dictio
6770: 6e 61 72 79 2c 0a 20 20 20 20 20 20 20 20 20 20  nary,.          
6780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67a0: 20 20 20 75 49 6e 74 20 20 64 69 63 74 4c 65 6e     uInt  dictLen
67b0: 67 74 68 29 29 3b 0a 2f 2a 0a 20 20 20 20 20 49  gth));./*.     I
67c0: 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20 63  nitializes the c
67d0: 6f 6d 70 72 65 73 73 69 6f 6e 20 64 69 63 74 69  ompression dicti
67e0: 6f 6e 61 72 79 20 66 72 6f 6d 20 74 68 65 20 67  onary from the g
67f0: 69 76 65 6e 20 62 79 74 65 20 73 65 71 75 65 6e  iven byte sequen
6800: 63 65 0a 20 20 20 77 69 74 68 6f 75 74 20 70 72  ce.   without pr
6810: 6f 64 75 63 69 6e 67 20 61 6e 79 20 63 6f 6d 70  oducing any comp
6820: 72 65 73 73 65 64 20 6f 75 74 70 75 74 2e 20 54  ressed output. T
6830: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 75 73  his function mus
6840: 74 20 62 65 20 63 61 6c 6c 65 64 0a 20 20 20 69  t be called.   i
6850: 6d 6d 65 64 69 61 74 65 6c 79 20 61 66 74 65 72  mmediately after
6860: 20 64 65 66 6c 61 74 65 49 6e 69 74 2c 20 64 65   deflateInit, de
6870: 66 6c 61 74 65 49 6e 69 74 32 20 6f 72 20 64 65  flateInit2 or de
6880: 66 6c 61 74 65 52 65 73 65 74 2c 20 62 65 66 6f  flateReset, befo
6890: 72 65 20 61 6e 79 0a 20 20 20 63 61 6c 6c 20 6f  re any.   call o
68a0: 66 20 64 65 66 6c 61 74 65 2e 20 54 68 65 20 63  f deflate. The c
68b0: 6f 6d 70 72 65 73 73 6f 72 20 61 6e 64 20 64 65  ompressor and de
68c0: 63 6f 6d 70 72 65 73 73 6f 72 20 6d 75 73 74 20  compressor must 
68d0: 75 73 65 20 65 78 61 63 74 6c 79 20 74 68 65 20  use exactly the 
68e0: 73 61 6d 65 0a 20 20 20 64 69 63 74 69 6f 6e 61  same.   dictiona
68f0: 72 79 20 28 73 65 65 20 69 6e 66 6c 61 74 65 53  ry (see inflateS
6900: 65 74 44 69 63 74 69 6f 6e 61 72 79 29 2e 0a 0a  etDictionary)...
6910: 20 20 20 20 20 54 68 65 20 64 69 63 74 69 6f 6e       The diction
6920: 61 72 79 20 73 68 6f 75 6c 64 20 63 6f 6e 73 69  ary should consi
6930: 73 74 20 6f 66 20 73 74 72 69 6e 67 73 20 28 62  st of strings (b
6940: 79 74 65 20 73 65 71 75 65 6e 63 65 73 29 20 74  yte sequences) t
6950: 68 61 74 20 61 72 65 20 6c 69 6b 65 6c 79 0a 20  hat are likely. 
6960: 20 20 74 6f 20 62 65 20 65 6e 63 6f 75 6e 74 65    to be encounte
6970: 72 65 64 20 6c 61 74 65 72 20 69 6e 20 74 68 65  red later in the
6980: 20 64 61 74 61 20 74 6f 20 62 65 20 63 6f 6d 70   data to be comp
6990: 72 65 73 73 65 64 2c 20 77 69 74 68 20 74 68 65  ressed, with the
69a0: 20 6d 6f 73 74 20 63 6f 6d 6d 6f 6e 6c 79 0a 20   most commonly. 
69b0: 20 20 75 73 65 64 20 73 74 72 69 6e 67 73 20 70    used strings p
69c0: 72 65 66 65 72 61 62 6c 79 20 70 75 74 20 74 6f  referably put to
69d0: 77 61 72 64 73 20 74 68 65 20 65 6e 64 20 6f 66  wards the end of
69e0: 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79 2e   the dictionary.
69f0: 20 55 73 69 6e 67 20 61 0a 20 20 20 64 69 63 74   Using a.   dict
6a00: 69 6f 6e 61 72 79 20 69 73 20 6d 6f 73 74 20 75  ionary is most u
6a10: 73 65 66 75 6c 20 77 68 65 6e 20 74 68 65 20 64  seful when the d
6a20: 61 74 61 20 74 6f 20 62 65 20 63 6f 6d 70 72 65  ata to be compre
6a30: 73 73 65 64 20 69 73 20 73 68 6f 72 74 20 61 6e  ssed is short an
6a40: 64 20 63 61 6e 20 62 65 0a 20 20 20 70 72 65 64  d can be.   pred
6a50: 69 63 74 65 64 20 77 69 74 68 20 67 6f 6f 64 20  icted with good 
6a60: 61 63 63 75 72 61 63 79 3b 20 74 68 65 20 64 61  accuracy; the da
6a70: 74 61 20 63 61 6e 20 74 68 65 6e 20 62 65 20 63  ta can then be c
6a80: 6f 6d 70 72 65 73 73 65 64 20 62 65 74 74 65 72  ompressed better
6a90: 20 74 68 61 6e 0a 20 20 20 77 69 74 68 20 74 68   than.   with th
6aa0: 65 20 64 65 66 61 75 6c 74 20 65 6d 70 74 79 20  e default empty 
6ab0: 64 69 63 74 69 6f 6e 61 72 79 2e 0a 0a 20 20 20  dictionary...   
6ac0: 20 20 44 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74    Depending on t
6ad0: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 63  he size of the c
6ae0: 6f 6d 70 72 65 73 73 69 6f 6e 20 64 61 74 61 20  ompression data 
6af0: 73 74 72 75 63 74 75 72 65 73 20 73 65 6c 65 63  structures selec
6b00: 74 65 64 20 62 79 0a 20 20 20 64 65 66 6c 61 74  ted by.   deflat
6b10: 65 49 6e 69 74 20 6f 72 20 64 65 66 6c 61 74 65  eInit or deflate
6b20: 49 6e 69 74 32 2c 20 61 20 70 61 72 74 20 6f 66  Init2, a part of
6b30: 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79 20   the dictionary 
6b40: 6d 61 79 20 69 6e 20 65 66 66 65 63 74 20 62 65  may in effect be
6b50: 0a 20 20 20 64 69 73 63 61 72 64 65 64 2c 20 66  .   discarded, f
6b60: 6f 72 20 65 78 61 6d 70 6c 65 20 69 66 20 74 68  or example if th
6b70: 65 20 64 69 63 74 69 6f 6e 61 72 79 20 69 73 20  e dictionary is 
6b80: 6c 61 72 67 65 72 20 74 68 61 6e 20 74 68 65 20  larger than the 
6b90: 77 69 6e 64 6f 77 20 73 69 7a 65 20 69 6e 0a 20  window size in. 
6ba0: 20 20 64 65 66 6c 61 74 65 20 6f 72 20 64 65 66    deflate or def
6bb0: 6c 61 74 65 32 2e 20 54 68 75 73 20 74 68 65 20  late2. Thus the 
6bc0: 73 74 72 69 6e 67 73 20 6d 6f 73 74 20 6c 69 6b  strings most lik
6bd0: 65 6c 79 20 74 6f 20 62 65 20 75 73 65 66 75 6c  ely to be useful
6be0: 20 73 68 6f 75 6c 64 20 62 65 0a 20 20 20 70 75   should be.   pu
6bf0: 74 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20  t at the end of 
6c00: 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79 2c 20  the dictionary, 
6c10: 6e 6f 74 20 61 74 20 74 68 65 20 66 72 6f 6e 74  not at the front
6c20: 2e 20 49 6e 20 61 64 64 69 74 69 6f 6e 2c 20 74  . In addition, t
6c30: 68 65 0a 20 20 20 63 75 72 72 65 6e 74 20 69 6d  he.   current im
6c40: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
6c50: 64 65 66 6c 61 74 65 20 77 69 6c 6c 20 75 73 65  deflate will use
6c60: 20 61 74 20 6d 6f 73 74 20 74 68 65 20 77 69 6e   at most the win
6c70: 64 6f 77 20 73 69 7a 65 20 6d 69 6e 75 73 0a 20  dow size minus. 
6c80: 20 20 32 36 32 20 62 79 74 65 73 20 6f 66 20 74    262 bytes of t
6c90: 68 65 20 70 72 6f 76 69 64 65 64 20 64 69 63 74  he provided dict
6ca0: 69 6f 6e 61 72 79 2e 0a 0a 20 20 20 20 20 55 70  ionary...     Up
6cb0: 6f 6e 20 72 65 74 75 72 6e 20 6f 66 20 74 68 69  on return of thi
6cc0: 73 20 66 75 6e 63 74 69 6f 6e 2c 20 73 74 72 6d  s function, strm
6cd0: 2d 3e 61 64 6c 65 72 20 69 73 20 73 65 74 20 74  ->adler is set t
6ce0: 6f 20 74 68 65 20 61 64 6c 65 72 33 32 20 76 61  o the adler32 va
6cf0: 6c 75 65 0a 20 20 20 6f 66 20 74 68 65 20 64 69  lue.   of the di
6d00: 63 74 69 6f 6e 61 72 79 3b 20 74 68 65 20 64 65  ctionary; the de
6d10: 63 6f 6d 70 72 65 73 73 6f 72 20 6d 61 79 20 6c  compressor may l
6d20: 61 74 65 72 20 75 73 65 20 74 68 69 73 20 76 61  ater use this va
6d30: 6c 75 65 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  lue to determine
6d40: 0a 20 20 20 77 68 69 63 68 20 64 69 63 74 69 6f  .   which dictio
6d50: 6e 61 72 79 20 68 61 73 20 62 65 65 6e 20 75 73  nary has been us
6d60: 65 64 20 62 79 20 74 68 65 20 63 6f 6d 70 72 65  ed by the compre
6d70: 73 73 6f 72 2e 20 28 54 68 65 20 61 64 6c 65 72  ssor. (The adler
6d80: 33 32 20 76 61 6c 75 65 0a 20 20 20 61 70 70 6c  32 value.   appl
6d90: 69 65 73 20 74 6f 20 74 68 65 20 77 68 6f 6c 65  ies to the whole
6da0: 20 64 69 63 74 69 6f 6e 61 72 79 20 65 76 65 6e   dictionary even
6db0: 20 69 66 20 6f 6e 6c 79 20 61 20 73 75 62 73 65   if only a subse
6dc0: 74 20 6f 66 20 74 68 65 20 64 69 63 74 69 6f 6e  t of the diction
6dd0: 61 72 79 20 69 73 0a 20 20 20 61 63 74 75 61 6c  ary is.   actual
6de0: 6c 79 20 75 73 65 64 20 62 79 20 74 68 65 20 63  ly used by the c
6df0: 6f 6d 70 72 65 73 73 6f 72 2e 29 20 49 66 20 61  ompressor.) If a
6e00: 20 72 61 77 20 64 65 66 6c 61 74 65 20 77 61 73   raw deflate was
6e10: 20 72 65 71 75 65 73 74 65 64 2c 20 74 68 65 6e   requested, then
6e20: 20 74 68 65 0a 20 20 20 61 64 6c 65 72 33 32 20   the.   adler32 
6e30: 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 63 6f 6d  value is not com
6e40: 70 75 74 65 64 20 61 6e 64 20 73 74 72 6d 2d 3e  puted and strm->
6e50: 61 64 6c 65 72 20 69 73 20 6e 6f 74 20 73 65 74  adler is not set
6e60: 2e 0a 0a 20 20 20 20 20 64 65 66 6c 61 74 65 53  ...     deflateS
6e70: 65 74 44 69 63 74 69 6f 6e 61 72 79 20 72 65 74  etDictionary ret
6e80: 75 72 6e 73 20 5a 5f 4f 4b 20 69 66 20 73 75 63  urns Z_OK if suc
6e90: 63 65 73 73 2c 20 6f 72 20 5a 5f 53 54 52 45 41  cess, or Z_STREA
6ea0: 4d 5f 45 52 52 4f 52 20 69 66 20 61 0a 20 20 20  M_ERROR if a.   
6eb0: 70 61 72 61 6d 65 74 65 72 20 69 73 20 69 6e 76  parameter is inv
6ec0: 61 6c 69 64 20 28 73 75 63 68 20 61 73 20 4e 55  alid (such as NU
6ed0: 4c 4c 20 64 69 63 74 69 6f 6e 61 72 79 29 20 6f  LL dictionary) o
6ee0: 72 20 74 68 65 20 73 74 72 65 61 6d 20 73 74 61  r the stream sta
6ef0: 74 65 20 69 73 0a 20 20 20 69 6e 63 6f 6e 73 69  te is.   inconsi
6f00: 73 74 65 6e 74 20 28 66 6f 72 20 65 78 61 6d 70  stent (for examp
6f10: 6c 65 20 69 66 20 64 65 66 6c 61 74 65 20 68 61  le if deflate ha
6f20: 73 20 61 6c 72 65 61 64 79 20 62 65 65 6e 20 63  s already been c
6f30: 61 6c 6c 65 64 20 66 6f 72 20 74 68 69 73 20 73  alled for this s
6f40: 74 72 65 61 6d 0a 20 20 20 6f 72 20 69 66 20 74  tream.   or if t
6f50: 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6d  he compression m
6f60: 65 74 68 6f 64 20 69 73 20 62 73 6f 72 74 29 2e  ethod is bsort).
6f70: 20 64 65 66 6c 61 74 65 53 65 74 44 69 63 74 69   deflateSetDicti
6f80: 6f 6e 61 72 79 20 64 6f 65 73 20 6e 6f 74 0a 20  onary does not. 
6f90: 20 20 70 65 72 66 6f 72 6d 20 61 6e 79 20 63 6f    perform any co
6fa0: 6d 70 72 65 73 73 69 6f 6e 3a 20 74 68 69 73 20  mpression: this 
6fb0: 77 69 6c 6c 20 62 65 20 64 6f 6e 65 20 62 79 20  will be done by 
6fc0: 64 65 66 6c 61 74 65 28 29 2e 0a 2a 2f 0a 0a 5a  deflate()..*/..Z
6fd0: 45 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f  EXTERN int ZEXPO
6fe0: 52 54 20 64 65 66 6c 61 74 65 43 6f 70 79 20 4f  RT deflateCopy O
6ff0: 46 28 28 7a 5f 73 74 72 65 61 6d 70 20 64 65 73  F((z_streamp des
7000: 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t,.             
7010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7020: 20 20 20 20 20 20 20 7a 5f 73 74 72 65 61 6d 70         z_streamp
7030: 20 73 6f 75 72 63 65 29 29 3b 0a 2f 2a 0a 20 20   source));./*.  
7040: 20 20 20 53 65 74 73 20 74 68 65 20 64 65 73 74     Sets the dest
7050: 69 6e 61 74 69 6f 6e 20 73 74 72 65 61 6d 20 61  ination stream a
7060: 73 20 61 20 63 6f 6d 70 6c 65 74 65 20 63 6f 70  s a complete cop
7070: 79 20 6f 66 20 74 68 65 20 73 6f 75 72 63 65 20  y of the source 
7080: 73 74 72 65 61 6d 2e 0a 0a 20 20 20 20 20 54 68  stream...     Th
7090: 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20  is function can 
70a0: 62 65 20 75 73 65 66 75 6c 20 77 68 65 6e 20 73  be useful when s
70b0: 65 76 65 72 61 6c 20 63 6f 6d 70 72 65 73 73 69  everal compressi
70c0: 6f 6e 20 73 74 72 61 74 65 67 69 65 73 20 77 69  on strategies wi
70d0: 6c 6c 20 62 65 0a 20 20 20 74 72 69 65 64 2c 20  ll be.   tried, 
70e0: 66 6f 72 20 65 78 61 6d 70 6c 65 20 77 68 65 6e  for example when
70f0: 20 74 68 65 72 65 20 61 72 65 20 73 65 76 65 72   there are sever
7100: 61 6c 20 77 61 79 73 20 6f 66 20 70 72 65 2d 70  al ways of pre-p
7110: 72 6f 63 65 73 73 69 6e 67 20 74 68 65 20 69 6e  rocessing the in
7120: 70 75 74 0a 20 20 20 64 61 74 61 20 77 69 74 68  put.   data with
7130: 20 61 20 66 69 6c 74 65 72 2e 20 54 68 65 20 73   a filter. The s
7140: 74 72 65 61 6d 73 20 74 68 61 74 20 77 69 6c 6c  treams that will
7150: 20 62 65 20 64 69 73 63 61 72 64 65 64 20 73 68   be discarded sh
7160: 6f 75 6c 64 20 74 68 65 6e 20 62 65 20 66 72 65  ould then be fre
7170: 65 64 0a 20 20 20 62 79 20 63 61 6c 6c 69 6e 67  ed.   by calling
7180: 20 64 65 66 6c 61 74 65 45 6e 64 2e 20 20 4e 6f   deflateEnd.  No
7190: 74 65 20 74 68 61 74 20 64 65 66 6c 61 74 65 43  te that deflateC
71a0: 6f 70 79 20 64 75 70 6c 69 63 61 74 65 73 20 74  opy duplicates t
71b0: 68 65 20 69 6e 74 65 72 6e 61 6c 0a 20 20 20 63  he internal.   c
71c0: 6f 6d 70 72 65 73 73 69 6f 6e 20 73 74 61 74 65  ompression state
71d0: 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 71 75   which can be qu
71e0: 69 74 65 20 6c 61 72 67 65 2c 20 73 6f 20 74 68  ite large, so th
71f0: 69 73 20 73 74 72 61 74 65 67 79 20 69 73 20 73  is strategy is s
7200: 6c 6f 77 20 61 6e 64 0a 20 20 20 63 61 6e 20 63  low and.   can c
7210: 6f 6e 73 75 6d 65 20 6c 6f 74 73 20 6f 66 20 6d  onsume lots of m
7220: 65 6d 6f 72 79 2e 0a 0a 20 20 20 20 20 64 65 66  emory...     def
7230: 6c 61 74 65 43 6f 70 79 20 72 65 74 75 72 6e 73  lateCopy returns
7240: 20 5a 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73   Z_OK if success
7250: 2c 20 5a 5f 4d 45 4d 5f 45 52 52 4f 52 20 69 66  , Z_MEM_ERROR if
7260: 20 74 68 65 72 65 20 77 61 73 20 6e 6f 74 0a 20   there was not. 
7270: 20 20 65 6e 6f 75 67 68 20 6d 65 6d 6f 72 79 2c    enough memory,
7280: 20 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20   Z_STREAM_ERROR 
7290: 69 66 20 74 68 65 20 73 6f 75 72 63 65 20 73 74  if the source st
72a0: 72 65 61 6d 20 73 74 61 74 65 20 77 61 73 20 69  ream state was i
72b0: 6e 63 6f 6e 73 69 73 74 65 6e 74 0a 20 20 20 28  nconsistent.   (
72c0: 73 75 63 68 20 61 73 20 7a 61 6c 6c 6f 63 20 62  such as zalloc b
72d0: 65 69 6e 67 20 4e 55 4c 4c 29 2e 20 6d 73 67 20  eing NULL). msg 
72e0: 69 73 20 6c 65 66 74 20 75 6e 63 68 61 6e 67 65  is left unchange
72f0: 64 20 69 6e 20 62 6f 74 68 20 73 6f 75 72 63 65  d in both source
7300: 20 61 6e 64 0a 20 20 20 64 65 73 74 69 6e 61 74   and.   destinat
7310: 69 6f 6e 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e  ion..*/..ZEXTERN
7320: 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 64 65 66   int ZEXPORT def
7330: 6c 61 74 65 52 65 73 65 74 20 4f 46 28 28 7a 5f  lateReset OF((z_
7340: 73 74 72 65 61 6d 70 20 73 74 72 6d 29 29 3b 0a  streamp strm));.
7350: 2f 2a 0a 20 20 20 20 20 54 68 69 73 20 66 75 6e  /*.     This fun
7360: 63 74 69 6f 6e 20 69 73 20 65 71 75 69 76 61 6c  ction is equival
7370: 65 6e 74 20 74 6f 20 64 65 66 6c 61 74 65 45 6e  ent to deflateEn
7380: 64 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 64 65  d followed by de
7390: 66 6c 61 74 65 49 6e 69 74 2c 0a 20 20 20 62 75  flateInit,.   bu
73a0: 74 20 64 6f 65 73 20 6e 6f 74 20 66 72 65 65 20  t does not free 
73b0: 61 6e 64 20 72 65 61 6c 6c 6f 63 61 74 65 20 61  and reallocate a
73c0: 6c 6c 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20  ll the internal 
73d0: 63 6f 6d 70 72 65 73 73 69 6f 6e 20 73 74 61 74  compression stat
73e0: 65 2e 0a 20 20 20 54 68 65 20 73 74 72 65 61 6d  e..   The stream
73f0: 20 77 69 6c 6c 20 6b 65 65 70 20 74 68 65 20 73   will keep the s
7400: 61 6d 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20  ame compression 
7410: 6c 65 76 65 6c 20 61 6e 64 20 61 6e 79 20 6f 74  level and any ot
7420: 68 65 72 20 61 74 74 72 69 62 75 74 65 73 0a 20  her attributes. 
7430: 20 20 74 68 61 74 20 6d 61 79 20 68 61 76 65 20    that may have 
7440: 62 65 65 6e 20 73 65 74 20 62 79 20 64 65 66 6c  been set by defl
7450: 61 74 65 49 6e 69 74 32 2e 0a 0a 20 20 20 20 20  ateInit2...     
7460: 20 64 65 66 6c 61 74 65 52 65 73 65 74 20 72 65   deflateReset re
7470: 74 75 72 6e 73 20 5a 5f 4f 4b 20 69 66 20 73 75  turns Z_OK if su
7480: 63 63 65 73 73 2c 20 6f 72 20 5a 5f 53 54 52 45  ccess, or Z_STRE
7490: 41 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20  AM_ERROR if the 
74a0: 73 6f 75 72 63 65 0a 20 20 20 73 74 72 65 61 6d  source.   stream
74b0: 20 73 74 61 74 65 20 77 61 73 20 69 6e 63 6f 6e   state was incon
74c0: 73 69 73 74 65 6e 74 20 28 73 75 63 68 20 61 73  sistent (such as
74d0: 20 7a 61 6c 6c 6f 63 20 6f 72 20 73 74 61 74 65   zalloc or state
74e0: 20 62 65 69 6e 67 20 4e 55 4c 4c 29 2e 0a 2a 2f   being NULL)..*/
74f0: 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45  ..ZEXTERN int ZE
7500: 58 50 4f 52 54 20 64 65 66 6c 61 74 65 50 61 72  XPORT deflatePar
7510: 61 6d 73 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d  ams OF((z_stream
7520: 70 20 73 74 72 6d 2c 0a 20 20 20 20 20 20 20 20  p strm,.        
7530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
7550: 74 20 6c 65 76 65 6c 2c 0a 20 20 20 20 20 20 20  t level,.       
7560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
7580: 6e 74 20 73 74 72 61 74 65 67 79 29 29 3b 0a 2f  nt strategy));./
7590: 2a 0a 20 20 20 20 20 44 79 6e 61 6d 69 63 61 6c  *.     Dynamical
75a0: 6c 79 20 75 70 64 61 74 65 20 74 68 65 20 63 6f  ly update the co
75b0: 6d 70 72 65 73 73 69 6f 6e 20 6c 65 76 65 6c 20  mpression level 
75c0: 61 6e 64 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20  and compression 
75d0: 73 74 72 61 74 65 67 79 2e 20 20 54 68 65 0a 20  strategy.  The. 
75e0: 20 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e    interpretation
75f0: 20 6f 66 20 6c 65 76 65 6c 20 61 6e 64 20 73 74   of level and st
7600: 72 61 74 65 67 79 20 69 73 20 61 73 20 69 6e 20  rategy is as in 
7610: 64 65 66 6c 61 74 65 49 6e 69 74 32 2e 20 20 54  deflateInit2.  T
7620: 68 69 73 20 63 61 6e 20 62 65 0a 20 20 20 75 73  his can be.   us
7630: 65 64 20 74 6f 20 73 77 69 74 63 68 20 62 65 74  ed to switch bet
7640: 77 65 65 6e 20 63 6f 6d 70 72 65 73 73 69 6f 6e  ween compression
7650: 20 61 6e 64 20 73 74 72 61 69 67 68 74 20 63 6f   and straight co
7660: 70 79 20 6f 66 20 74 68 65 20 69 6e 70 75 74 20  py of the input 
7670: 64 61 74 61 2c 20 6f 72 0a 20 20 20 74 6f 20 73  data, or.   to s
7680: 77 69 74 63 68 20 74 6f 20 61 20 64 69 66 66 65  witch to a diffe
7690: 72 65 6e 74 20 6b 69 6e 64 20 6f 66 20 69 6e 70  rent kind of inp
76a0: 75 74 20 64 61 74 61 20 72 65 71 75 69 72 69 6e  ut data requirin
76b0: 67 20 61 20 64 69 66 66 65 72 65 6e 74 0a 20 20  g a different.  
76c0: 20 73 74 72 61 74 65 67 79 2e 20 49 66 20 74 68   strategy. If th
76d0: 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 6c 65  e compression le
76e0: 76 65 6c 20 69 73 20 63 68 61 6e 67 65 64 2c 20  vel is changed, 
76f0: 74 68 65 20 69 6e 70 75 74 20 61 76 61 69 6c 61  the input availa
7700: 62 6c 65 20 73 6f 20 66 61 72 0a 20 20 20 69 73  ble so far.   is
7710: 20 63 6f 6d 70 72 65 73 73 65 64 20 77 69 74 68   compressed with
7720: 20 74 68 65 20 6f 6c 64 20 6c 65 76 65 6c 20 28   the old level (
7730: 61 6e 64 20 6d 61 79 20 62 65 20 66 6c 75 73 68  and may be flush
7740: 65 64 29 3b 20 74 68 65 20 6e 65 77 20 6c 65 76  ed); the new lev
7750: 65 6c 20 77 69 6c 6c 0a 20 20 20 74 61 6b 65 20  el will.   take 
7760: 65 66 66 65 63 74 20 6f 6e 6c 79 20 61 74 20 74  effect only at t
7770: 68 65 20 6e 65 78 74 20 63 61 6c 6c 20 6f 66 20  he next call of 
7780: 64 65 66 6c 61 74 65 28 29 2e 0a 0a 20 20 20 20  deflate()...    
7790: 20 42 65 66 6f 72 65 20 74 68 65 20 63 61 6c 6c   Before the call
77a0: 20 6f 66 20 64 65 66 6c 61 74 65 50 61 72 61 6d   of deflateParam
77b0: 73 2c 20 74 68 65 20 73 74 72 65 61 6d 20 73 74  s, the stream st
77c0: 61 74 65 20 6d 75 73 74 20 62 65 20 73 65 74 20  ate must be set 
77d0: 61 73 20 66 6f 72 0a 20 20 20 61 20 63 61 6c 6c  as for.   a call
77e0: 20 6f 66 20 64 65 66 6c 61 74 65 28 29 2c 20 73   of deflate(), s
77f0: 69 6e 63 65 20 74 68 65 20 63 75 72 72 65 6e 74  ince the current
7800: 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 70  ly available inp
7810: 75 74 20 6d 61 79 20 68 61 76 65 20 74 6f 0a 20  ut may have to. 
7820: 20 20 62 65 20 63 6f 6d 70 72 65 73 73 65 64 20    be compressed 
7830: 61 6e 64 20 66 6c 75 73 68 65 64 2e 20 49 6e 20  and flushed. In 
7840: 70 61 72 74 69 63 75 6c 61 72 2c 20 73 74 72 6d  particular, strm
7850: 2d 3e 61 76 61 69 6c 5f 6f 75 74 20 6d 75 73 74  ->avail_out must
7860: 20 62 65 20 6e 6f 6e 2d 7a 65 72 6f 2e 0a 0a 20   be non-zero... 
7870: 20 20 20 20 64 65 66 6c 61 74 65 50 61 72 61 6d      deflateParam
7880: 73 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20 69  s returns Z_OK i
7890: 66 20 73 75 63 63 65 73 73 2c 20 5a 5f 53 54 52  f success, Z_STR
78a0: 45 41 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65  EAM_ERROR if the
78b0: 20 73 6f 75 72 63 65 0a 20 20 20 73 74 72 65 61   source.   strea
78c0: 6d 20 73 74 61 74 65 20 77 61 73 20 69 6e 63 6f  m state was inco
78d0: 6e 73 69 73 74 65 6e 74 20 6f 72 20 69 66 20 61  nsistent or if a
78e0: 20 70 61 72 61 6d 65 74 65 72 20 77 61 73 20 69   parameter was i
78f0: 6e 76 61 6c 69 64 2c 20 5a 5f 42 55 46 5f 45 52  nvalid, Z_BUF_ER
7900: 52 4f 52 0a 20 20 20 69 66 20 73 74 72 6d 2d 3e  ROR.   if strm->
7910: 61 76 61 69 6c 5f 6f 75 74 20 77 61 73 20 7a 65  avail_out was ze
7920: 72 6f 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20  ro..*/..ZEXTERN 
7930: 69 6e 74 20 5a 45 58 50 4f 52 54 20 64 65 66 6c  int ZEXPORT defl
7940: 61 74 65 54 75 6e 65 20 4f 46 28 28 7a 5f 73 74  ateTune OF((z_st
7950: 72 65 61 6d 70 20 73 74 72 6d 2c 0a 20 20 20 20  reamp strm,.    
7960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7980: 69 6e 74 20 67 6f 6f 64 5f 6c 65 6e 67 74 68 2c  int good_length,
7990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
79a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79b0: 20 20 20 20 20 69 6e 74 20 6d 61 78 5f 6c 61 7a       int max_laz
79c0: 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y,.             
79d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79e0: 20 20 20 20 20 20 20 69 6e 74 20 6e 69 63 65 5f         int nice_
79f0: 6c 65 6e 67 74 68 2c 0a 20 20 20 20 20 20 20 20  length,.        
7a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a10: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
7a20: 6d 61 78 5f 63 68 61 69 6e 29 29 3b 0a 2f 2a 0a  max_chain));./*.
7a30: 20 20 20 20 20 46 69 6e 65 20 74 75 6e 65 20 64       Fine tune d
7a40: 65 66 6c 61 74 65 27 73 20 69 6e 74 65 72 6e 61  eflate's interna
7a50: 6c 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 70 61  l compression pa
7a60: 72 61 6d 65 74 65 72 73 2e 20 20 54 68 69 73 20  rameters.  This 
7a70: 73 68 6f 75 6c 64 20 6f 6e 6c 79 20 62 65 0a 20  should only be. 
7a80: 20 20 75 73 65 64 20 62 79 20 73 6f 6d 65 6f 6e    used by someon
7a90: 65 20 77 68 6f 20 75 6e 64 65 72 73 74 61 6e 64  e who understand
7aa0: 73 20 74 68 65 20 61 6c 67 6f 72 69 74 68 6d 20  s the algorithm 
7ab0: 75 73 65 64 20 62 79 20 7a 6c 69 62 27 73 20 64  used by zlib's d
7ac0: 65 66 6c 61 74 65 20 66 6f 72 0a 20 20 20 73 65  eflate for.   se
7ad0: 61 72 63 68 69 6e 67 20 66 6f 72 20 74 68 65 20  arching for the 
7ae0: 62 65 73 74 20 6d 61 74 63 68 69 6e 67 20 73 74  best matching st
7af0: 72 69 6e 67 2c 20 61 6e 64 20 65 76 65 6e 20 74  ring, and even t
7b00: 68 65 6e 20 6f 6e 6c 79 20 62 79 20 74 68 65 20  hen only by the 
7b10: 6d 6f 73 74 0a 20 20 20 66 61 6e 61 74 69 63 20  most.   fanatic 
7b20: 6f 70 74 69 6d 69 7a 65 72 20 74 72 79 69 6e 67  optimizer trying
7b30: 20 74 6f 20 73 71 75 65 65 7a 65 20 6f 75 74 20   to squeeze out 
7b40: 74 68 65 20 6c 61 73 74 20 63 6f 6d 70 72 65 73  the last compres
7b50: 73 65 64 20 62 69 74 20 66 6f 72 20 74 68 65 69  sed bit for thei
7b60: 72 0a 20 20 20 73 70 65 63 69 66 69 63 20 69 6e  r.   specific in
7b70: 70 75 74 20 64 61 74 61 2e 20 20 52 65 61 64 20  put data.  Read 
7b80: 74 68 65 20 64 65 66 6c 61 74 65 2e 63 20 73 6f  the deflate.c so
7b90: 75 72 63 65 20 63 6f 64 65 20 66 6f 72 20 74 68  urce code for th
7ba0: 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 74 68 65  e meaning of the
7bb0: 0a 20 20 20 6d 61 78 5f 6c 61 7a 79 2c 20 67 6f  .   max_lazy, go
7bc0: 6f 64 5f 6c 65 6e 67 74 68 2c 20 6e 69 63 65 5f  od_length, nice_
7bd0: 6c 65 6e 67 74 68 2c 20 61 6e 64 20 6d 61 78 5f  length, and max_
7be0: 63 68 61 69 6e 20 70 61 72 61 6d 65 74 65 72 73  chain parameters
7bf0: 2e 0a 0a 20 20 20 20 20 64 65 66 6c 61 74 65 54  ...     deflateT
7c00: 75 6e 65 28 29 20 63 61 6e 20 62 65 20 63 61 6c  une() can be cal
7c10: 6c 65 64 20 61 66 74 65 72 20 64 65 66 6c 61 74  led after deflat
7c20: 65 49 6e 69 74 28 29 20 6f 72 20 64 65 66 6c 61  eInit() or defla
7c30: 74 65 49 6e 69 74 32 28 29 2c 20 61 6e 64 0a 20  teInit2(), and. 
7c40: 20 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20 6f    returns Z_OK o
7c50: 6e 20 73 75 63 63 65 73 73 2c 20 6f 72 20 5a 5f  n success, or Z_
7c60: 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 66 6f 72  STREAM_ERROR for
7c70: 20 61 6e 20 69 6e 76 61 6c 69 64 20 64 65 66 6c   an invalid defl
7c80: 61 74 65 20 73 74 72 65 61 6d 2e 0a 20 2a 2f 0a  ate stream.. */.
7c90: 0a 5a 45 58 54 45 52 4e 20 75 4c 6f 6e 67 20 5a  .ZEXTERN uLong Z
7ca0: 45 58 50 4f 52 54 20 64 65 66 6c 61 74 65 42 6f  EXPORT deflateBo
7cb0: 75 6e 64 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d  und OF((z_stream
7cc0: 70 20 73 74 72 6d 2c 0a 20 20 20 20 20 20 20 20  p strm,.        
7cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75                 u
7cf0: 4c 6f 6e 67 20 73 6f 75 72 63 65 4c 65 6e 29 29  Long sourceLen))
7d00: 3b 0a 2f 2a 0a 20 20 20 20 20 64 65 66 6c 61 74  ;./*.     deflat
7d10: 65 42 6f 75 6e 64 28 29 20 72 65 74 75 72 6e 73  eBound() returns
7d20: 20 61 6e 20 75 70 70 65 72 20 62 6f 75 6e 64 20   an upper bound 
7d30: 6f 6e 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65  on the compresse
7d40: 64 20 73 69 7a 65 20 61 66 74 65 72 0a 20 20 20  d size after.   
7d50: 64 65 66 6c 61 74 69 6f 6e 20 6f 66 20 73 6f 75  deflation of sou
7d60: 72 63 65 4c 65 6e 20 62 79 74 65 73 2e 20 20 49  rceLen bytes.  I
7d70: 74 20 6d 75 73 74 20 62 65 20 63 61 6c 6c 65 64  t must be called
7d80: 20 61 66 74 65 72 20 64 65 66 6c 61 74 65 49 6e   after deflateIn
7d90: 69 74 28 29 0a 20 20 20 6f 72 20 64 65 66 6c 61  it().   or defla
7da0: 74 65 49 6e 69 74 32 28 29 2e 20 20 54 68 69 73  teInit2().  This
7db0: 20 77 6f 75 6c 64 20 62 65 20 75 73 65 64 20 74   would be used t
7dc0: 6f 20 61 6c 6c 6f 63 61 74 65 20 61 6e 20 6f 75  o allocate an ou
7dd0: 74 70 75 74 20 62 75 66 66 65 72 0a 20 20 20 66  tput buffer.   f
7de0: 6f 72 20 64 65 66 6c 61 74 69 6f 6e 20 69 6e 20  or deflation in 
7df0: 61 20 73 69 6e 67 6c 65 20 70 61 73 73 2c 20 61  a single pass, a
7e00: 6e 64 20 73 6f 20 77 6f 75 6c 64 20 62 65 20 63  nd so would be c
7e10: 61 6c 6c 65 64 20 62 65 66 6f 72 65 20 64 65 66  alled before def
7e20: 6c 61 74 65 28 29 2e 0a 2a 2f 0a 0a 5a 45 58 54  late()..*/..ZEXT
7e30: 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20  ERN int ZEXPORT 
7e40: 64 65 66 6c 61 74 65 50 72 69 6d 65 20 4f 46 28  deflatePrime OF(
7e50: 28 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 2c  (z_streamp strm,
7e60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e80: 20 20 20 20 20 20 69 6e 74 20 62 69 74 73 2c 0a        int bits,.
7e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7eb0: 20 20 20 20 20 69 6e 74 20 76 61 6c 75 65 29 29       int value))
7ec0: 3b 0a 2f 2a 0a 20 20 20 20 20 64 65 66 6c 61 74  ;./*.     deflat
7ed0: 65 50 72 69 6d 65 28 29 20 69 6e 73 65 72 74 73  ePrime() inserts
7ee0: 20 62 69 74 73 20 69 6e 20 74 68 65 20 64 65 66   bits in the def
7ef0: 6c 61 74 65 20 6f 75 74 70 75 74 20 73 74 72 65  late output stre
7f00: 61 6d 2e 20 20 54 68 65 20 69 6e 74 65 6e 74 0a  am.  The intent.
7f10: 20 20 69 73 20 74 68 61 74 20 74 68 69 73 20 66    is that this f
7f20: 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20  unction is used 
7f30: 74 6f 20 73 74 61 72 74 20 6f 66 66 20 74 68 65  to start off the
7f40: 20 64 65 66 6c 61 74 65 20 6f 75 74 70 75 74 20   deflate output 
7f50: 77 69 74 68 20 74 68 65 0a 20 20 62 69 74 73 20  with the.  bits 
7f60: 6c 65 66 74 6f 76 65 72 20 66 72 6f 6d 20 61 20  leftover from a 
7f70: 70 72 65 76 69 6f 75 73 20 64 65 66 6c 61 74 65  previous deflate
7f80: 20 73 74 72 65 61 6d 20 77 68 65 6e 20 61 70 70   stream when app
7f90: 65 6e 64 69 6e 67 20 74 6f 20 69 74 2e 20 20 41  ending to it.  A
7fa0: 73 20 73 75 63 68 2c 0a 20 20 74 68 69 73 20 66  s such,.  this f
7fb0: 75 6e 63 74 69 6f 6e 20 63 61 6e 20 6f 6e 6c 79  unction can only
7fc0: 20 62 65 20 75 73 65 64 20 66 6f 72 20 72 61 77   be used for raw
7fd0: 20 64 65 66 6c 61 74 65 2c 20 61 6e 64 20 6d 75   deflate, and mu
7fe0: 73 74 20 62 65 20 75 73 65 64 20 62 65 66 6f 72  st be used befor
7ff0: 65 20 74 68 65 0a 20 20 66 69 72 73 74 20 64 65  e the.  first de
8000: 66 6c 61 74 65 28 29 20 63 61 6c 6c 20 61 66 74  flate() call aft
8010: 65 72 20 61 20 64 65 66 6c 61 74 65 49 6e 69 74  er a deflateInit
8020: 32 28 29 20 6f 72 20 64 65 66 6c 61 74 65 52 65  2() or deflateRe
8030: 73 65 74 28 29 2e 20 20 62 69 74 73 20 6d 75 73  set().  bits mus
8040: 74 20 62 65 0a 20 20 6c 65 73 73 20 74 68 61 6e  t be.  less than
8050: 20 6f 72 20 65 71 75 61 6c 20 74 6f 20 31 36 2c   or equal to 16,
8060: 20 61 6e 64 20 74 68 61 74 20 6d 61 6e 79 20 6f   and that many o
8070: 66 20 74 68 65 20 6c 65 61 73 74 20 73 69 67 6e  f the least sign
8080: 69 66 69 63 61 6e 74 20 62 69 74 73 20 6f 66 0a  ificant bits of.
8090: 20 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20    value will be 
80a0: 69 6e 73 65 72 74 65 64 20 69 6e 20 74 68 65 20  inserted in the 
80b0: 6f 75 74 70 75 74 2e 0a 0a 20 20 20 20 20 20 64  output...      d
80c0: 65 66 6c 61 74 65 50 72 69 6d 65 20 72 65 74 75  eflatePrime retu
80d0: 72 6e 73 20 5a 5f 4f 4b 20 69 66 20 73 75 63 63  rns Z_OK if succ
80e0: 65 73 73 2c 20 6f 72 20 5a 5f 53 54 52 45 41 4d  ess, or Z_STREAM
80f0: 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20 73 6f  _ERROR if the so
8100: 75 72 63 65 0a 20 20 20 73 74 72 65 61 6d 20 73  urce.   stream s
8110: 74 61 74 65 20 77 61 73 20 69 6e 63 6f 6e 73 69  tate was inconsi
8120: 73 74 65 6e 74 2e 0a 2a 2f 0a 0a 5a 45 58 54 45  stent..*/..ZEXTE
8130: 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 64  RN int ZEXPORT d
8140: 65 66 6c 61 74 65 53 65 74 48 65 61 64 65 72 20  eflateSetHeader 
8150: 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70 20 73 74  OF((z_streamp st
8160: 72 6d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  rm,.            
8170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8180: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 7a 5f               gz_
8190: 68 65 61 64 65 72 70 20 68 65 61 64 29 29 3b 0a  headerp head));.
81a0: 2f 2a 0a 20 20 20 20 20 20 64 65 66 6c 61 74 65  /*.      deflate
81b0: 53 65 74 48 65 61 64 65 72 28 29 20 70 72 6f 76  SetHeader() prov
81c0: 69 64 65 73 20 67 7a 69 70 20 68 65 61 64 65 72  ides gzip header
81d0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72   information for
81e0: 20 77 68 65 6e 20 61 20 67 7a 69 70 0a 20 20 20   when a gzip.   
81f0: 73 74 72 65 61 6d 20 69 73 20 72 65 71 75 65 73  stream is reques
8200: 74 65 64 20 62 79 20 64 65 66 6c 61 74 65 49 6e  ted by deflateIn
8210: 69 74 32 28 29 2e 20 20 64 65 66 6c 61 74 65 53  it2().  deflateS
8220: 65 74 48 65 61 64 65 72 28 29 20 6d 61 79 20 62  etHeader() may b
8230: 65 20 63 61 6c 6c 65 64 0a 20 20 20 61 66 74 65  e called.   afte
8240: 72 20 64 65 66 6c 61 74 65 49 6e 69 74 32 28 29  r deflateInit2()
8250: 20 6f 72 20 64 65 66 6c 61 74 65 52 65 73 65 74   or deflateReset
8260: 28 29 20 61 6e 64 20 62 65 66 6f 72 65 20 74 68  () and before th
8270: 65 20 66 69 72 73 74 20 63 61 6c 6c 20 6f 66 0a  e first call of.
8280: 20 20 20 64 65 66 6c 61 74 65 28 29 2e 20 20 54     deflate().  T
8290: 68 65 20 74 65 78 74 2c 20 74 69 6d 65 2c 20 6f  he text, time, o
82a0: 73 2c 20 65 78 74 72 61 20 66 69 65 6c 64 2c 20  s, extra field, 
82b0: 6e 61 6d 65 2c 20 61 6e 64 20 63 6f 6d 6d 65 6e  name, and commen
82c0: 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 20 20  t information.  
82d0: 20 69 6e 20 74 68 65 20 70 72 6f 76 69 64 65 64   in the provided
82e0: 20 67 7a 5f 68 65 61 64 65 72 20 73 74 72 75 63   gz_header struc
82f0: 74 75 72 65 20 61 72 65 20 77 72 69 74 74 65 6e  ture are written
8300: 20 74 6f 20 74 68 65 20 67 7a 69 70 20 68 65 61   to the gzip hea
8310: 64 65 72 20 28 78 66 6c 61 67 20 69 73 0a 20 20  der (xflag is.  
8320: 20 69 67 6e 6f 72 65 64 20 2d 2d 20 74 68 65 20   ignored -- the 
8330: 65 78 74 72 61 20 66 6c 61 67 73 20 61 72 65 20  extra flags are 
8340: 73 65 74 20 61 63 63 6f 72 64 69 6e 67 20 74 6f  set according to
8350: 20 74 68 65 20 63 6f 6d 70 72 65 73 73 69 6f 6e   the compression
8360: 20 6c 65 76 65 6c 29 2e 20 20 54 68 65 0a 20 20   level).  The.  
8370: 20 63 61 6c 6c 65 72 20 6d 75 73 74 20 61 73 73   caller must ass
8380: 75 72 65 20 74 68 61 74 2c 20 69 66 20 6e 6f 74  ure that, if not
8390: 20 5a 5f 4e 55 4c 4c 2c 20 6e 61 6d 65 20 61 6e   Z_NULL, name an
83a0: 64 20 63 6f 6d 6d 65 6e 74 20 61 72 65 20 74 65  d comment are te
83b0: 72 6d 69 6e 61 74 65 64 20 77 69 74 68 0a 20 20  rminated with.  
83c0: 20 61 20 7a 65 72 6f 20 62 79 74 65 2c 20 61 6e   a zero byte, an
83d0: 64 20 74 68 61 74 20 69 66 20 65 78 74 72 61 20  d that if extra 
83e0: 69 73 20 6e 6f 74 20 5a 5f 4e 55 4c 4c 2c 20 74  is not Z_NULL, t
83f0: 68 61 74 20 65 78 74 72 61 5f 6c 65 6e 20 62 79  hat extra_len by
8400: 74 65 73 20 61 72 65 0a 20 20 20 61 76 61 69 6c  tes are.   avail
8410: 61 62 6c 65 20 74 68 65 72 65 2e 20 20 49 66 20  able there.  If 
8420: 68 63 72 63 20 69 73 20 74 72 75 65 2c 20 61 20  hcrc is true, a 
8430: 67 7a 69 70 20 68 65 61 64 65 72 20 63 72 63 20  gzip header crc 
8440: 69 73 20 69 6e 63 6c 75 64 65 64 2e 20 20 4e 6f  is included.  No
8450: 74 65 20 74 68 61 74 0a 20 20 20 74 68 65 20 63  te that.   the c
8460: 75 72 72 65 6e 74 20 76 65 72 73 69 6f 6e 73 20  urrent versions 
8470: 6f 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2d 6c  of the command-l
8480: 69 6e 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 67  ine version of g
8490: 7a 69 70 20 28 75 70 20 74 68 72 6f 75 67 68 20  zip (up through 
84a0: 76 65 72 73 69 6f 6e 0a 20 20 20 31 2e 33 2e 78  version.   1.3.x
84b0: 29 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74  ) do not support
84c0: 20 68 65 61 64 65 72 20 63 72 63 27 73 2c 20 61   header crc's, a
84d0: 6e 64 20 77 69 6c 6c 20 72 65 70 6f 72 74 20 74  nd will report t
84e0: 68 61 74 20 69 74 20 69 73 20 61 20 22 6d 75 6c  hat it is a "mul
84f0: 74 69 2d 70 61 72 74 0a 20 20 20 67 7a 69 70 20  ti-part.   gzip 
8500: 66 69 6c 65 22 20 61 6e 64 20 67 69 76 65 20 75  file" and give u
8510: 70 2e 0a 0a 20 20 20 20 20 20 49 66 20 64 65 66  p...      If def
8520: 6c 61 74 65 53 65 74 48 65 61 64 65 72 20 69 73  lateSetHeader is
8530: 20 6e 6f 74 20 75 73 65 64 2c 20 74 68 65 20 64   not used, the d
8540: 65 66 61 75 6c 74 20 67 7a 69 70 20 68 65 61 64  efault gzip head
8550: 65 72 20 68 61 73 20 74 65 78 74 20 66 61 6c 73  er has text fals
8560: 65 2c 0a 20 20 20 74 68 65 20 74 69 6d 65 20 73  e,.   the time s
8570: 65 74 20 74 6f 20 7a 65 72 6f 2c 20 61 6e 64 20  et to zero, and 
8580: 6f 73 20 73 65 74 20 74 6f 20 32 35 35 2c 20 77  os set to 255, w
8590: 69 74 68 20 6e 6f 20 65 78 74 72 61 2c 20 6e 61  ith no extra, na
85a0: 6d 65 2c 20 6f 72 20 63 6f 6d 6d 65 6e 74 0a 20  me, or comment. 
85b0: 20 20 66 69 65 6c 64 73 2e 20 20 54 68 65 20 67    fields.  The g
85c0: 7a 69 70 20 68 65 61 64 65 72 20 69 73 20 72 65  zip header is re
85d0: 74 75 72 6e 65 64 20 74 6f 20 74 68 65 20 64 65  turned to the de
85e0: 66 61 75 6c 74 20 73 74 61 74 65 20 62 79 20 64  fault state by d
85f0: 65 66 6c 61 74 65 52 65 73 65 74 28 29 2e 0a 0a  eflateReset()...
8600: 20 20 20 20 20 20 64 65 66 6c 61 74 65 53 65 74        deflateSet
8610: 48 65 61 64 65 72 20 72 65 74 75 72 6e 73 20 5a  Header returns Z
8620: 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73 2c 20  _OK if success, 
8630: 6f 72 20 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f  or Z_STREAM_ERRO
8640: 52 20 69 66 20 74 68 65 20 73 6f 75 72 63 65 0a  R if the source.
8650: 20 20 20 73 74 72 65 61 6d 20 73 74 61 74 65 20     stream state 
8660: 77 61 73 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74  was inconsistent
8670: 2e 0a 2a 2f 0a 0a 2f 2a 0a 5a 45 58 54 45 52 4e  ..*/../*.ZEXTERN
8680: 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 69 6e 66   int ZEXPORT inf
8690: 6c 61 74 65 49 6e 69 74 32 20 4f 46 28 28 7a 5f  lateInit2 OF((z_
86a0: 73 74 72 65 61 6d 70 20 73 74 72 6d 2c 0a 20 20  streamp strm,.  
86b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
86c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
86d0: 20 20 20 69 6e 74 20 20 77 69 6e 64 6f 77 42 69     int  windowBi
86e0: 74 73 29 29 3b 0a 0a 20 20 20 20 20 54 68 69 73  ts));..     This
86f0: 20 69 73 20 61 6e 6f 74 68 65 72 20 76 65 72 73   is another vers
8700: 69 6f 6e 20 6f 66 20 69 6e 66 6c 61 74 65 49 6e  ion of inflateIn
8710: 69 74 20 77 69 74 68 20 61 6e 20 65 78 74 72 61  it with an extra
8720: 20 70 61 72 61 6d 65 74 65 72 2e 20 54 68 65 0a   parameter. The.
8730: 20 20 20 66 69 65 6c 64 73 20 6e 65 78 74 5f 69     fields next_i
8740: 6e 2c 20 61 76 61 69 6c 5f 69 6e 2c 20 7a 61 6c  n, avail_in, zal
8750: 6c 6f 63 2c 20 7a 66 72 65 65 20 61 6e 64 20 6f  loc, zfree and o
8760: 70 61 71 75 65 20 6d 75 73 74 20 62 65 20 69 6e  paque must be in
8770: 69 74 69 61 6c 69 7a 65 64 0a 20 20 20 62 65 66  itialized.   bef
8780: 6f 72 65 20 62 79 20 74 68 65 20 63 61 6c 6c 65  ore by the calle
8790: 72 2e 0a 0a 20 20 20 20 20 54 68 65 20 77 69 6e  r...     The win
87a0: 64 6f 77 42 69 74 73 20 70 61 72 61 6d 65 74 65  dowBits paramete
87b0: 72 20 69 73 20 74 68 65 20 62 61 73 65 20 74 77  r is the base tw
87c0: 6f 20 6c 6f 67 61 72 69 74 68 6d 20 6f 66 20 74  o logarithm of t
87d0: 68 65 20 6d 61 78 69 6d 75 6d 20 77 69 6e 64 6f  he maximum windo
87e0: 77 0a 20 20 20 73 69 7a 65 20 28 74 68 65 20 73  w.   size (the s
87f0: 69 7a 65 20 6f 66 20 74 68 65 20 68 69 73 74 6f  ize of the histo
8800: 72 79 20 62 75 66 66 65 72 29 2e 20 20 49 74 20  ry buffer).  It 
8810: 73 68 6f 75 6c 64 20 62 65 20 69 6e 20 74 68 65  should be in the
8820: 20 72 61 6e 67 65 20 38 2e 2e 31 35 20 66 6f 72   range 8..15 for
8830: 0a 20 20 20 74 68 69 73 20 76 65 72 73 69 6f 6e  .   this version
8840: 20 6f 66 20 74 68 65 20 6c 69 62 72 61 72 79 2e   of the library.
8850: 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   The default val
8860: 75 65 20 69 73 20 31 35 20 69 66 20 69 6e 66 6c  ue is 15 if infl
8870: 61 74 65 49 6e 69 74 20 69 73 20 75 73 65 64 0a  ateInit is used.
8880: 20 20 20 69 6e 73 74 65 61 64 2e 20 77 69 6e 64     instead. wind
8890: 6f 77 42 69 74 73 20 6d 75 73 74 20 62 65 20 67  owBits must be g
88a0: 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65  reater than or e
88b0: 71 75 61 6c 20 74 6f 20 74 68 65 20 77 69 6e 64  qual to the wind
88c0: 6f 77 42 69 74 73 20 76 61 6c 75 65 0a 20 20 20  owBits value.   
88d0: 70 72 6f 76 69 64 65 64 20 74 6f 20 64 65 66 6c  provided to defl
88e0: 61 74 65 49 6e 69 74 32 28 29 20 77 68 69 6c 65  ateInit2() while
88f0: 20 63 6f 6d 70 72 65 73 73 69 6e 67 2c 20 6f 72   compressing, or
8900: 20 69 74 20 6d 75 73 74 20 62 65 20 65 71 75 61   it must be equa
8910: 6c 20 74 6f 20 31 35 20 69 66 0a 20 20 20 64 65  l to 15 if.   de
8920: 66 6c 61 74 65 49 6e 69 74 32 28 29 20 77 61 73  flateInit2() was
8930: 20 6e 6f 74 20 75 73 65 64 2e 20 49 66 20 61 20   not used. If a 
8940: 63 6f 6d 70 72 65 73 73 65 64 20 73 74 72 65 61  compressed strea
8950: 6d 20 77 69 74 68 20 61 20 6c 61 72 67 65 72 20  m with a larger 
8960: 77 69 6e 64 6f 77 0a 20 20 20 73 69 7a 65 20 69  window.   size i
8970: 73 20 67 69 76 65 6e 20 61 73 20 69 6e 70 75 74  s given as input
8980: 2c 20 69 6e 66 6c 61 74 65 28 29 20 77 69 6c 6c  , inflate() will
8990: 20 72 65 74 75 72 6e 20 77 69 74 68 20 74 68 65   return with the
89a0: 20 65 72 72 6f 72 20 63 6f 64 65 0a 20 20 20 5a   error code.   Z
89b0: 5f 44 41 54 41 5f 45 52 52 4f 52 20 69 6e 73 74  _DATA_ERROR inst
89c0: 65 61 64 20 6f 66 20 74 72 79 69 6e 67 20 74 6f  ead of trying to
89d0: 20 61 6c 6c 6f 63 61 74 65 20 61 20 6c 61 72 67   allocate a larg
89e0: 65 72 20 77 69 6e 64 6f 77 2e 0a 0a 20 20 20 20  er window...    
89f0: 20 77 69 6e 64 6f 77 42 69 74 73 20 63 61 6e 20   windowBits can 
8a00: 61 6c 73 6f 20 62 65 20 2d 38 2e 2e 2d 31 35 20  also be -8..-15 
8a10: 66 6f 72 20 72 61 77 20 69 6e 66 6c 61 74 65 2e  for raw inflate.
8a20: 20 49 6e 20 74 68 69 73 20 63 61 73 65 2c 20 2d   In this case, -
8a30: 77 69 6e 64 6f 77 42 69 74 73 0a 20 20 20 64 65  windowBits.   de
8a40: 74 65 72 6d 69 6e 65 73 20 74 68 65 20 77 69 6e  termines the win
8a50: 64 6f 77 20 73 69 7a 65 2e 20 69 6e 66 6c 61 74  dow size. inflat
8a60: 65 28 29 20 77 69 6c 6c 20 74 68 65 6e 20 70 72  e() will then pr
8a70: 6f 63 65 73 73 20 72 61 77 20 64 65 66 6c 61 74  ocess raw deflat
8a80: 65 20 64 61 74 61 2c 0a 20 20 20 6e 6f 74 20 6c  e data,.   not l
8a90: 6f 6f 6b 69 6e 67 20 66 6f 72 20 61 20 7a 6c 69  ooking for a zli
8aa0: 62 20 6f 72 20 67 7a 69 70 20 68 65 61 64 65 72  b or gzip header
8ab0: 2c 20 6e 6f 74 20 67 65 6e 65 72 61 74 69 6e 67  , not generating
8ac0: 20 61 20 63 68 65 63 6b 20 76 61 6c 75 65 2c 20   a check value, 
8ad0: 61 6e 64 20 6e 6f 74 0a 20 20 20 6c 6f 6f 6b 69  and not.   looki
8ae0: 6e 67 20 66 6f 72 20 61 6e 79 20 63 68 65 63 6b  ng for any check
8af0: 20 76 61 6c 75 65 73 20 66 6f 72 20 63 6f 6d 70   values for comp
8b00: 61 72 69 73 6f 6e 20 61 74 20 74 68 65 20 65 6e  arison at the en
8b10: 64 20 6f 66 20 74 68 65 20 73 74 72 65 61 6d 2e  d of the stream.
8b20: 20 54 68 69 73 0a 20 20 20 69 73 20 66 6f 72 20   This.   is for 
8b30: 75 73 65 20 77 69 74 68 20 6f 74 68 65 72 20 66  use with other f
8b40: 6f 72 6d 61 74 73 20 74 68 61 74 20 75 73 65 20  ormats that use 
8b50: 74 68 65 20 64 65 66 6c 61 74 65 20 63 6f 6d 70  the deflate comp
8b60: 72 65 73 73 65 64 20 64 61 74 61 20 66 6f 72 6d  ressed data form
8b70: 61 74 0a 20 20 20 73 75 63 68 20 61 73 20 7a 69  at.   such as zi
8b80: 70 2e 20 20 54 68 6f 73 65 20 66 6f 72 6d 61 74  p.  Those format
8b90: 73 20 70 72 6f 76 69 64 65 20 74 68 65 69 72 20  s provide their 
8ba0: 6f 77 6e 20 63 68 65 63 6b 20 76 61 6c 75 65 73  own check values
8bb0: 2e 20 49 66 20 61 20 63 75 73 74 6f 6d 0a 20 20  . If a custom.  
8bc0: 20 66 6f 72 6d 61 74 20 69 73 20 64 65 76 65 6c   format is devel
8bd0: 6f 70 65 64 20 75 73 69 6e 67 20 74 68 65 20 72  oped using the r
8be0: 61 77 20 64 65 66 6c 61 74 65 20 66 6f 72 6d 61  aw deflate forma
8bf0: 74 20 66 6f 72 20 63 6f 6d 70 72 65 73 73 65 64  t for compressed
8c00: 20 64 61 74 61 2c 20 69 74 20 69 73 0a 20 20 20   data, it is.   
8c10: 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68 61 74  recommended that
8c20: 20 61 20 63 68 65 63 6b 20 76 61 6c 75 65 20 73   a check value s
8c30: 75 63 68 20 61 73 20 61 6e 20 61 64 6c 65 72 33  uch as an adler3
8c40: 32 20 6f 72 20 61 20 63 72 63 33 32 20 62 65 20  2 or a crc32 be 
8c50: 61 70 70 6c 69 65 64 20 74 6f 0a 20 20 20 74 68  applied to.   th
8c60: 65 20 75 6e 63 6f 6d 70 72 65 73 73 65 64 20 64  e uncompressed d
8c70: 61 74 61 20 61 73 20 69 73 20 64 6f 6e 65 20 69  ata as is done i
8c80: 6e 20 74 68 65 20 7a 6c 69 62 2c 20 67 7a 69 70  n the zlib, gzip
8c90: 2c 20 61 6e 64 20 7a 69 70 20 66 6f 72 6d 61 74  , and zip format
8ca0: 73 2e 20 20 46 6f 72 0a 20 20 20 6d 6f 73 74 20  s.  For.   most 
8cb0: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 74 68  applications, th
8cc0: 65 20 7a 6c 69 62 20 66 6f 72 6d 61 74 20 73 68  e zlib format sh
8cd0: 6f 75 6c 64 20 62 65 20 75 73 65 64 20 61 73 20  ould be used as 
8ce0: 69 73 2e 20 4e 6f 74 65 20 74 68 61 74 20 63 6f  is. Note that co
8cf0: 6d 6d 65 6e 74 73 0a 20 20 20 61 62 6f 76 65 20  mments.   above 
8d00: 6f 6e 20 74 68 65 20 75 73 65 20 69 6e 20 64 65  on the use in de
8d10: 66 6c 61 74 65 49 6e 69 74 32 28 29 20 61 70 70  flateInit2() app
8d20: 6c 69 65 73 20 74 6f 20 74 68 65 20 6d 61 67 6e  lies to the magn
8d30: 69 74 75 64 65 20 6f 66 20 77 69 6e 64 6f 77 42  itude of windowB
8d40: 69 74 73 2e 0a 0a 20 20 20 20 20 77 69 6e 64 6f  its...     windo
8d50: 77 42 69 74 73 20 63 61 6e 20 61 6c 73 6f 20 62  wBits can also b
8d60: 65 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 31  e greater than 1
8d70: 35 20 66 6f 72 20 6f 70 74 69 6f 6e 61 6c 20 67  5 for optional g
8d80: 7a 69 70 20 64 65 63 6f 64 69 6e 67 2e 20 41 64  zip decoding. Ad
8d90: 64 0a 20 20 20 33 32 20 74 6f 20 77 69 6e 64 6f  d.   32 to windo
8da0: 77 42 69 74 73 20 74 6f 20 65 6e 61 62 6c 65 20  wBits to enable 
8db0: 7a 6c 69 62 20 61 6e 64 20 67 7a 69 70 20 64 65  zlib and gzip de
8dc0: 63 6f 64 69 6e 67 20 77 69 74 68 20 61 75 74 6f  coding with auto
8dd0: 6d 61 74 69 63 20 68 65 61 64 65 72 0a 20 20 20  matic header.   
8de0: 64 65 74 65 63 74 69 6f 6e 2c 20 6f 72 20 61 64  detection, or ad
8df0: 64 20 31 36 20 74 6f 20 64 65 63 6f 64 65 20 6f  d 16 to decode o
8e00: 6e 6c 79 20 74 68 65 20 67 7a 69 70 20 66 6f 72  nly the gzip for
8e10: 6d 61 74 20 28 74 68 65 20 7a 6c 69 62 20 66 6f  mat (the zlib fo
8e20: 72 6d 61 74 20 77 69 6c 6c 0a 20 20 20 72 65 74  rmat will.   ret
8e30: 75 72 6e 20 61 20 5a 5f 44 41 54 41 5f 45 52 52  urn a Z_DATA_ERR
8e40: 4f 52 29 2e 20 20 49 66 20 61 20 67 7a 69 70 20  OR).  If a gzip 
8e50: 73 74 72 65 61 6d 20 69 73 20 62 65 69 6e 67 20  stream is being 
8e60: 64 65 63 6f 64 65 64 2c 20 73 74 72 6d 2d 3e 61  decoded, strm->a
8e70: 64 6c 65 72 20 69 73 0a 20 20 20 61 20 63 72 63  dler is.   a crc
8e80: 33 32 20 69 6e 73 74 65 61 64 20 6f 66 20 61 6e  32 instead of an
8e90: 20 61 64 6c 65 72 33 32 2e 0a 0a 20 20 20 20 20   adler32...     
8ea0: 69 6e 66 6c 61 74 65 49 6e 69 74 32 20 72 65 74  inflateInit2 ret
8eb0: 75 72 6e 73 20 5a 5f 4f 4b 20 69 66 20 73 75 63  urns Z_OK if suc
8ec0: 63 65 73 73 2c 20 5a 5f 4d 45 4d 5f 45 52 52 4f  cess, Z_MEM_ERRO
8ed0: 52 20 69 66 20 74 68 65 72 65 20 77 61 73 20 6e  R if there was n
8ee0: 6f 74 20 65 6e 6f 75 67 68 0a 20 20 20 6d 65 6d  ot enough.   mem
8ef0: 6f 72 79 2c 20 5a 5f 53 54 52 45 41 4d 5f 45 52  ory, Z_STREAM_ER
8f00: 52 4f 52 20 69 66 20 61 20 70 61 72 61 6d 65 74  ROR if a paramet
8f10: 65 72 20 69 73 20 69 6e 76 61 6c 69 64 20 28 73  er is invalid (s
8f20: 75 63 68 20 61 73 20 61 20 6e 75 6c 6c 20 73 74  uch as a null st
8f30: 72 6d 29 2e 20 6d 73 67 0a 20 20 20 69 73 20 73  rm). msg.   is s
8f40: 65 74 20 74 6f 20 6e 75 6c 6c 20 69 66 20 74 68  et to null if th
8f50: 65 72 65 20 69 73 20 6e 6f 20 65 72 72 6f 72 20  ere is no error 
8f60: 6d 65 73 73 61 67 65 2e 20 20 69 6e 66 6c 61 74  message.  inflat
8f70: 65 49 6e 69 74 32 20 64 6f 65 73 20 6e 6f 74 20  eInit2 does not 
8f80: 70 65 72 66 6f 72 6d 0a 20 20 20 61 6e 79 20 64  perform.   any d
8f90: 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 61 70 61  ecompression apa
8fa0: 72 74 20 66 72 6f 6d 20 72 65 61 64 69 6e 67 20  rt from reading 
8fb0: 74 68 65 20 7a 6c 69 62 20 68 65 61 64 65 72 20  the zlib header 
8fc0: 69 66 20 70 72 65 73 65 6e 74 3a 20 74 68 69 73  if present: this
8fd0: 20 77 69 6c 6c 0a 20 20 20 62 65 20 64 6f 6e 65   will.   be done
8fe0: 20 62 79 20 69 6e 66 6c 61 74 65 28 29 2e 20 28   by inflate(). (
8ff0: 53 6f 20 6e 65 78 74 5f 69 6e 20 61 6e 64 20 61  So next_in and a
9000: 76 61 69 6c 5f 69 6e 20 6d 61 79 20 62 65 20 6d  vail_in may be m
9010: 6f 64 69 66 69 65 64 2c 20 62 75 74 20 6e 65 78  odified, but nex
9020: 74 5f 6f 75 74 0a 20 20 20 61 6e 64 20 61 76 61  t_out.   and ava
9030: 69 6c 5f 6f 75 74 20 61 72 65 20 75 6e 63 68 61  il_out are uncha
9040: 6e 67 65 64 2e 29 0a 2a 2f 0a 0a 5a 45 58 54 45  nged.).*/..ZEXTE
9050: 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 69  RN int ZEXPORT i
9060: 6e 66 6c 61 74 65 53 65 74 44 69 63 74 69 6f 6e  nflateSetDiction
9070: 61 72 79 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d  ary OF((z_stream
9080: 70 20 73 74 72 6d 2c 0a 20 20 20 20 20 20 20 20  p strm,.        
9090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90b0: 20 20 20 20 20 63 6f 6e 73 74 20 42 79 74 65 66       const Bytef
90c0: 20 2a 64 69 63 74 69 6f 6e 61 72 79 2c 0a 20 20   *dictionary,.  
90d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90f0: 20 20 20 20 20 20 20 20 20 20 20 75 49 6e 74 20             uInt 
9100: 20 64 69 63 74 4c 65 6e 67 74 68 29 29 3b 0a 2f   dictLength));./
9110: 2a 0a 20 20 20 20 20 49 6e 69 74 69 61 6c 69 7a  *.     Initializ
9120: 65 73 20 74 68 65 20 64 65 63 6f 6d 70 72 65 73  es the decompres
9130: 73 69 6f 6e 20 64 69 63 74 69 6f 6e 61 72 79 20  sion dictionary 
9140: 66 72 6f 6d 20 74 68 65 20 67 69 76 65 6e 20 75  from the given u
9150: 6e 63 6f 6d 70 72 65 73 73 65 64 20 62 79 74 65  ncompressed byte
9160: 0a 20 20 20 73 65 71 75 65 6e 63 65 2e 20 54 68  .   sequence. Th
9170: 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 75 73 74  is function must
9180: 20 62 65 20 63 61 6c 6c 65 64 20 69 6d 6d 65 64   be called immed
9190: 69 61 74 65 6c 79 20 61 66 74 65 72 20 61 20 63  iately after a c
91a0: 61 6c 6c 20 6f 66 20 69 6e 66 6c 61 74 65 2c 0a  all of inflate,.
91b0: 20 20 20 69 66 20 74 68 61 74 20 63 61 6c 6c 20     if that call 
91c0: 72 65 74 75 72 6e 65 64 20 5a 5f 4e 45 45 44 5f  returned Z_NEED_
91d0: 44 49 43 54 2e 20 54 68 65 20 64 69 63 74 69 6f  DICT. The dictio
91e0: 6e 61 72 79 20 63 68 6f 73 65 6e 20 62 79 20 74  nary chosen by t
91f0: 68 65 20 63 6f 6d 70 72 65 73 73 6f 72 0a 20 20  he compressor.  
9200: 20 63 61 6e 20 62 65 20 64 65 74 65 72 6d 69 6e   can be determin
9210: 65 64 20 66 72 6f 6d 20 74 68 65 20 61 64 6c 65  ed from the adle
9220: 72 33 32 20 76 61 6c 75 65 20 72 65 74 75 72 6e  r32 value return
9230: 65 64 20 62 79 20 74 68 61 74 20 63 61 6c 6c 20  ed by that call 
9240: 6f 66 20 69 6e 66 6c 61 74 65 2e 0a 20 20 20 54  of inflate..   T
9250: 68 65 20 63 6f 6d 70 72 65 73 73 6f 72 20 61 6e  he compressor an
9260: 64 20 64 65 63 6f 6d 70 72 65 73 73 6f 72 20 6d  d decompressor m
9270: 75 73 74 20 75 73 65 20 65 78 61 63 74 6c 79 20  ust use exactly 
9280: 74 68 65 20 73 61 6d 65 20 64 69 63 74 69 6f 6e  the same diction
9290: 61 72 79 20 28 73 65 65 0a 20 20 20 64 65 66 6c  ary (see.   defl
92a0: 61 74 65 53 65 74 44 69 63 74 69 6f 6e 61 72 79  ateSetDictionary
92b0: 29 2e 20 20 46 6f 72 20 72 61 77 20 69 6e 66 6c  ).  For raw infl
92c0: 61 74 65 2c 20 74 68 69 73 20 66 75 6e 63 74 69  ate, this functi
92d0: 6f 6e 20 63 61 6e 20 62 65 20 63 61 6c 6c 65 64  on can be called
92e0: 0a 20 20 20 69 6d 6d 65 64 69 61 74 65 6c 79 20  .   immediately 
92f0: 61 66 74 65 72 20 69 6e 66 6c 61 74 65 49 6e 69  after inflateIni
9300: 74 32 28 29 20 6f 72 20 69 6e 66 6c 61 74 65 52  t2() or inflateR
9310: 65 73 65 74 28 29 20 61 6e 64 20 62 65 66 6f 72  eset() and befor
9320: 65 20 61 6e 79 20 63 61 6c 6c 20 6f 66 0a 20 20  e any call of.  
9330: 20 69 6e 66 6c 61 74 65 28 29 20 74 6f 20 73 65   inflate() to se
9340: 74 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79  t the dictionary
9350: 2e 20 20 54 68 65 20 61 70 70 6c 69 63 61 74 69  .  The applicati
9360: 6f 6e 20 6d 75 73 74 20 69 6e 73 75 72 65 20 74  on must insure t
9370: 68 61 74 20 74 68 65 0a 20 20 20 64 69 63 74 69  hat the.   dicti
9380: 6f 6e 61 72 79 20 74 68 61 74 20 77 61 73 20 75  onary that was u
9390: 73 65 64 20 66 6f 72 20 63 6f 6d 70 72 65 73 73  sed for compress
93a0: 69 6f 6e 20 69 73 20 70 72 6f 76 69 64 65 64 2e  ion is provided.
93b0: 0a 0a 20 20 20 20 20 69 6e 66 6c 61 74 65 53 65  ..     inflateSe
93c0: 74 44 69 63 74 69 6f 6e 61 72 79 20 72 65 74 75  tDictionary retu
93d0: 72 6e 73 20 5a 5f 4f 4b 20 69 66 20 73 75 63 63  rns Z_OK if succ
93e0: 65 73 73 2c 20 5a 5f 53 54 52 45 41 4d 5f 45 52  ess, Z_STREAM_ER
93f0: 52 4f 52 20 69 66 20 61 0a 20 20 20 70 61 72 61  ROR if a.   para
9400: 6d 65 74 65 72 20 69 73 20 69 6e 76 61 6c 69 64  meter is invalid
9410: 20 28 73 75 63 68 20 61 73 20 4e 55 4c 4c 20 64   (such as NULL d
9420: 69 63 74 69 6f 6e 61 72 79 29 20 6f 72 20 74 68  ictionary) or th
9430: 65 20 73 74 72 65 61 6d 20 73 74 61 74 65 20 69  e stream state i
9440: 73 0a 20 20 20 69 6e 63 6f 6e 73 69 73 74 65 6e  s.   inconsisten
9450: 74 2c 20 5a 5f 44 41 54 41 5f 45 52 52 4f 52 20  t, Z_DATA_ERROR 
9460: 69 66 20 74 68 65 20 67 69 76 65 6e 20 64 69 63  if the given dic
9470: 74 69 6f 6e 61 72 79 20 64 6f 65 73 6e 27 74 20  tionary doesn't 
9480: 6d 61 74 63 68 20 74 68 65 0a 20 20 20 65 78 70  match the.   exp
9490: 65 63 74 65 64 20 6f 6e 65 20 28 69 6e 63 6f 72  ected one (incor
94a0: 72 65 63 74 20 61 64 6c 65 72 33 32 20 76 61 6c  rect adler32 val
94b0: 75 65 29 2e 20 69 6e 66 6c 61 74 65 53 65 74 44  ue). inflateSetD
94c0: 69 63 74 69 6f 6e 61 72 79 20 64 6f 65 73 20 6e  ictionary does n
94d0: 6f 74 0a 20 20 20 70 65 72 66 6f 72 6d 20 61 6e  ot.   perform an
94e0: 79 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 3a  y decompression:
94f0: 20 74 68 69 73 20 77 69 6c 6c 20 62 65 20 64 6f   this will be do
9500: 6e 65 20 62 79 20 73 75 62 73 65 71 75 65 6e 74  ne by subsequent
9510: 20 63 61 6c 6c 73 20 6f 66 0a 20 20 20 69 6e 66   calls of.   inf
9520: 6c 61 74 65 28 29 2e 0a 2a 2f 0a 0a 5a 45 58 54  late()..*/..ZEXT
9530: 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20  ERN int ZEXPORT 
9540: 69 6e 66 6c 61 74 65 53 79 6e 63 20 4f 46 28 28  inflateSync OF((
9550: 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 29 29  z_streamp strm))
9560: 3b 0a 2f 2a 0a 20 20 20 20 53 6b 69 70 73 20 69  ;./*.    Skips i
9570: 6e 76 61 6c 69 64 20 63 6f 6d 70 72 65 73 73 65  nvalid compresse
9580: 64 20 64 61 74 61 20 75 6e 74 69 6c 20 61 20 66  d data until a f
9590: 75 6c 6c 20 66 6c 75 73 68 20 70 6f 69 6e 74 20  ull flush point 
95a0: 28 73 65 65 20 61 62 6f 76 65 20 74 68 65 0a 20  (see above the. 
95b0: 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20   description of 
95c0: 64 65 66 6c 61 74 65 20 77 69 74 68 20 5a 5f 46  deflate with Z_F
95d0: 55 4c 4c 5f 46 4c 55 53 48 29 20 63 61 6e 20 62  ULL_FLUSH) can b
95e0: 65 20 66 6f 75 6e 64 2c 20 6f 72 20 75 6e 74 69  e found, or unti
95f0: 6c 20 61 6c 6c 0a 20 20 61 76 61 69 6c 61 62 6c  l all.  availabl
9600: 65 20 69 6e 70 75 74 20 69 73 20 73 6b 69 70 70  e input is skipp
9610: 65 64 2e 20 4e 6f 20 6f 75 74 70 75 74 20 69 73  ed. No output is
9620: 20 70 72 6f 76 69 64 65 64 2e 0a 0a 20 20 20 20   provided...    
9630: 69 6e 66 6c 61 74 65 53 79 6e 63 20 72 65 74 75  inflateSync retu
9640: 72 6e 73 20 5a 5f 4f 4b 20 69 66 20 61 20 66 75  rns Z_OK if a fu
9650: 6c 6c 20 66 6c 75 73 68 20 70 6f 69 6e 74 20 68  ll flush point h
9660: 61 73 20 62 65 65 6e 20 66 6f 75 6e 64 2c 20 5a  as been found, Z
9670: 5f 42 55 46 5f 45 52 52 4f 52 0a 20 20 69 66 20  _BUF_ERROR.  if 
9680: 6e 6f 20 6d 6f 72 65 20 69 6e 70 75 74 20 77 61  no more input wa
9690: 73 20 70 72 6f 76 69 64 65 64 2c 20 5a 5f 44 41  s provided, Z_DA
96a0: 54 41 5f 45 52 52 4f 52 20 69 66 20 6e 6f 20 66  TA_ERROR if no f
96b0: 6c 75 73 68 20 70 6f 69 6e 74 20 68 61 73 20 62  lush point has b
96c0: 65 65 6e 20 66 6f 75 6e 64 2c 0a 20 20 6f 72 20  een found,.  or 
96d0: 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 69  Z_STREAM_ERROR i
96e0: 66 20 74 68 65 20 73 74 72 65 61 6d 20 73 74 72  f the stream str
96f0: 75 63 74 75 72 65 20 77 61 73 20 69 6e 63 6f 6e  ucture was incon
9700: 73 69 73 74 65 6e 74 2e 20 49 6e 20 74 68 65 20  sistent. In the 
9710: 73 75 63 63 65 73 73 0a 20 20 63 61 73 65 2c 20  success.  case, 
9720: 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
9730: 6d 61 79 20 73 61 76 65 20 74 68 65 20 63 75 72  may save the cur
9740: 72 65 6e 74 20 63 75 72 72 65 6e 74 20 76 61 6c  rent current val
9750: 75 65 20 6f 66 20 74 6f 74 61 6c 5f 69 6e 20 77  ue of total_in w
9760: 68 69 63 68 0a 20 20 69 6e 64 69 63 61 74 65 73  hich.  indicates
9770: 20 77 68 65 72 65 20 76 61 6c 69 64 20 63 6f 6d   where valid com
9780: 70 72 65 73 73 65 64 20 64 61 74 61 20 77 61 73  pressed data was
9790: 20 66 6f 75 6e 64 2e 20 49 6e 20 74 68 65 20 65   found. In the e
97a0: 72 72 6f 72 20 63 61 73 65 2c 20 74 68 65 0a 20  rror case, the. 
97b0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79   application may
97c0: 20 72 65 70 65 61 74 65 64 6c 79 20 63 61 6c 6c   repeatedly call
97d0: 20 69 6e 66 6c 61 74 65 53 79 6e 63 2c 20 70 72   inflateSync, pr
97e0: 6f 76 69 64 69 6e 67 20 6d 6f 72 65 20 69 6e 70  oviding more inp
97f0: 75 74 20 65 61 63 68 20 74 69 6d 65 2c 0a 20 20  ut each time,.  
9800: 75 6e 74 69 6c 20 73 75 63 63 65 73 73 20 6f 72  until success or
9810: 20 65 6e 64 20 6f 66 20 74 68 65 20 69 6e 70 75   end of the inpu
9820: 74 20 64 61 74 61 2e 0a 2a 2f 0a 0a 5a 45 58 54  t data..*/..ZEXT
9830: 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20  ERN int ZEXPORT 
9840: 69 6e 66 6c 61 74 65 43 6f 70 79 20 4f 46 28 28  inflateCopy OF((
9850: 7a 5f 73 74 72 65 61 6d 70 20 64 65 73 74 2c 0a  z_streamp dest,.
9860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9880: 20 20 20 20 7a 5f 73 74 72 65 61 6d 70 20 73 6f      z_streamp so
9890: 75 72 63 65 29 29 3b 0a 2f 2a 0a 20 20 20 20 20  urce));./*.     
98a0: 53 65 74 73 20 74 68 65 20 64 65 73 74 69 6e 61  Sets the destina
98b0: 74 69 6f 6e 20 73 74 72 65 61 6d 20 61 73 20 61  tion stream as a
98c0: 20 63 6f 6d 70 6c 65 74 65 20 63 6f 70 79 20 6f   complete copy o
98d0: 66 20 74 68 65 20 73 6f 75 72 63 65 20 73 74 72  f the source str
98e0: 65 61 6d 2e 0a 0a 20 20 20 20 20 54 68 69 73 20  eam...     This 
98f0: 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20  function can be 
9900: 75 73 65 66 75 6c 20 77 68 65 6e 20 72 61 6e 64  useful when rand
9910: 6f 6d 6c 79 20 61 63 63 65 73 73 69 6e 67 20 61  omly accessing a
9920: 20 6c 61 72 67 65 20 73 74 72 65 61 6d 2e 20 20   large stream.  
9930: 54 68 65 0a 20 20 20 66 69 72 73 74 20 70 61 73  The.   first pas
9940: 73 20 74 68 72 6f 75 67 68 20 74 68 65 20 73 74  s through the st
9950: 72 65 61 6d 20 63 61 6e 20 70 65 72 69 6f 64 69  ream can periodi
9960: 63 61 6c 6c 79 20 72 65 63 6f 72 64 20 74 68 65  cally record the
9970: 20 69 6e 66 6c 61 74 65 20 73 74 61 74 65 2c 0a   inflate state,.
9980: 20 20 20 61 6c 6c 6f 77 69 6e 67 20 72 65 73 74     allowing rest
9990: 61 72 74 69 6e 67 20 69 6e 66 6c 61 74 65 20 61  arting inflate a
99a0: 74 20 74 68 6f 73 65 20 70 6f 69 6e 74 73 20 77  t those points w
99b0: 68 65 6e 20 72 61 6e 64 6f 6d 6c 79 20 61 63 63  hen randomly acc
99c0: 65 73 73 69 6e 67 20 74 68 65 0a 20 20 20 73 74  essing the.   st
99d0: 72 65 61 6d 2e 0a 0a 20 20 20 20 20 69 6e 66 6c  ream...     infl
99e0: 61 74 65 43 6f 70 79 20 72 65 74 75 72 6e 73 20  ateCopy returns 
99f0: 5a 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73 2c  Z_OK if success,
9a00: 20 5a 5f 4d 45 4d 5f 45 52 52 4f 52 20 69 66 20   Z_MEM_ERROR if 
9a10: 74 68 65 72 65 20 77 61 73 20 6e 6f 74 0a 20 20  there was not.  
9a20: 20 65 6e 6f 75 67 68 20 6d 65 6d 6f 72 79 2c 20   enough memory, 
9a30: 5a 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 69  Z_STREAM_ERROR i
9a40: 66 20 74 68 65 20 73 6f 75 72 63 65 20 73 74 72  f the source str
9a50: 65 61 6d 20 73 74 61 74 65 20 77 61 73 20 69 6e  eam state was in
9a60: 63 6f 6e 73 69 73 74 65 6e 74 0a 20 20 20 28 73  consistent.   (s
9a70: 75 63 68 20 61 73 20 7a 61 6c 6c 6f 63 20 62 65  uch as zalloc be
9a80: 69 6e 67 20 4e 55 4c 4c 29 2e 20 6d 73 67 20 69  ing NULL). msg i
9a90: 73 20 6c 65 66 74 20 75 6e 63 68 61 6e 67 65 64  s left unchanged
9aa0: 20 69 6e 20 62 6f 74 68 20 73 6f 75 72 63 65 20   in both source 
9ab0: 61 6e 64 0a 20 20 20 64 65 73 74 69 6e 61 74 69  and.   destinati
9ac0: 6f 6e 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20  on..*/..ZEXTERN 
9ad0: 69 6e 74 20 5a 45 58 50 4f 52 54 20 69 6e 66 6c  int ZEXPORT infl
9ae0: 61 74 65 52 65 73 65 74 20 4f 46 28 28 7a 5f 73  ateReset OF((z_s
9af0: 74 72 65 61 6d 70 20 73 74 72 6d 29 29 3b 0a 2f  treamp strm));./
9b00: 2a 0a 20 20 20 20 20 54 68 69 73 20 66 75 6e 63  *.     This func
9b10: 74 69 6f 6e 20 69 73 20 65 71 75 69 76 61 6c 65  tion is equivale
9b20: 6e 74 20 74 6f 20 69 6e 66 6c 61 74 65 45 6e 64  nt to inflateEnd
9b30: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 69 6e 66   followed by inf
9b40: 6c 61 74 65 49 6e 69 74 2c 0a 20 20 20 62 75 74  lateInit,.   but
9b50: 20 64 6f 65 73 20 6e 6f 74 20 66 72 65 65 20 61   does not free a
9b60: 6e 64 20 72 65 61 6c 6c 6f 63 61 74 65 20 61 6c  nd reallocate al
9b70: 6c 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 64  l the internal d
9b80: 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 73 74 61  ecompression sta
9b90: 74 65 2e 0a 20 20 20 54 68 65 20 73 74 72 65 61  te..   The strea
9ba0: 6d 20 77 69 6c 6c 20 6b 65 65 70 20 61 74 74 72  m will keep attr
9bb0: 69 62 75 74 65 73 20 74 68 61 74 20 6d 61 79 20  ibutes that may 
9bc0: 68 61 76 65 20 62 65 65 6e 20 73 65 74 20 62 79  have been set by
9bd0: 20 69 6e 66 6c 61 74 65 49 6e 69 74 32 2e 0a 0a   inflateInit2...
9be0: 20 20 20 20 20 20 69 6e 66 6c 61 74 65 52 65 73        inflateRes
9bf0: 65 74 20 72 65 74 75 72 6e 73 20 5a 5f 4f 4b 20  et returns Z_OK 
9c00: 69 66 20 73 75 63 63 65 73 73 2c 20 6f 72 20 5a  if success, or Z
9c10: 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 69 66  _STREAM_ERROR if
9c20: 20 74 68 65 20 73 6f 75 72 63 65 0a 20 20 20 73   the source.   s
9c30: 74 72 65 61 6d 20 73 74 61 74 65 20 77 61 73 20  tream state was 
9c40: 69 6e 63 6f 6e 73 69 73 74 65 6e 74 20 28 73 75  inconsistent (su
9c50: 63 68 20 61 73 20 7a 61 6c 6c 6f 63 20 6f 72 20  ch as zalloc or 
9c60: 73 74 61 74 65 20 62 65 69 6e 67 20 4e 55 4c 4c  state being NULL
9c70: 29 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 69  )..*/..ZEXTERN i
9c80: 6e 74 20 5a 45 58 50 4f 52 54 20 69 6e 66 6c 61  nt ZEXPORT infla
9c90: 74 65 50 72 69 6d 65 20 4f 46 28 28 7a 5f 73 74  tePrime OF((z_st
9ca0: 72 65 61 6d 70 20 73 74 72 6d 2c 0a 20 20 20 20  reamp strm,.    
9cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9cd0: 20 69 6e 74 20 62 69 74 73 2c 0a 20 20 20 20 20   int bits,.     
9ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d00: 69 6e 74 20 76 61 6c 75 65 29 29 3b 0a 2f 2a 0a  int value));./*.
9d10: 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69       This functi
9d20: 6f 6e 20 69 6e 73 65 72 74 73 20 62 69 74 73 20  on inserts bits 
9d30: 69 6e 20 74 68 65 20 69 6e 66 6c 61 74 65 20 69  in the inflate i
9d40: 6e 70 75 74 20 73 74 72 65 61 6d 2e 20 20 54 68  nput stream.  Th
9d50: 65 20 69 6e 74 65 6e 74 20 69 73 0a 20 20 74 68  e intent is.  th
9d60: 61 74 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  at this function
9d70: 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 61 72   is used to star
9d80: 74 20 69 6e 66 6c 61 74 69 6e 67 20 61 74 20 61  t inflating at a
9d90: 20 62 69 74 20 70 6f 73 69 74 69 6f 6e 20 69 6e   bit position in
9da0: 20 74 68 65 0a 20 20 6d 69 64 64 6c 65 20 6f 66   the.  middle of
9db0: 20 61 20 62 79 74 65 2e 20 20 54 68 65 20 70 72   a byte.  The pr
9dc0: 6f 76 69 64 65 64 20 62 69 74 73 20 77 69 6c 6c  ovided bits will
9dd0: 20 62 65 20 75 73 65 64 20 62 65 66 6f 72 65 20   be used before 
9de0: 61 6e 79 20 62 79 74 65 73 20 61 72 65 20 75 73  any bytes are us
9df0: 65 64 0a 20 20 66 72 6f 6d 20 6e 65 78 74 5f 69  ed.  from next_i
9e00: 6e 2e 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f  n.  This functio
9e10: 6e 20 73 68 6f 75 6c 64 20 6f 6e 6c 79 20 62 65  n should only be
9e20: 20 75 73 65 64 20 77 69 74 68 20 72 61 77 20 69   used with raw i
9e30: 6e 66 6c 61 74 65 2c 20 61 6e 64 0a 20 20 73 68  nflate, and.  sh
9e40: 6f 75 6c 64 20 62 65 20 75 73 65 64 20 62 65 66  ould be used bef
9e50: 6f 72 65 20 74 68 65 20 66 69 72 73 74 20 69 6e  ore the first in
9e60: 66 6c 61 74 65 28 29 20 63 61 6c 6c 20 61 66 74  flate() call aft
9e70: 65 72 20 69 6e 66 6c 61 74 65 49 6e 69 74 32 28  er inflateInit2(
9e80: 29 20 6f 72 0a 20 20 69 6e 66 6c 61 74 65 52 65  ) or.  inflateRe
9e90: 73 65 74 28 29 2e 20 20 62 69 74 73 20 6d 75 73  set().  bits mus
9ea0: 74 20 62 65 20 6c 65 73 73 20 74 68 61 6e 20 6f  t be less than o
9eb0: 72 20 65 71 75 61 6c 20 74 6f 20 31 36 2c 20 61  r equal to 16, a
9ec0: 6e 64 20 74 68 61 74 20 6d 61 6e 79 20 6f 66 20  nd that many of 
9ed0: 74 68 65 0a 20 20 6c 65 61 73 74 20 73 69 67 6e  the.  least sign
9ee0: 69 66 69 63 61 6e 74 20 62 69 74 73 20 6f 66 20  ificant bits of 
9ef0: 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 69 6e  value will be in
9f00: 73 65 72 74 65 64 20 69 6e 20 74 68 65 20 69 6e  serted in the in
9f10: 70 75 74 2e 0a 0a 20 20 20 20 20 20 69 6e 66 6c  put...      infl
9f20: 61 74 65 50 72 69 6d 65 20 72 65 74 75 72 6e 73  atePrime returns
9f30: 20 5a 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73   Z_OK if success
9f40: 2c 20 6f 72 20 5a 5f 53 54 52 45 41 4d 5f 45 52  , or Z_STREAM_ER
9f50: 52 4f 52 20 69 66 20 74 68 65 20 73 6f 75 72 63  ROR if the sourc
9f60: 65 0a 20 20 20 73 74 72 65 61 6d 20 73 74 61 74  e.   stream stat
9f70: 65 20 77 61 73 20 69 6e 63 6f 6e 73 69 73 74 65  e was inconsiste
9f80: 6e 74 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20  nt..*/..ZEXTERN 
9f90: 69 6e 74 20 5a 45 58 50 4f 52 54 20 69 6e 66 6c  int ZEXPORT infl
9fa0: 61 74 65 47 65 74 48 65 61 64 65 72 20 4f 46 28  ateGetHeader OF(
9fb0: 28 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 2c  (z_streamp strm,
9fc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9fe0: 20 20 20 20 20 20 20 20 20 20 67 7a 5f 68 65 61            gz_hea
9ff0: 64 65 72 70 20 68 65 61 64 29 29 3b 0a 2f 2a 0a  derp head));./*.
a000: 20 20 20 20 20 20 69 6e 66 6c 61 74 65 47 65 74        inflateGet
a010: 48 65 61 64 65 72 28 29 20 72 65 71 75 65 73 74  Header() request
a020: 73 20 74 68 61 74 20 67 7a 69 70 20 68 65 61 64  s that gzip head
a030: 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 62  er information b
a040: 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 0a  e stored in the.
a050: 20 20 20 70 72 6f 76 69 64 65 64 20 67 7a 5f 68     provided gz_h
a060: 65 61 64 65 72 20 73 74 72 75 63 74 75 72 65 2e  eader structure.
a070: 20 20 69 6e 66 6c 61 74 65 47 65 74 48 65 61 64    inflateGetHead
a080: 65 72 28 29 20 6d 61 79 20 62 65 20 63 61 6c 6c  er() may be call
a090: 65 64 20 61 66 74 65 72 0a 20 20 20 69 6e 66 6c  ed after.   infl
a0a0: 61 74 65 49 6e 69 74 32 28 29 20 6f 72 20 69 6e  ateInit2() or in
a0b0: 66 6c 61 74 65 52 65 73 65 74 28 29 2c 20 61 6e  flateReset(), an
a0c0: 64 20 62 65 66 6f 72 65 20 74 68 65 20 66 69 72  d before the fir
a0d0: 73 74 20 63 61 6c 6c 20 6f 66 20 69 6e 66 6c 61  st call of infla
a0e0: 74 65 28 29 2e 0a 20 20 20 41 73 20 69 6e 66 6c  te()..   As infl
a0f0: 61 74 65 28 29 20 70 72 6f 63 65 73 73 65 73 20  ate() processes 
a100: 74 68 65 20 67 7a 69 70 20 73 74 72 65 61 6d 2c  the gzip stream,
a110: 20 68 65 61 64 2d 3e 64 6f 6e 65 20 69 73 20 7a   head->done is z
a120: 65 72 6f 20 75 6e 74 69 6c 20 74 68 65 20 68 65  ero until the he
a130: 61 64 65 72 0a 20 20 20 69 73 20 63 6f 6d 70 6c  ader.   is compl
a140: 65 74 65 64 2c 20 61 74 20 77 68 69 63 68 20 74  eted, at which t
a150: 69 6d 65 20 68 65 61 64 2d 3e 64 6f 6e 65 20 69  ime head->done i
a160: 73 20 73 65 74 20 74 6f 20 6f 6e 65 2e 20 20 49  s set to one.  I
a170: 66 20 61 20 7a 6c 69 62 20 73 74 72 65 61 6d 20  f a zlib stream 
a180: 69 73 0a 20 20 20 62 65 69 6e 67 20 64 65 63 6f  is.   being deco
a190: 64 65 64 2c 20 74 68 65 6e 20 68 65 61 64 2d 3e  ded, then head->
a1a0: 64 6f 6e 65 20 69 73 20 73 65 74 20 74 6f 20 2d  done is set to -
a1b0: 31 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68  1 to indicate th
a1c0: 61 74 20 74 68 65 72 65 20 77 69 6c 6c 20 62 65  at there will be
a1d0: 0a 20 20 20 6e 6f 20 67 7a 69 70 20 68 65 61 64  .   no gzip head
a1e0: 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66  er information f
a1f0: 6f 72 74 68 63 6f 6d 69 6e 67 2e 20 20 4e 6f 74  orthcoming.  Not
a200: 65 20 74 68 61 74 20 5a 5f 42 4c 4f 43 4b 20 63  e that Z_BLOCK c
a210: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 0a 20 20  an be used to.  
a220: 20 66 6f 72 63 65 20 69 6e 66 6c 61 74 65 28 29   force inflate()
a230: 20 74 6f 20 72 65 74 75 72 6e 20 69 6d 6d 65 64   to return immed
a240: 69 61 74 65 6c 79 20 61 66 74 65 72 20 68 65 61  iately after hea
a250: 64 65 72 20 70 72 6f 63 65 73 73 69 6e 67 20 69  der processing i
a260: 73 20 63 6f 6d 70 6c 65 74 65 0a 20 20 20 61 6e  s complete.   an
a270: 64 20 62 65 66 6f 72 65 20 61 6e 79 20 61 63 74  d before any act
a280: 75 61 6c 20 64 61 74 61 20 69 73 20 64 65 63 6f  ual data is deco
a290: 6d 70 72 65 73 73 65 64 2e 0a 0a 20 20 20 20 20  mpressed...     
a2a0: 20 54 68 65 20 74 65 78 74 2c 20 74 69 6d 65 2c   The text, time,
a2b0: 20 78 66 6c 61 67 73 2c 20 61 6e 64 20 6f 73 20   xflags, and os 
a2c0: 66 69 65 6c 64 73 20 61 72 65 20 66 69 6c 6c 65  fields are fille
a2d0: 64 20 69 6e 20 77 69 74 68 20 74 68 65 20 67 7a  d in with the gz
a2e0: 69 70 20 68 65 61 64 65 72 0a 20 20 20 63 6f 6e  ip header.   con
a2f0: 74 65 6e 74 73 2e 20 20 68 63 72 63 20 69 73 20  tents.  hcrc is 
a300: 73 65 74 20 74 6f 20 74 72 75 65 20 69 66 20 74  set to true if t
a310: 68 65 72 65 20 69 73 20 61 20 68 65 61 64 65 72  here is a header
a320: 20 43 52 43 2e 20 20 28 54 68 65 20 68 65 61 64   CRC.  (The head
a330: 65 72 20 43 52 43 0a 20 20 20 77 61 73 20 76 61  er CRC.   was va
a340: 6c 69 64 20 69 66 20 64 6f 6e 65 20 69 73 20 73  lid if done is s
a350: 65 74 20 74 6f 20 6f 6e 65 2e 29 20 20 49 66 20  et to one.)  If 
a360: 65 78 74 72 61 20 69 73 20 6e 6f 74 20 5a 5f 4e  extra is not Z_N
a370: 55 4c 4c 2c 20 74 68 65 6e 20 65 78 74 72 61 5f  ULL, then extra_
a380: 6d 61 78 0a 20 20 20 63 6f 6e 74 61 69 6e 73 20  max.   contains 
a390: 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62  the maximum numb
a3a0: 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 77  er of bytes to w
a3b0: 72 69 74 65 20 74 6f 20 65 78 74 72 61 2e 20 20  rite to extra.  
a3c0: 4f 6e 63 65 20 64 6f 6e 65 20 69 73 20 74 72 75  Once done is tru
a3d0: 65 2c 0a 20 20 20 65 78 74 72 61 5f 6c 65 6e 20  e,.   extra_len 
a3e0: 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 61 63 74  contains the act
a3f0: 75 61 6c 20 65 78 74 72 61 20 66 69 65 6c 64 20  ual extra field 
a400: 6c 65 6e 67 74 68 2c 20 61 6e 64 20 65 78 74 72  length, and extr
a410: 61 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 0a 20  a contains the. 
a420: 20 20 65 78 74 72 61 20 66 69 65 6c 64 2c 20 6f    extra field, o
a430: 72 20 74 68 61 74 20 66 69 65 6c 64 20 74 72 75  r that field tru
a440: 6e 63 61 74 65 64 20 69 66 20 65 78 74 72 61 5f  ncated if extra_
a450: 6d 61 78 20 69 73 20 6c 65 73 73 20 74 68 61 6e  max is less than
a460: 20 65 78 74 72 61 5f 6c 65 6e 2e 0a 20 20 20 49   extra_len..   I
a470: 66 20 6e 61 6d 65 20 69 73 20 6e 6f 74 20 5a 5f  f name is not Z_
a480: 4e 55 4c 4c 2c 20 74 68 65 6e 20 75 70 20 74 6f  NULL, then up to
a490: 20 6e 61 6d 65 5f 6d 61 78 20 63 68 61 72 61 63   name_max charac
a4a0: 74 65 72 73 20 61 72 65 20 77 72 69 74 74 65 6e  ters are written
a4b0: 20 74 68 65 72 65 2c 0a 20 20 20 74 65 72 6d 69   there,.   termi
a4c0: 6e 61 74 65 64 20 77 69 74 68 20 61 20 7a 65 72  nated with a zer
a4d0: 6f 20 75 6e 6c 65 73 73 20 74 68 65 20 6c 65 6e  o unless the len
a4e0: 67 74 68 20 69 73 20 67 72 65 61 74 65 72 20 74  gth is greater t
a4f0: 68 61 6e 20 6e 61 6d 65 5f 6d 61 78 2e 20 20 49  han name_max.  I
a500: 66 0a 20 20 20 63 6f 6d 6d 65 6e 74 20 69 73 20  f.   comment is 
a510: 6e 6f 74 20 5a 5f 4e 55 4c 4c 2c 20 74 68 65 6e  not Z_NULL, then
a520: 20 75 70 20 74 6f 20 63 6f 6d 6d 5f 6d 61 78 20   up to comm_max 
a530: 63 68 61 72 61 63 74 65 72 73 20 61 72 65 20 77  characters are w
a540: 72 69 74 74 65 6e 20 74 68 65 72 65 2c 0a 20 20  ritten there,.  
a550: 20 74 65 72 6d 69 6e 61 74 65 64 20 77 69 74 68   terminated with
a560: 20 61 20 7a 65 72 6f 20 75 6e 6c 65 73 73 20 74   a zero unless t
a570: 68 65 20 6c 65 6e 67 74 68 20 69 73 20 67 72 65  he length is gre
a580: 61 74 65 72 20 74 68 61 6e 20 63 6f 6d 6d 5f 6d  ater than comm_m
a590: 61 78 2e 20 20 57 68 65 6e 0a 20 20 20 61 6e 79  ax.  When.   any
a5a0: 20 6f 66 20 65 78 74 72 61 2c 20 6e 61 6d 65 2c   of extra, name,
a5b0: 20 6f 72 20 63 6f 6d 6d 65 6e 74 20 61 72 65 20   or comment are 
a5c0: 6e 6f 74 20 5a 5f 4e 55 4c 4c 20 61 6e 64 20 74  not Z_NULL and t
a5d0: 68 65 20 72 65 73 70 65 63 74 69 76 65 20 66 69  he respective fi
a5e0: 65 6c 64 20 69 73 0a 20 20 20 6e 6f 74 20 70 72  eld is.   not pr
a5f0: 65 73 65 6e 74 20 69 6e 20 74 68 65 20 68 65 61  esent in the hea
a600: 64 65 72 2c 20 74 68 65 6e 20 74 68 61 74 20 66  der, then that f
a610: 69 65 6c 64 20 69 73 20 73 65 74 20 74 6f 20 5a  ield is set to Z
a620: 5f 4e 55 4c 4c 20 74 6f 20 73 69 67 6e 61 6c 20  _NULL to signal 
a630: 69 74 73 0a 20 20 20 61 62 73 65 6e 63 65 2e 20  its.   absence. 
a640: 20 54 68 69 73 20 61 6c 6c 6f 77 73 20 74 68 65   This allows the
a650: 20 75 73 65 20 6f 66 20 64 65 66 6c 61 74 65 53   use of deflateS
a660: 65 74 48 65 61 64 65 72 28 29 20 77 69 74 68 20  etHeader() with 
a670: 74 68 65 20 72 65 74 75 72 6e 65 64 0a 20 20 20  the returned.   
a680: 73 74 72 75 63 74 75 72 65 20 74 6f 20 64 75 70  structure to dup
a690: 6c 69 63 61 74 65 20 74 68 65 20 68 65 61 64 65  licate the heade
a6a0: 72 2e 20 20 48 6f 77 65 76 65 72 20 69 66 20 74  r.  However if t
a6b0: 68 6f 73 65 20 66 69 65 6c 64 73 20 61 72 65 20  hose fields are 
a6c0: 73 65 74 20 74 6f 0a 20 20 20 61 6c 6c 6f 63 61  set to.   alloca
a6d0: 74 65 64 20 6d 65 6d 6f 72 79 2c 20 74 68 65 6e  ted memory, then
a6e0: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
a6f0: 20 77 69 6c 6c 20 6e 65 65 64 20 74 6f 20 73 61   will need to sa
a700: 76 65 20 74 68 6f 73 65 20 70 6f 69 6e 74 65 72  ve those pointer
a710: 73 0a 20 20 20 65 6c 73 65 77 68 65 72 65 20 73  s.   elsewhere s
a720: 6f 20 74 68 61 74 20 74 68 65 79 20 63 61 6e 20  o that they can 
a730: 62 65 20 65 76 65 6e 74 75 61 6c 6c 79 20 66 72  be eventually fr
a740: 65 65 64 2e 0a 0a 20 20 20 20 20 20 49 66 20 69  eed...      If i
a750: 6e 66 6c 61 74 65 47 65 74 48 65 61 64 65 72 20  nflateGetHeader 
a760: 69 73 20 6e 6f 74 20 75 73 65 64 2c 20 74 68 65  is not used, the
a770: 6e 20 74 68 65 20 68 65 61 64 65 72 20 69 6e 66  n the header inf
a780: 6f 72 6d 61 74 69 6f 6e 20 69 73 20 73 69 6d 70  ormation is simp
a790: 6c 79 0a 20 20 20 64 69 73 63 61 72 64 65 64 2e  ly.   discarded.
a7a0: 20 20 54 68 65 20 68 65 61 64 65 72 20 69 73 20    The header is 
a7b0: 61 6c 77 61 79 73 20 63 68 65 63 6b 65 64 20 66  always checked f
a7c0: 6f 72 20 76 61 6c 69 64 69 74 79 2c 20 69 6e 63  or validity, inc
a7d0: 6c 75 64 69 6e 67 20 74 68 65 20 68 65 61 64 65  luding the heade
a7e0: 72 0a 20 20 20 43 52 43 20 69 66 20 70 72 65 73  r.   CRC if pres
a7f0: 65 6e 74 2e 20 20 69 6e 66 6c 61 74 65 52 65 73  ent.  inflateRes
a800: 65 74 28 29 20 77 69 6c 6c 20 72 65 73 65 74 20  et() will reset 
a810: 74 68 65 20 70 72 6f 63 65 73 73 20 74 6f 20 64  the process to d
a820: 69 73 63 61 72 64 20 74 68 65 20 68 65 61 64 65  iscard the heade
a830: 72 0a 20 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  r.   information
a840: 2e 20 20 54 68 65 20 61 70 70 6c 69 63 61 74 69  .  The applicati
a850: 6f 6e 20 77 6f 75 6c 64 20 6e 65 65 64 20 74 6f  on would need to
a860: 20 63 61 6c 6c 20 69 6e 66 6c 61 74 65 47 65 74   call inflateGet
a870: 48 65 61 64 65 72 28 29 20 61 67 61 69 6e 20 74  Header() again t
a880: 6f 0a 20 20 20 72 65 74 72 69 65 76 65 20 74 68  o.   retrieve th
a890: 65 20 68 65 61 64 65 72 20 66 72 6f 6d 20 74 68  e header from th
a8a0: 65 20 6e 65 78 74 20 67 7a 69 70 20 73 74 72 65  e next gzip stre
a8b0: 61 6d 2e 0a 0a 20 20 20 20 20 20 69 6e 66 6c 61  am...      infla
a8c0: 74 65 47 65 74 48 65 61 64 65 72 20 72 65 74 75  teGetHeader retu
a8d0: 72 6e 73 20 5a 5f 4f 4b 20 69 66 20 73 75 63 63  rns Z_OK if succ
a8e0: 65 73 73 2c 20 6f 72 20 5a 5f 53 54 52 45 41 4d  ess, or Z_STREAM
a8f0: 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20 73 6f  _ERROR if the so
a900: 75 72 63 65 0a 20 20 20 73 74 72 65 61 6d 20 73  urce.   stream s
a910: 74 61 74 65 20 77 61 73 20 69 6e 63 6f 6e 73 69  tate was inconsi
a920: 73 74 65 6e 74 2e 0a 2a 2f 0a 0a 2f 2a 0a 5a 45  stent..*/../*.ZE
a930: 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52  XTERN int ZEXPOR
a940: 54 20 69 6e 66 6c 61 74 65 42 61 63 6b 49 6e 69  T inflateBackIni
a950: 74 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70 20  t OF((z_streamp 
a960: 73 74 72 6d 2c 20 69 6e 74 20 77 69 6e 64 6f 77  strm, int window
a970: 42 69 74 73 2c 0a 20 20 20 20 20 20 20 20 20 20  Bits,.          
a980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e                un
a9a0: 73 69 67 6e 65 64 20 63 68 61 72 20 46 41 52 20  signed char FAR 
a9b0: 2a 77 69 6e 64 6f 77 29 29 3b 0a 0a 20 20 20 20  *window));..    
a9c0: 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20   Initialize the 
a9d0: 69 6e 74 65 72 6e 61 6c 20 73 74 72 65 61 6d 20  internal stream 
a9e0: 73 74 61 74 65 20 66 6f 72 20 64 65 63 6f 6d 70  state for decomp
a9f0: 72 65 73 73 69 6f 6e 20 75 73 69 6e 67 20 69 6e  ression using in
aa00: 66 6c 61 74 65 42 61 63 6b 28 29 0a 20 20 20 63  flateBack().   c
aa10: 61 6c 6c 73 2e 20 20 54 68 65 20 66 69 65 6c 64  alls.  The field
aa20: 73 20 7a 61 6c 6c 6f 63 2c 20 7a 66 72 65 65 20  s zalloc, zfree 
aa30: 61 6e 64 20 6f 70 61 71 75 65 20 69 6e 20 73 74  and opaque in st
aa40: 72 6d 20 6d 75 73 74 20 62 65 20 69 6e 69 74 69  rm must be initi
aa50: 61 6c 69 7a 65 64 0a 20 20 20 62 65 66 6f 72 65  alized.   before
aa60: 20 74 68 65 20 63 61 6c 6c 2e 20 20 49 66 20 7a   the call.  If z
aa70: 61 6c 6c 6f 63 20 61 6e 64 20 7a 66 72 65 65 20  alloc and zfree 
aa80: 61 72 65 20 5a 5f 4e 55 4c 4c 2c 20 74 68 65 6e  are Z_NULL, then
aa90: 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c 69 62   the default lib
aaa0: 72 61 72 79 2d 0a 20 20 20 64 65 72 69 76 65 64  rary-.   derived
aab0: 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
aac0: 6f 6e 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20  on routines are 
aad0: 75 73 65 64 2e 20 20 77 69 6e 64 6f 77 42 69 74  used.  windowBit
aae0: 73 20 69 73 20 74 68 65 20 62 61 73 65 20 74 77  s is the base tw
aaf0: 6f 0a 20 20 20 6c 6f 67 61 72 69 74 68 6d 20 6f  o.   logarithm o
ab00: 66 20 74 68 65 20 77 69 6e 64 6f 77 20 73 69 7a  f the window siz
ab10: 65 2c 20 69 6e 20 74 68 65 20 72 61 6e 67 65 20  e, in the range 
ab20: 38 2e 2e 31 35 2e 20 20 77 69 6e 64 6f 77 20 69  8..15.  window i
ab30: 73 20 61 20 63 61 6c 6c 65 72 0a 20 20 20 73 75  s a caller.   su
ab40: 70 70 6c 69 65 64 20 62 75 66 66 65 72 20 6f 66  pplied buffer of
ab50: 20 74 68 61 74 20 73 69 7a 65 2e 20 20 45 78 63   that size.  Exc
ab60: 65 70 74 20 66 6f 72 20 73 70 65 63 69 61 6c 20  ept for special 
ab70: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77 68 65  applications whe
ab80: 72 65 20 69 74 20 69 73 0a 20 20 20 61 73 73 75  re it is.   assu
ab90: 72 65 64 20 74 68 61 74 20 64 65 66 6c 61 74 65  red that deflate
aba0: 20 77 61 73 20 75 73 65 64 20 77 69 74 68 20 73   was used with s
abb0: 6d 61 6c 6c 20 77 69 6e 64 6f 77 20 73 69 7a 65  mall window size
abc0: 73 2c 20 77 69 6e 64 6f 77 42 69 74 73 20 6d 75  s, windowBits mu
abd0: 73 74 20 62 65 20 31 35 0a 20 20 20 61 6e 64 20  st be 15.   and 
abe0: 61 20 33 32 4b 20 62 79 74 65 20 77 69 6e 64 6f  a 32K byte windo
abf0: 77 20 6d 75 73 74 20 62 65 20 73 75 70 70 6c 69  w must be suppli
ac00: 65 64 20 74 6f 20 62 65 20 61 62 6c 65 20 74 6f  ed to be able to
ac10: 20 64 65 63 6f 6d 70 72 65 73 73 20 67 65 6e 65   decompress gene
ac20: 72 61 6c 0a 20 20 20 64 65 66 6c 61 74 65 20 73  ral.   deflate s
ac30: 74 72 65 61 6d 73 2e 0a 0a 20 20 20 20 20 53 65  treams...     Se
ac40: 65 20 69 6e 66 6c 61 74 65 42 61 63 6b 28 29 20  e inflateBack() 
ac50: 66 6f 72 20 74 68 65 20 75 73 61 67 65 20 6f 66  for the usage of
ac60: 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73 2e   these routines.
ac70: 0a 0a 20 20 20 20 20 69 6e 66 6c 61 74 65 42 61  ..     inflateBa
ac80: 63 6b 49 6e 69 74 20 77 69 6c 6c 20 72 65 74 75  ckInit will retu
ac90: 72 6e 20 5a 5f 4f 4b 20 6f 6e 20 73 75 63 63 65  rn Z_OK on succe
aca0: 73 73 2c 20 5a 5f 53 54 52 45 41 4d 5f 45 52 52  ss, Z_STREAM_ERR
acb0: 4f 52 20 69 66 20 61 6e 79 20 6f 66 0a 20 20 20  OR if any of.   
acc0: 74 68 65 20 70 61 72 61 6d 61 74 65 72 73 20 61  the paramaters a
acd0: 72 65 20 69 6e 76 61 6c 69 64 2c 20 5a 5f 4d 45  re invalid, Z_ME
ace0: 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20 69  M_ERROR if the i
acf0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 65 20 63 6f  nternal state co
ad00: 75 6c 64 20 6e 6f 74 0a 20 20 20 62 65 20 61 6c  uld not.   be al
ad10: 6c 6f 63 61 74 65 64 2c 20 6f 72 20 5a 5f 56 45  located, or Z_VE
ad20: 52 53 49 4f 4e 5f 45 52 52 4f 52 20 69 66 20 74  RSION_ERROR if t
ad30: 68 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68  he version of th
ad40: 65 20 6c 69 62 72 61 72 79 20 64 6f 65 73 20 6e  e library does n
ad50: 6f 74 0a 20 20 20 6d 61 74 63 68 20 74 68 65 20  ot.   match the 
ad60: 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 68  version of the h
ad70: 65 61 64 65 72 20 66 69 6c 65 2e 0a 2a 2f 0a 0a  eader file..*/..
ad80: 74 79 70 65 64 65 66 20 75 6e 73 69 67 6e 65 64  typedef unsigned
ad90: 20 28 2a 69 6e 5f 66 75 6e 63 29 20 4f 46 28 28   (*in_func) OF((
ada0: 76 6f 69 64 20 46 41 52 20 2a 2c 20 75 6e 73 69  void FAR *, unsi
adb0: 67 6e 65 64 20 63 68 61 72 20 46 41 52 20 2a 20  gned char FAR * 
adc0: 46 41 52 20 2a 29 29 3b 0a 74 79 70 65 64 65 66  FAR *));.typedef
add0: 20 69 6e 74 20 28 2a 6f 75 74 5f 66 75 6e 63 29   int (*out_func)
ade0: 20 4f 46 28 28 76 6f 69 64 20 46 41 52 20 2a 2c   OF((void FAR *,
adf0: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 46   unsigned char F
ae00: 41 52 20 2a 2c 20 75 6e 73 69 67 6e 65 64 29 29  AR *, unsigned))
ae10: 3b 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a  ;..ZEXTERN int Z
ae20: 45 58 50 4f 52 54 20 69 6e 66 6c 61 74 65 42 61  EXPORT inflateBa
ae30: 63 6b 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70  ck OF((z_streamp
ae40: 20 73 74 72 6d 2c 0a 20 20 20 20 20 20 20 20 20   strm,.         
ae50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae60: 20 20 20 20 20 20 20 20 20 20 20 69 6e 5f 66 75             in_fu
ae70: 6e 63 20 69 6e 2c 20 76 6f 69 64 20 46 41 52 20  nc in, void FAR 
ae80: 2a 69 6e 5f 64 65 73 63 2c 0a 20 20 20 20 20 20  *in_desc,.      
ae90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
aeb0: 74 5f 66 75 6e 63 20 6f 75 74 2c 20 76 6f 69 64  t_func out, void
aec0: 20 46 41 52 20 2a 6f 75 74 5f 64 65 73 63 29 29   FAR *out_desc))
aed0: 3b 0a 2f 2a 0a 20 20 20 20 20 69 6e 66 6c 61 74  ;./*.     inflat
aee0: 65 42 61 63 6b 28 29 20 64 6f 65 73 20 61 20 72  eBack() does a r
aef0: 61 77 20 69 6e 66 6c 61 74 65 20 77 69 74 68 20  aw inflate with 
af00: 61 20 73 69 6e 67 6c 65 20 63 61 6c 6c 20 75 73  a single call us
af10: 69 6e 67 20 61 20 63 61 6c 6c 2d 62 61 63 6b 0a  ing a call-back.
af20: 20 20 20 69 6e 74 65 72 66 61 63 65 20 66 6f 72     interface for
af30: 20 69 6e 70 75 74 20 61 6e 64 20 6f 75 74 70 75   input and outpu
af40: 74 2e 20 20 54 68 69 73 20 69 73 20 6d 6f 72 65  t.  This is more
af50: 20 65 66 66 69 63 69 65 6e 74 20 74 68 61 6e 20   efficient than 
af60: 69 6e 66 6c 61 74 65 28 29 20 66 6f 72 0a 20 20  inflate() for.  
af70: 20 66 69 6c 65 20 69 2f 6f 20 61 70 70 6c 69 63   file i/o applic
af80: 61 74 69 6f 6e 73 20 69 6e 20 74 68 61 74 20 69  ations in that i
af90: 74 20 61 76 6f 69 64 73 20 63 6f 70 79 69 6e 67  t avoids copying
afa0: 20 62 65 74 77 65 65 6e 20 74 68 65 20 6f 75 74   between the out
afb0: 70 75 74 20 61 6e 64 20 74 68 65 0a 20 20 20 73  put and the.   s
afc0: 6c 69 64 69 6e 67 20 77 69 6e 64 6f 77 20 62 79  liding window by
afd0: 20 73 69 6d 70 6c 79 20 6d 61 6b 69 6e 67 20 74   simply making t
afe0: 68 65 20 77 69 6e 64 6f 77 20 69 74 73 65 6c 66  he window itself
aff0: 20 74 68 65 20 6f 75 74 70 75 74 20 62 75 66 66   the output buff
b000: 65 72 2e 20 20 54 68 69 73 0a 20 20 20 66 75 6e  er.  This.   fun
b010: 63 74 69 6f 6e 20 74 72 75 73 74 73 20 74 68 65  ction trusts the
b020: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 20   application to 
b030: 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 6f  not change the o
b040: 75 74 70 75 74 20 62 75 66 66 65 72 20 70 61 73  utput buffer pas
b050: 73 65 64 20 62 79 0a 20 20 20 74 68 65 20 6f 75  sed by.   the ou
b060: 74 70 75 74 20 66 75 6e 63 74 69 6f 6e 2c 20 61  tput function, a
b070: 74 20 6c 65 61 73 74 20 75 6e 74 69 6c 20 69 6e  t least until in
b080: 66 6c 61 74 65 42 61 63 6b 28 29 20 72 65 74 75  flateBack() retu
b090: 72 6e 73 2e 0a 0a 20 20 20 20 20 69 6e 66 6c 61  rns...     infla
b0a0: 74 65 42 61 63 6b 49 6e 69 74 28 29 20 6d 75 73  teBackInit() mus
b0b0: 74 20 62 65 20 63 61 6c 6c 65 64 20 66 69 72 73  t be called firs
b0c0: 74 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 74 68  t to allocate th
b0d0: 65 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 65  e internal state
b0e0: 0a 20 20 20 61 6e 64 20 74 6f 20 69 6e 69 74 69  .   and to initi
b0f0: 61 6c 69 7a 65 20 74 68 65 20 73 74 61 74 65 20  alize the state 
b100: 77 69 74 68 20 74 68 65 20 75 73 65 72 2d 70 72  with the user-pr
b110: 6f 76 69 64 65 64 20 77 69 6e 64 6f 77 20 62 75  ovided window bu
b120: 66 66 65 72 2e 0a 20 20 20 69 6e 66 6c 61 74 65  ffer..   inflate
b130: 42 61 63 6b 28 29 20 6d 61 79 20 74 68 65 6e 20  Back() may then 
b140: 62 65 20 75 73 65 64 20 6d 75 6c 74 69 70 6c 65  be used multiple
b150: 20 74 69 6d 65 73 20 74 6f 20 69 6e 66 6c 61 74   times to inflat
b160: 65 20 61 20 63 6f 6d 70 6c 65 74 65 2c 20 72 61  e a complete, ra
b170: 77 0a 20 20 20 64 65 66 6c 61 74 65 20 73 74 72  w.   deflate str
b180: 65 61 6d 20 77 69 74 68 20 65 61 63 68 20 63 61  eam with each ca
b190: 6c 6c 2e 20 20 69 6e 66 6c 61 74 65 42 61 63 6b  ll.  inflateBack
b1a0: 45 6e 64 28 29 20 69 73 20 74 68 65 6e 20 63 61  End() is then ca
b1b0: 6c 6c 65 64 20 74 6f 20 66 72 65 65 0a 20 20 20  lled to free.   
b1c0: 74 68 65 20 61 6c 6c 6f 63 61 74 65 64 20 73 74  the allocated st
b1d0: 61 74 65 2e 0a 0a 20 20 20 20 20 41 20 72 61 77  ate...     A raw
b1e0: 20 64 65 66 6c 61 74 65 20 73 74 72 65 61 6d 20   deflate stream 
b1f0: 69 73 20 6f 6e 65 20 77 69 74 68 20 6e 6f 20 7a  is one with no z
b200: 6c 69 62 20 6f 72 20 67 7a 69 70 20 68 65 61 64  lib or gzip head
b210: 65 72 20 6f 72 20 74 72 61 69 6c 65 72 2e 0a 20  er or trailer.. 
b220: 20 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20 77    This routine w
b230: 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 62 65  ould normally be
b240: 20 75 73 65 64 20 69 6e 20 61 20 75 74 69 6c 69   used in a utili
b250: 74 79 20 74 68 61 74 20 72 65 61 64 73 20 7a 69  ty that reads zi
b260: 70 20 6f 72 20 67 7a 69 70 0a 20 20 20 66 69 6c  p or gzip.   fil
b270: 65 73 20 61 6e 64 20 77 72 69 74 65 73 20 6f 75  es and writes ou
b280: 74 20 75 6e 63 6f 6d 70 72 65 73 73 65 64 20 66  t uncompressed f
b290: 69 6c 65 73 2e 20 20 54 68 65 20 75 74 69 6c 69  iles.  The utili
b2a0: 74 79 20 77 6f 75 6c 64 20 64 65 63 6f 64 65 20  ty would decode 
b2b0: 74 68 65 0a 20 20 20 68 65 61 64 65 72 20 61 6e  the.   header an
b2c0: 64 20 70 72 6f 63 65 73 73 20 74 68 65 20 74 72  d process the tr
b2d0: 61 69 6c 65 72 20 6f 6e 20 69 74 73 20 6f 77 6e  ailer on its own
b2e0: 2c 20 68 65 6e 63 65 20 74 68 69 73 20 72 6f 75  , hence this rou
b2f0: 74 69 6e 65 20 65 78 70 65 63 74 73 0a 20 20 20  tine expects.   
b300: 6f 6e 6c 79 20 74 68 65 20 72 61 77 20 64 65 66  only the raw def
b310: 6c 61 74 65 20 73 74 72 65 61 6d 20 74 6f 20 64  late stream to d
b320: 65 63 6f 6d 70 72 65 73 73 2e 20 20 54 68 69 73  ecompress.  This
b330: 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 72   is different fr
b340: 6f 6d 20 74 68 65 0a 20 20 20 6e 6f 72 6d 61 6c  om the.   normal
b350: 20 62 65 68 61 76 69 6f 72 20 6f 66 20 69 6e 66   behavior of inf
b360: 6c 61 74 65 28 29 2c 20 77 68 69 63 68 20 65 78  late(), which ex
b370: 70 65 63 74 73 20 65 69 74 68 65 72 20 61 20 7a  pects either a z
b380: 6c 69 62 20 6f 72 20 67 7a 69 70 20 68 65 61 64  lib or gzip head
b390: 65 72 20 61 6e 64 0a 20 20 20 74 72 61 69 6c 65  er and.   traile
b3a0: 72 20 61 72 6f 75 6e 64 20 74 68 65 20 64 65 66  r around the def
b3b0: 6c 61 74 65 20 73 74 72 65 61 6d 2e 0a 0a 20 20  late stream...  
b3c0: 20 20 20 69 6e 66 6c 61 74 65 42 61 63 6b 28 29     inflateBack()
b3d0: 20 75 73 65 73 20 74 77 6f 20 73 75 62 72 6f 75   uses two subrou
b3e0: 74 69 6e 65 73 20 73 75 70 70 6c 69 65 64 20 62  tines supplied b
b3f0: 79 20 74 68 65 20 63 61 6c 6c 65 72 20 74 68 61  y the caller tha
b400: 74 20 61 72 65 20 74 68 65 6e 0a 20 20 20 63 61  t are then.   ca
b410: 6c 6c 65 64 20 62 79 20 69 6e 66 6c 61 74 65 42  lled by inflateB
b420: 61 63 6b 28 29 20 66 6f 72 20 69 6e 70 75 74 20  ack() for input 
b430: 61 6e 64 20 6f 75 74 70 75 74 2e 20 20 69 6e 66  and output.  inf
b440: 6c 61 74 65 42 61 63 6b 28 29 20 63 61 6c 6c 73  lateBack() calls
b450: 20 74 68 6f 73 65 0a 20 20 20 72 6f 75 74 69 6e   those.   routin
b460: 65 73 20 75 6e 74 69 6c 20 69 74 20 72 65 61 64  es until it read
b470: 73 20 61 20 63 6f 6d 70 6c 65 74 65 20 64 65 66  s a complete def
b480: 6c 61 74 65 20 73 74 72 65 61 6d 20 61 6e 64 20  late stream and 
b490: 77 72 69 74 65 73 20 6f 75 74 20 61 6c 6c 20 6f  writes out all o
b4a0: 66 20 74 68 65 0a 20 20 20 75 6e 63 6f 6d 70 72  f the.   uncompr
b4b0: 65 73 73 65 64 20 64 61 74 61 2c 20 6f 72 20 75  essed data, or u
b4c0: 6e 74 69 6c 20 69 74 20 65 6e 63 6f 75 6e 74 65  ntil it encounte
b4d0: 72 73 20 61 6e 20 65 72 72 6f 72 2e 20 20 54 68  rs an error.  Th
b4e0: 65 20 66 75 6e 63 74 69 6f 6e 27 73 0a 20 20 20  e function's.   
b4f0: 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 72  parameters and r
b500: 65 74 75 72 6e 20 74 79 70 65 73 20 61 72 65 20  eturn types are 
b510: 64 65 66 69 6e 65 64 20 61 62 6f 76 65 20 69 6e  defined above in
b520: 20 74 68 65 20 69 6e 5f 66 75 6e 63 20 61 6e 64   the in_func and
b530: 20 6f 75 74 5f 66 75 6e 63 0a 20 20 20 74 79 70   out_func.   typ
b540: 65 64 65 66 73 2e 20 20 69 6e 66 6c 61 74 65 42  edefs.  inflateB
b550: 61 63 6b 28 29 20 77 69 6c 6c 20 63 61 6c 6c 20  ack() will call 
b560: 69 6e 28 69 6e 5f 64 65 73 63 2c 20 26 62 75 66  in(in_desc, &buf
b570: 29 20 77 68 69 63 68 20 73 68 6f 75 6c 64 20 72  ) which should r
b580: 65 74 75 72 6e 20 74 68 65 0a 20 20 20 6e 75 6d  eturn the.   num
b590: 62 65 72 20 6f 66 20 62 79 74 65 73 20 6f 66 20  ber of bytes of 
b5a0: 70 72 6f 76 69 64 65 64 20 69 6e 70 75 74 2c 20  provided input, 
b5b0: 61 6e 64 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  and a pointer to
b5c0: 20 74 68 61 74 20 69 6e 70 75 74 20 69 6e 20 62   that input in b
b5d0: 75 66 2e 20 20 49 66 0a 20 20 20 74 68 65 72 65  uf.  If.   there
b5e0: 20 69 73 20 6e 6f 20 69 6e 70 75 74 20 61 76 61   is no input ava
b5f0: 69 6c 61 62 6c 65 2c 20 69 6e 28 29 20 6d 75 73  ilable, in() mus
b600: 74 20 72 65 74 75 72 6e 20 7a 65 72 6f 2d 2d 62  t return zero--b
b610: 75 66 20 69 73 20 69 67 6e 6f 72 65 64 20 69 6e  uf is ignored in
b620: 20 74 68 61 74 0a 20 20 20 63 61 73 65 2d 2d 61   that.   case--a
b630: 6e 64 20 69 6e 66 6c 61 74 65 42 61 63 6b 28 29  nd inflateBack()
b640: 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 61 20 62   will return a b
b650: 75 66 66 65 72 20 65 72 72 6f 72 2e 20 20 69 6e  uffer error.  in
b660: 66 6c 61 74 65 42 61 63 6b 28 29 20 77 69 6c 6c  flateBack() will
b670: 20 63 61 6c 6c 0a 20 20 20 6f 75 74 28 6f 75 74   call.   out(out
b680: 5f 64 65 73 63 2c 20 62 75 66 2c 20 6c 65 6e 29  _desc, buf, len)
b690: 20 74 6f 20 77 72 69 74 65 20 74 68 65 20 75 6e   to write the un
b6a0: 63 6f 6d 70 72 65 73 73 65 64 20 64 61 74 61 20  compressed data 
b6b0: 62 75 66 5b 30 2e 2e 6c 65 6e 2d 31 5d 2e 20 20  buf[0..len-1].  
b6c0: 6f 75 74 28 29 0a 20 20 20 73 68 6f 75 6c 64 20  out().   should 
b6d0: 72 65 74 75 72 6e 20 7a 65 72 6f 20 6f 6e 20 73  return zero on s
b6e0: 75 63 63 65 73 73 2c 20 6f 72 20 6e 6f 6e 2d 7a  uccess, or non-z
b6f0: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 20  ero on failure. 
b700: 20 49 66 20 6f 75 74 28 29 20 72 65 74 75 72 6e   If out() return
b710: 73 0a 20 20 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 69  s.   non-zero, i
b720: 6e 66 6c 61 74 65 42 61 63 6b 28 29 20 77 69 6c  nflateBack() wil
b730: 6c 20 72 65 74 75 72 6e 20 77 69 74 68 20 61 6e  l return with an
b740: 20 65 72 72 6f 72 2e 20 20 4e 65 69 74 68 65 72   error.  Neither
b750: 20 69 6e 28 29 20 6e 6f 72 20 6f 75 74 28 29 0a   in() nor out().
b760: 20 20 20 61 72 65 20 70 65 72 6d 69 74 74 65 64     are permitted
b770: 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 63   to change the c
b780: 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 77  ontents of the w
b790: 69 6e 64 6f 77 20 70 72 6f 76 69 64 65 64 20 74  indow provided t
b7a0: 6f 0a 20 20 20 69 6e 66 6c 61 74 65 42 61 63 6b  o.   inflateBack
b7b0: 49 6e 69 74 28 29 2c 20 77 68 69 63 68 20 69 73  Init(), which is
b7c0: 20 61 6c 73 6f 20 74 68 65 20 62 75 66 66 65 72   also the buffer
b7d0: 20 74 68 61 74 20 6f 75 74 28 29 20 75 73 65 73   that out() uses
b7e0: 20 74 6f 20 77 72 69 74 65 20 66 72 6f 6d 2e 0a   to write from..
b7f0: 20 20 20 54 68 65 20 6c 65 6e 67 74 68 20 77 72     The length wr
b800: 69 74 74 65 6e 20 62 79 20 6f 75 74 28 29 20 77  itten by out() w
b810: 69 6c 6c 20 62 65 20 61 74 20 6d 6f 73 74 20 74  ill be at most t
b820: 68 65 20 77 69 6e 64 6f 77 20 73 69 7a 65 2e 20  he window size. 
b830: 20 41 6e 79 20 6e 6f 6e 2d 7a 65 72 6f 0a 20 20   Any non-zero.  
b840: 20 61 6d 6f 75 6e 74 20 6f 66 20 69 6e 70 75 74   amount of input
b850: 20 6d 61 79 20 62 65 20 70 72 6f 76 69 64 65 64   may be provided
b860: 20 62 79 20 69 6e 28 29 2e 0a 0a 20 20 20 20 20   by in()...     
b870: 46 6f 72 20 63 6f 6e 76 65 6e 69 65 6e 63 65 2c  For convenience,
b880: 20 69 6e 66 6c 61 74 65 42 61 63 6b 28 29 20 63   inflateBack() c
b890: 61 6e 20 62 65 20 70 72 6f 76 69 64 65 64 20 69  an be provided i
b8a0: 6e 70 75 74 20 6f 6e 20 74 68 65 20 66 69 72 73  nput on the firs
b8b0: 74 20 63 61 6c 6c 20 62 79 0a 20 20 20 73 65 74  t call by.   set
b8c0: 74 69 6e 67 20 73 74 72 6d 2d 3e 6e 65 78 74 5f  ting strm->next_
b8d0: 69 6e 20 61 6e 64 20 73 74 72 6d 2d 3e 61 76 61  in and strm->ava
b8e0: 69 6c 5f 69 6e 2e 20 20 49 66 20 74 68 61 74 20  il_in.  If that 
b8f0: 69 6e 70 75 74 20 69 73 20 65 78 68 61 75 73 74  input is exhaust
b900: 65 64 2c 20 74 68 65 6e 0a 20 20 20 69 6e 28 29  ed, then.   in()
b910: 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e   will be called.
b920: 20 20 54 68 65 72 65 66 6f 72 65 20 73 74 72 6d    Therefore strm
b930: 2d 3e 6e 65 78 74 5f 69 6e 20 6d 75 73 74 20 62  ->next_in must b
b940: 65 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 62 65  e initialized be
b950: 66 6f 72 65 0a 20 20 20 63 61 6c 6c 69 6e 67 20  fore.   calling 
b960: 69 6e 66 6c 61 74 65 42 61 63 6b 28 29 2e 20 20  inflateBack().  
b970: 49 66 20 73 74 72 6d 2d 3e 6e 65 78 74 5f 69 6e  If strm->next_in
b980: 20 69 73 20 5a 5f 4e 55 4c 4c 2c 20 74 68 65 6e   is Z_NULL, then
b990: 20 69 6e 28 29 20 77 69 6c 6c 20 62 65 20 63 61   in() will be ca
b9a0: 6c 6c 65 64 0a 20 20 20 69 6d 6d 65 64 69 61 74  lled.   immediat
b9b0: 65 6c 79 20 66 6f 72 20 69 6e 70 75 74 2e 20 20  ely for input.  
b9c0: 49 66 20 73 74 72 6d 2d 3e 6e 65 78 74 5f 69 6e  If strm->next_in
b9d0: 20 69 73 20 6e 6f 74 20 5a 5f 4e 55 4c 4c 2c 20   is not Z_NULL, 
b9e0: 74 68 65 6e 20 73 74 72 6d 2d 3e 61 76 61 69 6c  then strm->avail
b9f0: 5f 69 6e 0a 20 20 20 6d 75 73 74 20 61 6c 73 6f  _in.   must also
ba00: 20 62 65 20 69 6e 69 74 69 61 6c 69 7a 65 64 2c   be initialized,
ba10: 20 61 6e 64 20 74 68 65 6e 20 69 66 20 73 74 72   and then if str
ba20: 6d 2d 3e 61 76 61 69 6c 5f 69 6e 20 69 73 20 6e  m->avail_in is n
ba30: 6f 74 20 7a 65 72 6f 2c 20 69 6e 70 75 74 20 77  ot zero, input w
ba40: 69 6c 6c 0a 20 20 20 69 6e 69 74 69 61 6c 6c 79  ill.   initially
ba50: 20 62 65 20 74 61 6b 65 6e 20 66 72 6f 6d 20 73   be taken from s
ba60: 74 72 6d 2d 3e 6e 65 78 74 5f 69 6e 5b 30 20 2e  trm->next_in[0 .
ba70: 2e 20 73 74 72 6d 2d 3e 61 76 61 69 6c 5f 69 6e  . strm->avail_in
ba80: 20 2d 20 31 5d 2e 0a 0a 20 20 20 20 20 54 68 65   - 1]...     The
ba90: 20 69 6e 5f 64 65 73 63 20 61 6e 64 20 6f 75 74   in_desc and out
baa0: 5f 64 65 73 63 20 70 61 72 61 6d 65 74 65 72 73  _desc parameters
bab0: 20 6f 66 20 69 6e 66 6c 61 74 65 42 61 63 6b 28   of inflateBack(
bac0: 29 20 69 73 20 70 61 73 73 65 64 20 61 73 20 74  ) is passed as t
bad0: 68 65 0a 20 20 20 66 69 72 73 74 20 70 61 72 61  he.   first para
bae0: 6d 65 74 65 72 20 6f 66 20 69 6e 28 29 20 61 6e  meter of in() an
baf0: 64 20 6f 75 74 28 29 20 72 65 73 70 65 63 74 69  d out() respecti
bb00: 76 65 6c 79 20 77 68 65 6e 20 74 68 65 79 20 61  vely when they a
bb10: 72 65 20 63 61 6c 6c 65 64 2e 20 20 54 68 65 73  re called.  Thes
bb20: 65 0a 20 20 20 64 65 73 63 72 69 70 74 6f 72 73  e.   descriptors
bb30: 20 63 61 6e 20 62 65 20 6f 70 74 69 6f 6e 61 6c   can be optional
bb40: 6c 79 20 75 73 65 64 20 74 6f 20 70 61 73 73 20  ly used to pass 
bb50: 61 6e 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  any information 
bb60: 74 68 61 74 20 74 68 65 20 63 61 6c 6c 65 72 2d  that the caller-
bb70: 0a 20 20 20 73 75 70 70 6c 69 65 64 20 69 6e 28  .   supplied in(
bb80: 29 20 61 6e 64 20 6f 75 74 28 29 20 66 75 6e 63  ) and out() func
bb90: 74 69 6f 6e 73 20 6e 65 65 64 20 74 6f 20 64 6f  tions need to do
bba0: 20 74 68 65 69 72 20 6a 6f 62 2e 0a 0a 20 20 20   their job...   
bbb0: 20 20 4f 6e 20 72 65 74 75 72 6e 2c 20 69 6e 66    On return, inf
bbc0: 6c 61 74 65 42 61 63 6b 28 29 20 77 69 6c 6c 20  lateBack() will 
bbd0: 73 65 74 20 73 74 72 6d 2d 3e 6e 65 78 74 5f 69  set strm->next_i
bbe0: 6e 20 61 6e 64 20 73 74 72 6d 2d 3e 61 76 61 69  n and strm->avai
bbf0: 6c 5f 69 6e 20 74 6f 0a 20 20 20 70 61 73 73 20  l_in to.   pass 
bc00: 62 61 63 6b 20 61 6e 79 20 75 6e 75 73 65 64 20  back any unused 
bc10: 69 6e 70 75 74 20 74 68 61 74 20 77 61 73 20 70  input that was p
bc20: 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 6c  rovided by the l
bc30: 61 73 74 20 69 6e 28 29 20 63 61 6c 6c 2e 20 20  ast in() call.  
bc40: 54 68 65 0a 20 20 20 72 65 74 75 72 6e 20 76 61  The.   return va
bc50: 6c 75 65 73 20 6f 66 20 69 6e 66 6c 61 74 65 42  lues of inflateB
bc60: 61 63 6b 28 29 20 63 61 6e 20 62 65 20 5a 5f 53  ack() can be Z_S
bc70: 54 52 45 41 4d 5f 45 4e 44 20 6f 6e 20 73 75 63  TREAM_END on suc
bc80: 63 65 73 73 2c 20 5a 5f 42 55 46 5f 45 52 52 4f  cess, Z_BUF_ERRO
bc90: 52 0a 20 20 20 69 66 20 69 6e 28 29 20 6f 72 20  R.   if in() or 
bca0: 6f 75 74 28 29 20 72 65 74 75 72 6e 65 64 20 61  out() returned a
bcb0: 6e 20 65 72 72 6f 72 2c 20 5a 5f 44 41 54 41 5f  n error, Z_DATA_
bcc0: 45 52 52 4f 52 20 69 66 20 74 68 65 72 65 20 77  ERROR if there w
bcd0: 61 73 20 61 20 66 6f 72 6d 61 74 0a 20 20 20 65  as a format.   e
bce0: 72 72 6f 72 20 69 6e 20 74 68 65 20 64 65 66 6c  rror in the defl
bcf0: 61 74 65 20 73 74 72 65 61 6d 20 28 69 6e 20 77  ate stream (in w
bd00: 68 69 63 68 20 63 61 73 65 20 73 74 72 6d 2d 3e  hich case strm->
bd10: 6d 73 67 20 69 73 20 73 65 74 20 74 6f 20 69 6e  msg is set to in
bd20: 64 69 63 61 74 65 20 74 68 65 0a 20 20 20 6e 61  dicate the.   na
bd30: 74 75 72 65 20 6f 66 20 74 68 65 20 65 72 72 6f  ture of the erro
bd40: 72 29 2c 20 6f 72 20 5a 5f 53 54 52 45 41 4d 5f  r), or Z_STREAM_
bd50: 45 52 52 4f 52 20 69 66 20 74 68 65 20 73 74 72  ERROR if the str
bd60: 65 61 6d 20 77 61 73 20 6e 6f 74 20 70 72 6f 70  eam was not prop
bd70: 65 72 6c 79 0a 20 20 20 69 6e 69 74 69 61 6c 69  erly.   initiali
bd80: 7a 65 64 2e 20 20 49 6e 20 74 68 65 20 63 61 73  zed.  In the cas
bd90: 65 20 6f 66 20 5a 5f 42 55 46 5f 45 52 52 4f 52  e of Z_BUF_ERROR
bda0: 2c 20 61 6e 20 69 6e 70 75 74 20 6f 72 20 6f 75  , an input or ou
bdb0: 74 70 75 74 20 65 72 72 6f 72 20 63 61 6e 20 62  tput error can b
bdc0: 65 0a 20 20 20 64 69 73 74 69 6e 67 75 69 73 68  e.   distinguish
bdd0: 65 64 20 75 73 69 6e 67 20 73 74 72 6d 2d 3e 6e  ed using strm->n
bde0: 65 78 74 5f 69 6e 20 77 68 69 63 68 20 77 69 6c  ext_in which wil
bdf0: 6c 20 62 65 20 5a 5f 4e 55 4c 4c 20 6f 6e 6c 79  l be Z_NULL only
be00: 20 69 66 20 69 6e 28 29 20 72 65 74 75 72 6e 65   if in() returne
be10: 64 0a 20 20 20 61 6e 20 65 72 72 6f 72 2e 20 20  d.   an error.  
be20: 49 66 20 73 74 72 6d 2d 3e 6e 65 78 74 20 69 73  If strm->next is
be30: 20 6e 6f 74 20 5a 5f 4e 55 4c 4c 2c 20 74 68 65   not Z_NULL, the
be40: 6e 20 74 68 65 20 5a 5f 42 55 46 5f 45 52 52 4f  n the Z_BUF_ERRO
be50: 52 20 77 61 73 20 64 75 65 20 74 6f 0a 20 20 20  R was due to.   
be60: 6f 75 74 28 29 20 72 65 74 75 72 6e 69 6e 67 20  out() returning 
be70: 6e 6f 6e 2d 7a 65 72 6f 2e 20 20 28 69 6e 28 29  non-zero.  (in()
be80: 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20   will always be 
be90: 63 61 6c 6c 65 64 20 62 65 66 6f 72 65 20 6f 75  called before ou
bea0: 74 28 29 2c 20 73 6f 0a 20 20 20 73 74 72 6d 2d  t(), so.   strm-
beb0: 3e 6e 65 78 74 5f 69 6e 20 69 73 20 61 73 73 75  >next_in is assu
bec0: 72 65 64 20 74 6f 20 62 65 20 64 65 66 69 6e 65  red to be define
bed0: 64 20 69 66 20 6f 75 74 28 29 20 72 65 74 75 72  d if out() retur
bee0: 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 29 20 20 4e  ns non-zero.)  N
bef0: 6f 74 65 0a 20 20 20 74 68 61 74 20 69 6e 66 6c  ote.   that infl
bf00: 61 74 65 42 61 63 6b 28 29 20 63 61 6e 6e 6f 74  ateBack() cannot
bf10: 20 72 65 74 75 72 6e 20 5a 5f 4f 4b 2e 0a 2a 2f   return Z_OK..*/
bf20: 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45  ..ZEXTERN int ZE
bf30: 58 50 4f 52 54 20 69 6e 66 6c 61 74 65 42 61 63  XPORT inflateBac
bf40: 6b 45 6e 64 20 4f 46 28 28 7a 5f 73 74 72 65 61  kEnd OF((z_strea
bf50: 6d 70 20 73 74 72 6d 29 29 3b 0a 2f 2a 0a 20 20  mp strm));./*.  
bf60: 20 20 20 41 6c 6c 20 6d 65 6d 6f 72 79 20 61 6c     All memory al
bf70: 6c 6f 63 61 74 65 64 20 62 79 20 69 6e 66 6c 61  located by infla
bf80: 74 65 42 61 63 6b 49 6e 69 74 28 29 20 69 73 20  teBackInit() is 
bf90: 66 72 65 65 64 2e 0a 0a 20 20 20 20 20 69 6e 66  freed...     inf
bfa0: 6c 61 74 65 42 61 63 6b 45 6e 64 28 29 20 72 65  lateBackEnd() re
bfb0: 74 75 72 6e 73 20 5a 5f 4f 4b 20 6f 6e 20 73 75  turns Z_OK on su
bfc0: 63 63 65 73 73 2c 20 6f 72 20 5a 5f 53 54 52 45  ccess, or Z_STRE
bfd0: 41 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65 20  AM_ERROR if the 
bfe0: 73 74 72 65 61 6d 0a 20 20 20 73 74 61 74 65 20  stream.   state 
bff0: 77 61 73 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74  was inconsistent
c000: 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 75 4c  ..*/..ZEXTERN uL
c010: 6f 6e 67 20 5a 45 58 50 4f 52 54 20 7a 6c 69 62  ong ZEXPORT zlib
c020: 43 6f 6d 70 69 6c 65 46 6c 61 67 73 20 4f 46 28  CompileFlags OF(
c030: 28 76 6f 69 64 29 29 3b 0a 2f 2a 20 52 65 74 75  (void));./* Retu
c040: 72 6e 20 66 6c 61 67 73 20 69 6e 64 69 63 61 74  rn flags indicat
c050: 69 6e 67 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  ing compile-time
c060: 20 6f 70 74 69 6f 6e 73 2e 0a 0a 20 20 20 20 54   options...    T
c070: 79 70 65 20 73 69 7a 65 73 2c 20 74 77 6f 20 62  ype sizes, two b
c080: 69 74 73 20 65 61 63 68 2c 20 30 30 20 3d 20 31  its each, 00 = 1
c090: 36 20 62 69 74 73 2c 20 30 31 20 3d 20 33 32 2c  6 bits, 01 = 32,
c0a0: 20 31 30 20 3d 20 36 34 2c 20 31 31 20 3d 20 6f   10 = 64, 11 = o
c0b0: 74 68 65 72 3a 0a 20 20 20 20 20 31 2e 30 3a 20  ther:.     1.0: 
c0c0: 73 69 7a 65 20 6f 66 20 75 49 6e 74 0a 20 20 20  size of uInt.   
c0d0: 20 20 33 2e 32 3a 20 73 69 7a 65 20 6f 66 20 75    3.2: size of u
c0e0: 4c 6f 6e 67 0a 20 20 20 20 20 35 2e 34 3a 20 73  Long.     5.4: s
c0f0: 69 7a 65 20 6f 66 20 76 6f 69 64 70 66 20 28 70  ize of voidpf (p
c100: 6f 69 6e 74 65 72 29 0a 20 20 20 20 20 37 2e 36  ointer).     7.6
c110: 3a 20 73 69 7a 65 20 6f 66 20 7a 5f 6f 66 66 5f  : size of z_off_
c120: 74 0a 0a 20 20 20 20 43 6f 6d 70 69 6c 65 72 2c  t..    Compiler,
c130: 20 61 73 73 65 6d 62 6c 65 72 2c 20 61 6e 64 20   assembler, and 
c140: 64 65 62 75 67 20 6f 70 74 69 6f 6e 73 3a 0a 20  debug options:. 
c150: 20 20 20 20 38 3a 20 44 45 42 55 47 0a 20 20 20      8: DEBUG.   
c160: 20 20 39 3a 20 41 53 4d 56 20 6f 72 20 41 53 4d    9: ASMV or ASM
c170: 49 4e 46 20 2d 2d 20 75 73 65 20 41 53 4d 20 63  INF -- use ASM c
c180: 6f 64 65 0a 20 20 20 20 20 31 30 3a 20 5a 4c 49  ode.     10: ZLI
c190: 42 5f 57 49 4e 41 50 49 20 2d 2d 20 65 78 70 6f  B_WINAPI -- expo
c1a0: 72 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 20 75  rted functions u
c1b0: 73 65 20 74 68 65 20 57 49 4e 41 50 49 20 63 61  se the WINAPI ca
c1c0: 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e  lling convention
c1d0: 0a 20 20 20 20 20 31 31 3a 20 30 20 28 72 65 73  .     11: 0 (res
c1e0: 65 72 76 65 64 29 0a 0a 20 20 20 20 4f 6e 65 2d  erved)..    One-
c1f0: 74 69 6d 65 20 74 61 62 6c 65 20 62 75 69 6c 64  time table build
c200: 69 6e 67 20 28 73 6d 61 6c 6c 65 72 20 63 6f 64  ing (smaller cod
c210: 65 2c 20 62 75 74 20 6e 6f 74 20 74 68 72 65 61  e, but not threa
c220: 64 2d 73 61 66 65 20 69 66 20 74 72 75 65 29 3a  d-safe if true):
c230: 0a 20 20 20 20 20 31 32 3a 20 42 55 49 4c 44 46  .     12: BUILDF
c240: 49 58 45 44 20 2d 2d 20 62 75 69 6c 64 20 73 74  IXED -- build st
c250: 61 74 69 63 20 62 6c 6f 63 6b 20 64 65 63 6f 64  atic block decod
c260: 69 6e 67 20 74 61 62 6c 65 73 20 77 68 65 6e 20  ing tables when 
c270: 6e 65 65 64 65 64 0a 20 20 20 20 20 31 33 3a 20  needed.     13: 
c280: 44 59 4e 41 4d 49 43 5f 43 52 43 5f 54 41 42 4c  DYNAMIC_CRC_TABL
c290: 45 20 2d 2d 20 62 75 69 6c 64 20 43 52 43 20 63  E -- build CRC c
c2a0: 61 6c 63 75 6c 61 74 69 6f 6e 20 74 61 62 6c 65  alculation table
c2b0: 73 20 77 68 65 6e 20 6e 65 65 64 65 64 0a 20 20  s when needed.  
c2c0: 20 20 20 31 34 2c 31 35 3a 20 30 20 28 72 65 73     14,15: 0 (res
c2d0: 65 72 76 65 64 29 0a 0a 20 20 20 20 4c 69 62 72  erved)..    Libr
c2e0: 61 72 79 20 63 6f 6e 74 65 6e 74 20 28 69 6e 64  ary content (ind
c2f0: 69 63 61 74 65 73 20 6d 69 73 73 69 6e 67 20 66  icates missing f
c300: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 29 3a 0a 20  unctionality):. 
c310: 20 20 20 20 31 36 3a 20 4e 4f 5f 47 5a 43 4f 4d      16: NO_GZCOM
c320: 50 52 45 53 53 20 2d 2d 20 67 7a 2a 20 66 75 6e  PRESS -- gz* fun
c330: 63 74 69 6f 6e 73 20 63 61 6e 6e 6f 74 20 63 6f  ctions cannot co
c340: 6d 70 72 65 73 73 20 28 74 6f 20 61 76 6f 69 64  mpress (to avoid
c350: 20 6c 69 6e 6b 69 6e 67 0a 20 20 20 20 20 20 20   linking.       
c360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c370: 20 20 20 64 65 66 6c 61 74 65 20 63 6f 64 65 20     deflate code 
c380: 77 68 65 6e 20 6e 6f 74 20 6e 65 65 64 65 64 29  when not needed)
c390: 0a 20 20 20 20 20 31 37 3a 20 4e 4f 5f 47 5a 49  .     17: NO_GZI
c3a0: 50 20 2d 2d 20 64 65 66 6c 61 74 65 20 63 61 6e  P -- deflate can
c3b0: 27 74 20 77 72 69 74 65 20 67 7a 69 70 20 73 74  't write gzip st
c3c0: 72 65 61 6d 73 2c 20 61 6e 64 20 69 6e 66 6c 61  reams, and infla
c3d0: 74 65 20 63 61 6e 27 74 20 64 65 74 65 63 74 0a  te can't detect.
c3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3f0: 20 20 20 20 61 6e 64 20 64 65 63 6f 64 65 20 67      and decode g
c400: 7a 69 70 20 73 74 72 65 61 6d 73 20 28 74 6f 20  zip streams (to 
c410: 61 76 6f 69 64 20 6c 69 6e 6b 69 6e 67 20 63 72  avoid linking cr
c420: 63 20 63 6f 64 65 29 0a 20 20 20 20 20 31 38 2d  c code).     18-
c430: 31 39 3a 20 30 20 28 72 65 73 65 72 76 65 64 29  19: 0 (reserved)
c440: 0a 0a 20 20 20 20 4f 70 65 72 61 74 69 6f 6e 20  ..    Operation 
c450: 76 61 72 69 61 74 69 6f 6e 73 20 28 63 68 61 6e  variations (chan
c460: 67 65 73 20 69 6e 20 6c 69 62 72 61 72 79 20 66  ges in library f
c470: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 29 3a 0a 20  unctionality):. 
c480: 20 20 20 20 32 30 3a 20 50 4b 5a 49 50 5f 42 55      20: PKZIP_BU
c490: 47 5f 57 4f 52 4b 41 52 4f 55 4e 44 20 2d 2d 20  G_WORKAROUND -- 
c4a0: 73 6c 69 67 68 74 6c 79 20 6d 6f 72 65 20 70 65  slightly more pe
c4b0: 72 6d 69 73 73 69 76 65 20 69 6e 66 6c 61 74 65  rmissive inflate
c4c0: 0a 20 20 20 20 20 32 31 3a 20 46 41 53 54 45 53  .     21: FASTES
c4d0: 54 20 2d 2d 20 64 65 66 6c 61 74 65 20 61 6c 67  T -- deflate alg
c4e0: 6f 72 69 74 68 6d 20 77 69 74 68 20 6f 6e 6c 79  orithm with only
c4f0: 20 6f 6e 65 2c 20 6c 6f 77 65 73 74 20 63 6f 6d   one, lowest com
c500: 70 72 65 73 73 69 6f 6e 20 6c 65 76 65 6c 0a 20  pression level. 
c510: 20 20 20 20 32 32 2c 32 33 3a 20 30 20 28 72 65      22,23: 0 (re
c520: 73 65 72 76 65 64 29 0a 0a 20 20 20 20 54 68 65  served)..    The
c530: 20 73 70 72 69 6e 74 66 20 76 61 72 69 61 6e 74   sprintf variant
c540: 20 75 73 65 64 20 62 79 20 67 7a 70 72 69 6e 74   used by gzprint
c550: 66 20 28 7a 65 72 6f 20 69 73 20 62 65 73 74 29  f (zero is best)
c560: 3a 0a 20 20 20 20 20 32 34 3a 20 30 20 3d 20 76  :.     24: 0 = v
c570: 73 2a 2c 20 31 20 3d 20 73 2a 20 2d 2d 20 31 20  s*, 1 = s* -- 1 
c580: 6d 65 61 6e 73 20 6c 69 6d 69 74 65 64 20 74 6f  means limited to
c590: 20 32 30 20 61 72 67 75 6d 65 6e 74 73 20 61 66   20 arguments af
c5a0: 74 65 72 20 74 68 65 20 66 6f 72 6d 61 74 0a 20  ter the format. 
c5b0: 20 20 20 20 32 35 3a 20 30 20 3d 20 2a 6e 70 72      25: 0 = *npr
c5c0: 69 6e 74 66 2c 20 31 20 3d 20 2a 70 72 69 6e 74  intf, 1 = *print
c5d0: 66 20 2d 2d 20 31 20 6d 65 61 6e 73 20 67 7a 70  f -- 1 means gzp
c5e0: 72 69 6e 74 66 28 29 20 6e 6f 74 20 73 65 63 75  rintf() not secu
c5f0: 72 65 21 0a 20 20 20 20 20 32 36 3a 20 30 20 3d  re!.     26: 0 =
c600: 20 72 65 74 75 72 6e 73 20 76 61 6c 75 65 2c 20   returns value, 
c610: 31 20 3d 20 76 6f 69 64 20 2d 2d 20 31 20 6d 65  1 = void -- 1 me
c620: 61 6e 73 20 69 6e 66 65 72 72 65 64 20 73 74 72  ans inferred str
c630: 69 6e 67 20 6c 65 6e 67 74 68 20 72 65 74 75 72  ing length retur
c640: 6e 65 64 0a 0a 20 20 20 20 52 65 6d 61 69 6e 64  ned..    Remaind
c650: 65 72 3a 0a 20 20 20 20 20 32 37 2d 33 31 3a 20  er:.     27-31: 
c660: 30 20 28 72 65 73 65 72 76 65 64 29 0a 20 2a 2f  0 (reserved). */
c670: 0a 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c680: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 75 74             /* ut
c690: 69 6c 69 74 79 20 66 75 6e 63 74 69 6f 6e 73 20  ility functions 
c6a0: 2a 2f 0a 0a 2f 2a 0a 20 20 20 20 20 54 68 65 20  */../*.     The 
c6b0: 66 6f 6c 6c 6f 77 69 6e 67 20 75 74 69 6c 69 74  following utilit
c6c0: 79 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20  y functions are 
c6d0: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 6f 6e 20 74  implemented on t
c6e0: 6f 70 20 6f 66 20 74 68 65 0a 20 20 20 62 61 73  op of the.   bas
c6f0: 69 63 20 73 74 72 65 61 6d 2d 6f 72 69 65 6e 74  ic stream-orient
c700: 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 20 54 6f  ed functions. To
c710: 20 73 69 6d 70 6c 69 66 79 20 74 68 65 20 69 6e   simplify the in
c720: 74 65 72 66 61 63 65 2c 20 73 6f 6d 65 0a 20 20  terface, some.  
c730: 20 64 65 66 61 75 6c 74 20 6f 70 74 69 6f 6e 73   default options
c740: 20 61 72 65 20 61 73 73 75 6d 65 64 20 28 63 6f   are assumed (co
c750: 6d 70 72 65 73 73 69 6f 6e 20 6c 65 76 65 6c 20  mpression level 
c760: 61 6e 64 20 6d 65 6d 6f 72 79 20 75 73 61 67 65  and memory usage
c770: 2c 0a 20 20 20 73 74 61 6e 64 61 72 64 20 6d 65  ,.   standard me
c780: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  mory allocation 
c790: 66 75 6e 63 74 69 6f 6e 73 29 2e 20 54 68 65 20  functions). The 
c7a0: 73 6f 75 72 63 65 20 63 6f 64 65 20 6f 66 20 74  source code of t
c7b0: 68 65 73 65 0a 20 20 20 75 74 69 6c 69 74 79 20  hese.   utility 
c7c0: 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 65 61  functions can ea
c7d0: 73 69 6c 79 20 62 65 20 6d 6f 64 69 66 69 65 64  sily be modified
c7e0: 20 69 66 20 79 6f 75 20 6e 65 65 64 20 73 70 65   if you need spe
c7f0: 63 69 61 6c 20 6f 70 74 69 6f 6e 73 2e 0a 2a 2f  cial options..*/
c800: 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45  ..ZEXTERN int ZE
c810: 58 50 4f 52 54 20 63 6f 6d 70 72 65 73 73 20 4f  XPORT compress O
c820: 46 28 28 42 79 74 65 66 20 2a 64 65 73 74 2c 20  F((Bytef *dest, 
c830: 20 20 75 4c 6f 6e 67 66 20 2a 64 65 73 74 4c 65    uLongf *destLe
c840: 6e 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n,.             
c850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c860: 20 20 20 20 63 6f 6e 73 74 20 42 79 74 65 66 20      const Bytef 
c870: 2a 73 6f 75 72 63 65 2c 20 75 4c 6f 6e 67 20 73  *source, uLong s
c880: 6f 75 72 63 65 4c 65 6e 29 29 3b 0a 2f 2a 0a 20  ourceLen));./*. 
c890: 20 20 20 20 43 6f 6d 70 72 65 73 73 65 73 20 74      Compresses t
c8a0: 68 65 20 73 6f 75 72 63 65 20 62 75 66 66 65 72  he source buffer
c8b0: 20 69 6e 74 6f 20 74 68 65 20 64 65 73 74 69 6e   into the destin
c8c0: 61 74 69 6f 6e 20 62 75 66 66 65 72 2e 20 20 73  ation buffer.  s
c8d0: 6f 75 72 63 65 4c 65 6e 20 69 73 0a 20 20 20 74  ourceLen is.   t
c8e0: 68 65 20 62 79 74 65 20 6c 65 6e 67 74 68 20 6f  he byte length o
c8f0: 66 20 74 68 65 20 73 6f 75 72 63 65 20 62 75 66  f the source buf
c900: 66 65 72 2e 20 55 70 6f 6e 20 65 6e 74 72 79 2c  fer. Upon entry,
c910: 20 64 65 73 74 4c 65 6e 20 69 73 20 74 68 65 20   destLen is the 
c920: 74 6f 74 61 6c 0a 20 20 20 73 69 7a 65 20 6f 66  total.   size of
c930: 20 74 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e   the destination
c940: 20 62 75 66 66 65 72 2c 20 77 68 69 63 68 20 6d   buffer, which m
c950: 75 73 74 20 62 65 20 61 74 20 6c 65 61 73 74 20  ust be at least 
c960: 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  the value return
c970: 65 64 0a 20 20 20 62 79 20 63 6f 6d 70 72 65 73  ed.   by compres
c980: 73 42 6f 75 6e 64 28 73 6f 75 72 63 65 4c 65 6e  sBound(sourceLen
c990: 29 2e 20 55 70 6f 6e 20 65 78 69 74 2c 20 64 65  ). Upon exit, de
c9a0: 73 74 4c 65 6e 20 69 73 20 74 68 65 20 61 63 74  stLen is the act
c9b0: 75 61 6c 20 73 69 7a 65 20 6f 66 20 74 68 65 0a  ual size of the.
c9c0: 20 20 20 63 6f 6d 70 72 65 73 73 65 64 20 62 75     compressed bu
c9d0: 66 66 65 72 2e 0a 20 20 20 20 20 54 68 69 73 20  ffer..     This 
c9e0: 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20  function can be 
c9f0: 75 73 65 64 20 74 6f 20 63 6f 6d 70 72 65 73 73  used to compress
ca00: 20 61 20 77 68 6f 6c 65 20 66 69 6c 65 20 61 74   a whole file at
ca10: 20 6f 6e 63 65 20 69 66 20 74 68 65 0a 20 20 20   once if the.   
ca20: 69 6e 70 75 74 20 66 69 6c 65 20 69 73 20 6d 6d  input file is mm
ca30: 61 70 27 65 64 2e 0a 20 20 20 20 20 63 6f 6d 70  ap'ed..     comp
ca40: 72 65 73 73 20 72 65 74 75 72 6e 73 20 5a 5f 4f  ress returns Z_O
ca50: 4b 20 69 66 20 73 75 63 63 65 73 73 2c 20 5a 5f  K if success, Z_
ca60: 4d 45 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65  MEM_ERROR if the
ca70: 72 65 20 77 61 73 20 6e 6f 74 0a 20 20 20 65 6e  re was not.   en
ca80: 6f 75 67 68 20 6d 65 6d 6f 72 79 2c 20 5a 5f 42  ough memory, Z_B
ca90: 55 46 5f 45 52 52 4f 52 20 69 66 20 74 68 65 72  UF_ERROR if ther
caa0: 65 20 77 61 73 20 6e 6f 74 20 65 6e 6f 75 67 68  e was not enough
cab0: 20 72 6f 6f 6d 20 69 6e 20 74 68 65 20 6f 75 74   room in the out
cac0: 70 75 74 0a 20 20 20 62 75 66 66 65 72 2e 0a 2a  put.   buffer..*
cad0: 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a  /..ZEXTERN int Z
cae0: 45 58 50 4f 52 54 20 63 6f 6d 70 72 65 73 73 32  EXPORT compress2
caf0: 20 4f 46 28 28 42 79 74 65 66 20 2a 64 65 73 74   OF((Bytef *dest
cb00: 2c 20 20 20 75 4c 6f 6e 67 66 20 2a 64 65 73 74  ,   uLongf *dest
cb10: 4c 65 6e 2c 0a 20 20 20 20 20 20 20 20 20 20 20  Len,.           
cb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb30: 20 20 20 20 20 20 20 63 6f 6e 73 74 20 42 79 74         const Byt
cb40: 65 66 20 2a 73 6f 75 72 63 65 2c 20 75 4c 6f 6e  ef *source, uLon
cb50: 67 20 73 6f 75 72 63 65 4c 65 6e 2c 0a 20 20 20  g sourceLen,.   
cb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
cb80: 6e 74 20 6c 65 76 65 6c 29 29 3b 0a 2f 2a 0a 20  nt level));./*. 
cb90: 20 20 20 20 43 6f 6d 70 72 65 73 73 65 73 20 74      Compresses t
cba0: 68 65 20 73 6f 75 72 63 65 20 62 75 66 66 65 72  he source buffer
cbb0: 20 69 6e 74 6f 20 74 68 65 20 64 65 73 74 69 6e   into the destin
cbc0: 61 74 69 6f 6e 20 62 75 66 66 65 72 2e 20 54 68  ation buffer. Th
cbd0: 65 20 6c 65 76 65 6c 0a 20 20 20 70 61 72 61 6d  e level.   param
cbe0: 65 74 65 72 20 68 61 73 20 74 68 65 20 73 61 6d  eter has the sam
cbf0: 65 20 6d 65 61 6e 69 6e 67 20 61 73 20 69 6e 20  e meaning as in 
cc00: 64 65 66 6c 61 74 65 49 6e 69 74 2e 20 20 73 6f  deflateInit.  so
cc10: 75 72 63 65 4c 65 6e 20 69 73 20 74 68 65 20 62  urceLen is the b
cc20: 79 74 65 0a 20 20 20 6c 65 6e 67 74 68 20 6f 66  yte.   length of
cc30: 20 74 68 65 20 73 6f 75 72 63 65 20 62 75 66 66   the source buff
cc40: 65 72 2e 20 55 70 6f 6e 20 65 6e 74 72 79 2c 20  er. Upon entry, 
cc50: 64 65 73 74 4c 65 6e 20 69 73 20 74 68 65 20 74  destLen is the t
cc60: 6f 74 61 6c 20 73 69 7a 65 20 6f 66 20 74 68 65  otal size of the
cc70: 0a 20 20 20 64 65 73 74 69 6e 61 74 69 6f 6e 20  .   destination 
cc80: 62 75 66 66 65 72 2c 20 77 68 69 63 68 20 6d 75  buffer, which mu
cc90: 73 74 20 62 65 20 61 74 20 6c 65 61 73 74 20 74  st be at least t
cca0: 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65  he value returne
ccb0: 64 20 62 79 0a 20 20 20 63 6f 6d 70 72 65 73 73  d by.   compress
ccc0: 42 6f 75 6e 64 28 73 6f 75 72 63 65 4c 65 6e 29  Bound(sourceLen)
ccd0: 2e 20 55 70 6f 6e 20 65 78 69 74 2c 20 64 65 73  . Upon exit, des
cce0: 74 4c 65 6e 20 69 73 20 74 68 65 20 61 63 74 75  tLen is the actu
ccf0: 61 6c 20 73 69 7a 65 20 6f 66 20 74 68 65 0a 20  al size of the. 
cd00: 20 20 63 6f 6d 70 72 65 73 73 65 64 20 62 75 66    compressed buf
cd10: 66 65 72 2e 0a 0a 20 20 20 20 20 63 6f 6d 70 72  fer...     compr
cd20: 65 73 73 32 20 72 65 74 75 72 6e 73 20 5a 5f 4f  ess2 returns Z_O
cd30: 4b 20 69 66 20 73 75 63 63 65 73 73 2c 20 5a 5f  K if success, Z_
cd40: 4d 45 4d 5f 45 52 52 4f 52 20 69 66 20 74 68 65  MEM_ERROR if the
cd50: 72 65 20 77 61 73 20 6e 6f 74 20 65 6e 6f 75 67  re was not enoug
cd60: 68 0a 20 20 20 6d 65 6d 6f 72 79 2c 20 5a 5f 42  h.   memory, Z_B
cd70: 55 46 5f 45 52 52 4f 52 20 69 66 20 74 68 65 72  UF_ERROR if ther
cd80: 65 20 77 61 73 20 6e 6f 74 20 65 6e 6f 75 67 68  e was not enough
cd90: 20 72 6f 6f 6d 20 69 6e 20 74 68 65 20 6f 75 74   room in the out
cda0: 70 75 74 20 62 75 66 66 65 72 2c 0a 20 20 20 5a  put buffer,.   Z
cdb0: 5f 53 54 52 45 41 4d 5f 45 52 52 4f 52 20 69 66  _STREAM_ERROR if
cdc0: 20 74 68 65 20 6c 65 76 65 6c 20 70 61 72 61 6d   the level param
cdd0: 65 74 65 72 20 69 73 20 69 6e 76 61 6c 69 64 2e  eter is invalid.
cde0: 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 75 4c 6f  .*/..ZEXTERN uLo
cdf0: 6e 67 20 5a 45 58 50 4f 52 54 20 63 6f 6d 70 72  ng ZEXPORT compr
ce00: 65 73 73 42 6f 75 6e 64 20 4f 46 28 28 75 4c 6f  essBound OF((uLo
ce10: 6e 67 20 73 6f 75 72 63 65 4c 65 6e 29 29 3b 0a  ng sourceLen));.
ce20: 2f 2a 0a 20 20 20 20 20 63 6f 6d 70 72 65 73 73  /*.     compress
ce30: 42 6f 75 6e 64 28 29 20 72 65 74 75 72 6e 73 20  Bound() returns 
ce40: 61 6e 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f  an upper bound o
ce50: 6e 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65 64  n the compressed
ce60: 20 73 69 7a 65 20 61 66 74 65 72 0a 20 20 20 63   size after.   c
ce70: 6f 6d 70 72 65 73 73 28 29 20 6f 72 20 63 6f 6d  ompress() or com
ce80: 70 72 65 73 73 32 28 29 20 6f 6e 20 73 6f 75 72  press2() on sour
ce90: 63 65 4c 65 6e 20 62 79 74 65 73 2e 20 20 49 74  ceLen bytes.  It
cea0: 20 77 6f 75 6c 64 20 62 65 20 75 73 65 64 20 62   would be used b
ceb0: 65 66 6f 72 65 0a 20 20 20 61 20 63 6f 6d 70 72  efore.   a compr
cec0: 65 73 73 28 29 20 6f 72 20 63 6f 6d 70 72 65 73  ess() or compres
ced0: 73 32 28 29 20 63 61 6c 6c 20 74 6f 20 61 6c 6c  s2() call to all
cee0: 6f 63 61 74 65 20 74 68 65 20 64 65 73 74 69 6e  ocate the destin
cef0: 61 74 69 6f 6e 20 62 75 66 66 65 72 2e 0a 2a 2f  ation buffer..*/
cf00: 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45  ..ZEXTERN int ZE
cf10: 58 50 4f 52 54 20 75 6e 63 6f 6d 70 72 65 73 73  XPORT uncompress
cf20: 20 4f 46 28 28 42 79 74 65 66 20 2a 64 65 73 74   OF((Bytef *dest
cf30: 2c 20 20 20 75 4c 6f 6e 67 66 20 2a 64 65 73 74  ,   uLongf *dest
cf40: 4c 65 6e 2c 0a 20 20 20 20 20 20 20 20 20 20 20  Len,.           
cf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf60: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 42 79          const By
cf70: 74 65 66 20 2a 73 6f 75 72 63 65 2c 20 75 4c 6f  tef *source, uLo
cf80: 6e 67 20 73 6f 75 72 63 65 4c 65 6e 29 29 3b 0a  ng sourceLen));.
cf90: 2f 2a 0a 20 20 20 20 20 44 65 63 6f 6d 70 72 65  /*.     Decompre
cfa0: 73 73 65 73 20 74 68 65 20 73 6f 75 72 63 65 20  sses the source 
cfb0: 62 75 66 66 65 72 20 69 6e 74 6f 20 74 68 65 20  buffer into the 
cfc0: 64 65 73 74 69 6e 61 74 69 6f 6e 20 62 75 66 66  destination buff
cfd0: 65 72 2e 20 20 73 6f 75 72 63 65 4c 65 6e 20 69  er.  sourceLen i
cfe0: 73 0a 20 20 20 74 68 65 20 62 79 74 65 20 6c 65  s.   the byte le
cff0: 6e 67 74 68 20 6f 66 20 74 68 65 20 73 6f 75 72  ngth of the sour
d000: 63 65 20 62 75 66 66 65 72 2e 20 55 70 6f 6e 20  ce buffer. Upon 
d010: 65 6e 74 72 79 2c 20 64 65 73 74 4c 65 6e 20 69  entry, destLen i
d020: 73 20 74 68 65 20 74 6f 74 61 6c 0a 20 20 20 73  s the total.   s
d030: 69 7a 65 20 6f 66 20 74 68 65 20 64 65 73 74 69  ize of the desti
d040: 6e 61 74 69 6f 6e 20 62 75 66 66 65 72 2c 20 77  nation buffer, w
d050: 68 69 63 68 20 6d 75 73 74 20 62 65 20 6c 61 72  hich must be lar
d060: 67 65 20 65 6e 6f 75 67 68 20 74 6f 20 68 6f 6c  ge enough to hol
d070: 64 20 74 68 65 0a 20 20 20 65 6e 74 69 72 65 20  d the.   entire 
d080: 75 6e 63 6f 6d 70 72 65 73 73 65 64 20 64 61 74  uncompressed dat
d090: 61 2e 20 28 54 68 65 20 73 69 7a 65 20 6f 66 20  a. (The size of 
d0a0: 74 68 65 20 75 6e 63 6f 6d 70 72 65 73 73 65 64  the uncompressed
d0b0: 20 64 61 74 61 20 6d 75 73 74 20 68 61 76 65 0a   data must have.
d0c0: 20 20 20 62 65 65 6e 20 73 61 76 65 64 20 70 72     been saved pr
d0d0: 65 76 69 6f 75 73 6c 79 20 62 79 20 74 68 65 20  eviously by the 
d0e0: 63 6f 6d 70 72 65 73 73 6f 72 20 61 6e 64 20 74  compressor and t
d0f0: 72 61 6e 73 6d 69 74 74 65 64 20 74 6f 20 74 68  ransmitted to th
d100: 65 20 64 65 63 6f 6d 70 72 65 73 73 6f 72 0a 20  e decompressor. 
d110: 20 20 62 79 20 73 6f 6d 65 20 6d 65 63 68 61 6e    by some mechan
d120: 69 73 6d 20 6f 75 74 73 69 64 65 20 74 68 65 20  ism outside the 
d130: 73 63 6f 70 65 20 6f 66 20 74 68 69 73 20 63 6f  scope of this co
d140: 6d 70 72 65 73 73 69 6f 6e 20 6c 69 62 72 61 72  mpression librar
d150: 79 2e 29 0a 20 20 20 55 70 6f 6e 20 65 78 69 74  y.).   Upon exit
d160: 2c 20 64 65 73 74 4c 65 6e 20 69 73 20 74 68 65  , destLen is the
d170: 20 61 63 74 75 61 6c 20 73 69 7a 65 20 6f 66 20   actual size of 
d180: 74 68 65 20 63 6f 6d 70 72 65 73 73 65 64 20 62  the compressed b
d190: 75 66 66 65 72 2e 0a 20 20 20 20 20 54 68 69 73  uffer..     This
d1a0: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65   function can be
d1b0: 20 75 73 65 64 20 74 6f 20 64 65 63 6f 6d 70 72   used to decompr
d1c0: 65 73 73 20 61 20 77 68 6f 6c 65 20 66 69 6c 65  ess a whole file
d1d0: 20 61 74 20 6f 6e 63 65 20 69 66 20 74 68 65 0a   at once if the.
d1e0: 20 20 20 69 6e 70 75 74 20 66 69 6c 65 20 69 73     input file is
d1f0: 20 6d 6d 61 70 27 65 64 2e 0a 0a 20 20 20 20 20   mmap'ed...     
d200: 75 6e 63 6f 6d 70 72 65 73 73 20 72 65 74 75 72  uncompress retur
d210: 6e 73 20 5a 5f 4f 4b 20 69 66 20 73 75 63 63 65  ns Z_OK if succe
d220: 73 73 2c 20 5a 5f 4d 45 4d 5f 45 52 52 4f 52 20  ss, Z_MEM_ERROR 
d230: 69 66 20 74 68 65 72 65 20 77 61 73 20 6e 6f 74  if there was not
d240: 0a 20 20 20 65 6e 6f 75 67 68 20 6d 65 6d 6f 72  .   enough memor
d250: 79 2c 20 5a 5f 42 55 46 5f 45 52 52 4f 52 20 69  y, Z_BUF_ERROR i
d260: 66 20 74 68 65 72 65 20 77 61 73 20 6e 6f 74 20  f there was not 
d270: 65 6e 6f 75 67 68 20 72 6f 6f 6d 20 69 6e 20 74  enough room in t
d280: 68 65 20 6f 75 74 70 75 74 0a 20 20 20 62 75 66  he output.   buf
d290: 66 65 72 2c 20 6f 72 20 5a 5f 44 41 54 41 5f 45  fer, or Z_DATA_E
d2a0: 52 52 4f 52 20 69 66 20 74 68 65 20 69 6e 70 75  RROR if the inpu
d2b0: 74 20 64 61 74 61 20 77 61 73 20 63 6f 72 72 75  t data was corru
d2c0: 70 74 65 64 20 6f 72 20 69 6e 63 6f 6d 70 6c 65  pted or incomple
d2d0: 74 65 2e 0a 2a 2f 0a 0a 0a 74 79 70 65 64 65 66  te..*/...typedef
d2e0: 20 76 6f 69 64 70 20 67 7a 46 69 6c 65 3b 0a 0a   voidp gzFile;..
d2f0: 5a 45 58 54 45 52 4e 20 67 7a 46 69 6c 65 20 5a  ZEXTERN gzFile Z
d300: 45 58 50 4f 52 54 20 67 7a 6f 70 65 6e 20 20 4f  EXPORT gzopen  O
d310: 46 28 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 70  F((const char *p
d320: 61 74 68 2c 20 63 6f 6e 73 74 20 63 68 61 72 20  ath, const char 
d330: 2a 6d 6f 64 65 29 29 3b 0a 2f 2a 0a 20 20 20 20  *mode));./*.    
d340: 20 4f 70 65 6e 73 20 61 20 67 7a 69 70 20 28 2e   Opens a gzip (.
d350: 67 7a 29 20 66 69 6c 65 20 66 6f 72 20 72 65 61  gz) file for rea
d360: 64 69 6e 67 20 6f 72 20 77 72 69 74 69 6e 67 2e  ding or writing.
d370: 20 54 68 65 20 6d 6f 64 65 20 70 61 72 61 6d 65   The mode parame
d380: 74 65 72 0a 20 20 20 69 73 20 61 73 20 69 6e 20  ter.   is as in 
d390: 66 6f 70 65 6e 20 28 22 72 62 22 20 6f 72 20 22  fopen ("rb" or "
d3a0: 77 62 22 29 20 62 75 74 20 63 61 6e 20 61 6c 73  wb") but can als
d3b0: 6f 20 69 6e 63 6c 75 64 65 20 61 20 63 6f 6d 70  o include a comp
d3c0: 72 65 73 73 69 6f 6e 20 6c 65 76 65 6c 0a 20 20  ression level.  
d3d0: 20 28 22 77 62 39 22 29 20 6f 72 20 61 20 73 74   ("wb9") or a st
d3e0: 72 61 74 65 67 79 3a 20 27 66 27 20 66 6f 72 20  rategy: 'f' for 
d3f0: 66 69 6c 74 65 72 65 64 20 64 61 74 61 20 61 73  filtered data as
d400: 20 69 6e 20 22 77 62 36 66 22 2c 20 27 68 27 20   in "wb6f", 'h' 
d410: 66 6f 72 0a 20 20 20 48 75 66 66 6d 61 6e 20 6f  for.   Huffman o
d420: 6e 6c 79 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20  nly compression 
d430: 61 73 20 69 6e 20 22 77 62 31 68 22 2c 20 6f 72  as in "wb1h", or
d440: 20 27 52 27 20 66 6f 72 20 72 75 6e 2d 6c 65 6e   'R' for run-len
d450: 67 74 68 20 65 6e 63 6f 64 69 6e 67 0a 20 20 20  gth encoding.   
d460: 61 73 20 69 6e 20 22 77 62 31 52 22 2e 20 28 53  as in "wb1R". (S
d470: 65 65 20 74 68 65 20 64 65 73 63 72 69 70 74 69  ee the descripti
d480: 6f 6e 20 6f 66 20 64 65 66 6c 61 74 65 49 6e 69  on of deflateIni
d490: 74 32 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f  t2 for more info
d4a0: 72 6d 61 74 69 6f 6e 0a 20 20 20 61 62 6f 75 74  rmation.   about
d4b0: 20 74 68 65 20 73 74 72 61 74 65 67 79 20 70 61   the strategy pa
d4c0: 72 61 6d 65 74 65 72 2e 29 0a 0a 20 20 20 20 20  rameter.)..     
d4d0: 67 7a 6f 70 65 6e 20 63 61 6e 20 62 65 20 75 73  gzopen can be us
d4e0: 65 64 20 74 6f 20 72 65 61 64 20 61 20 66 69 6c  ed to read a fil
d4f0: 65 20 77 68 69 63 68 20 69 73 20 6e 6f 74 20 69  e which is not i
d500: 6e 20 67 7a 69 70 20 66 6f 72 6d 61 74 3b 20 69  n gzip format; i
d510: 6e 20 74 68 69 73 0a 20 20 20 63 61 73 65 20 67  n this.   case g
d520: 7a 72 65 61 64 20 77 69 6c 6c 20 64 69 72 65 63  zread will direc
d530: 74 6c 79 20 72 65 61 64 20 66 72 6f 6d 20 74 68  tly read from th
d540: 65 20 66 69 6c 65 20 77 69 74 68 6f 75 74 20 64  e file without d
d550: 65 63 6f 6d 70 72 65 73 73 69 6f 6e 2e 0a 0a 20  ecompression... 
d560: 20 20 20 20 67 7a 6f 70 65 6e 20 72 65 74 75 72      gzopen retur
d570: 6e 73 20 4e 55 4c 4c 20 69 66 20 74 68 65 20 66  ns NULL if the f
d580: 69 6c 65 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65  ile could not be
d590: 20 6f 70 65 6e 65 64 20 6f 72 20 69 66 20 74 68   opened or if th
d5a0: 65 72 65 20 77 61 73 0a 20 20 20 69 6e 73 75 66  ere was.   insuf
d5b0: 66 69 63 69 65 6e 74 20 6d 65 6d 6f 72 79 20 74  ficient memory t
d5c0: 6f 20 61 6c 6c 6f 63 61 74 65 20 74 68 65 20 28  o allocate the (
d5d0: 64 65 29 63 6f 6d 70 72 65 73 73 69 6f 6e 20 73  de)compression s
d5e0: 74 61 74 65 3b 20 65 72 72 6e 6f 0a 20 20 20 63  tate; errno.   c
d5f0: 61 6e 20 62 65 20 63 68 65 63 6b 65 64 20 74 6f  an be checked to
d600: 20 64 69 73 74 69 6e 67 75 69 73 68 20 74 68 65   distinguish the
d610: 20 74 77 6f 20 63 61 73 65 73 20 28 69 66 20 65   two cases (if e
d620: 72 72 6e 6f 20 69 73 20 7a 65 72 6f 2c 20 74 68  rrno is zero, th
d630: 65 0a 20 20 20 7a 6c 69 62 20 65 72 72 6f 72 20  e.   zlib error 
d640: 69 73 20 5a 5f 4d 45 4d 5f 45 52 52 4f 52 29 2e  is Z_MEM_ERROR).
d650: 20 20 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 67 7a    */..ZEXTERN gz
d660: 46 69 6c 65 20 5a 45 58 50 4f 52 54 20 67 7a 64  File ZEXPORT gzd
d670: 6f 70 65 6e 20 20 4f 46 28 28 69 6e 74 20 66 64  open  OF((int fd
d680: 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6d 6f  , const char *mo
d690: 64 65 29 29 3b 0a 2f 2a 0a 20 20 20 20 20 67 7a  de));./*.     gz
d6a0: 64 6f 70 65 6e 28 29 20 61 73 73 6f 63 69 61 74  dopen() associat
d6b0: 65 73 20 61 20 67 7a 46 69 6c 65 20 77 69 74 68  es a gzFile with
d6c0: 20 74 68 65 20 66 69 6c 65 20 64 65 73 63 72 69   the file descri
d6d0: 70 74 6f 72 20 66 64 2e 20 20 46 69 6c 65 0a 20  ptor fd.  File. 
d6e0: 20 20 64 65 73 63 72 69 70 74 6f 72 73 20 61 72    descriptors ar
d6f0: 65 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  e obtained from 
d700: 63 61 6c 6c 73 20 6c 69 6b 65 20 6f 70 65 6e 2c  calls like open,
d710: 20 64 75 70 2c 20 63 72 65 61 74 2c 20 70 69 70   dup, creat, pip
d720: 65 20 6f 72 0a 20 20 20 66 69 6c 65 6e 6f 20 28  e or.   fileno (
d730: 69 6e 20 74 68 65 20 66 69 6c 65 20 68 61 73 20  in the file has 
d740: 62 65 65 6e 20 70 72 65 76 69 6f 75 73 6c 79 20  been previously 
d750: 6f 70 65 6e 65 64 20 77 69 74 68 20 66 6f 70 65  opened with fope
d760: 6e 29 2e 0a 20 20 20 54 68 65 20 6d 6f 64 65 20  n)..   The mode 
d770: 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 73 20  parameter is as 
d780: 69 6e 20 67 7a 6f 70 65 6e 2e 0a 20 20 20 20 20  in gzopen..     
d790: 54 68 65 20 6e 65 78 74 20 63 61 6c 6c 20 6f 66  The next call of
d7a0: 20 67 7a 63 6c 6f 73 65 20 6f 6e 20 74 68 65 20   gzclose on the 
d7b0: 72 65 74 75 72 6e 65 64 20 67 7a 46 69 6c 65 20  returned gzFile 
d7c0: 77 69 6c 6c 20 61 6c 73 6f 20 63 6c 6f 73 65 20  will also close 
d7d0: 74 68 65 0a 20 20 20 66 69 6c 65 20 64 65 73 63  the.   file desc
d7e0: 72 69 70 74 6f 72 20 66 64 2c 20 6a 75 73 74 20  riptor fd, just 
d7f0: 6c 69 6b 65 20 66 63 6c 6f 73 65 28 66 64 6f 70  like fclose(fdop
d800: 65 6e 28 66 64 29 2c 20 6d 6f 64 65 29 20 63 6c  en(fd), mode) cl
d810: 6f 73 65 73 20 74 68 65 20 66 69 6c 65 0a 20 20  oses the file.  
d820: 20 64 65 73 63 72 69 70 74 6f 72 20 66 64 2e 20   descriptor fd. 
d830: 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 6b  If you want to k
d840: 65 65 70 20 66 64 20 6f 70 65 6e 2c 20 75 73 65  eep fd open, use
d850: 20 67 7a 64 6f 70 65 6e 28 64 75 70 28 66 64 29   gzdopen(dup(fd)
d860: 2c 20 6d 6f 64 65 29 2e 0a 20 20 20 20 20 67 7a  , mode)..     gz
d870: 64 6f 70 65 6e 20 72 65 74 75 72 6e 73 20 4e 55  dopen returns NU
d880: 4c 4c 20 69 66 20 74 68 65 72 65 20 77 61 73 20  LL if there was 
d890: 69 6e 73 75 66 66 69 63 69 65 6e 74 20 6d 65 6d  insufficient mem
d8a0: 6f 72 79 20 74 6f 20 61 6c 6c 6f 63 61 74 65 0a  ory to allocate.
d8b0: 20 20 20 74 68 65 20 28 64 65 29 63 6f 6d 70 72     the (de)compr
d8c0: 65 73 73 69 6f 6e 20 73 74 61 74 65 2e 0a 2a 2f  ession state..*/
d8d0: 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45  ..ZEXTERN int ZE
d8e0: 58 50 4f 52 54 20 67 7a 73 65 74 70 61 72 61 6d  XPORT gzsetparam
d8f0: 73 20 4f 46 28 28 67 7a 46 69 6c 65 20 66 69 6c  s OF((gzFile fil
d900: 65 2c 20 69 6e 74 20 6c 65 76 65 6c 2c 20 69 6e  e, int level, in
d910: 74 20 73 74 72 61 74 65 67 79 29 29 3b 0a 2f 2a  t strategy));./*
d920: 0a 20 20 20 20 20 44 79 6e 61 6d 69 63 61 6c 6c  .     Dynamicall
d930: 79 20 75 70 64 61 74 65 20 74 68 65 20 63 6f 6d  y update the com
d940: 70 72 65 73 73 69 6f 6e 20 6c 65 76 65 6c 20 6f  pression level o
d950: 72 20 73 74 72 61 74 65 67 79 2e 20 53 65 65 20  r strategy. See 
d960: 74 68 65 20 64 65 73 63 72 69 70 74 69 6f 6e 0a  the description.
d970: 20 20 20 6f 66 20 64 65 66 6c 61 74 65 49 6e 69     of deflateIni
d980: 74 32 20 66 6f 72 20 74 68 65 20 6d 65 61 6e 69  t2 for the meani
d990: 6e 67 20 6f 66 20 74 68 65 73 65 20 70 61 72 61  ng of these para
d9a0: 6d 65 74 65 72 73 2e 0a 20 20 20 20 20 67 7a 73  meters..     gzs
d9b0: 65 74 70 61 72 61 6d 73 20 72 65 74 75 72 6e 73  etparams returns
d9c0: 20 5a 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73   Z_OK if success
d9d0: 2c 20 6f 72 20 5a 5f 53 54 52 45 41 4d 5f 45 52  , or Z_STREAM_ER
d9e0: 52 4f 52 20 69 66 20 74 68 65 20 66 69 6c 65 20  ROR if the file 
d9f0: 77 61 73 20 6e 6f 74 0a 20 20 20 6f 70 65 6e 65  was not.   opene
da00: 64 20 66 6f 72 20 77 72 69 74 69 6e 67 2e 0a 2a  d for writing..*
da10: 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a  /..ZEXTERN int Z
da20: 45 58 50 4f 52 54 20 20 20 20 67 7a 72 65 61 64  EXPORT    gzread
da30: 20 20 4f 46 28 28 67 7a 46 69 6c 65 20 66 69 6c    OF((gzFile fil
da40: 65 2c 20 76 6f 69 64 70 20 62 75 66 2c 20 75 6e  e, voidp buf, un
da50: 73 69 67 6e 65 64 20 6c 65 6e 29 29 3b 0a 2f 2a  signed len));./*
da60: 0a 20 20 20 20 20 52 65 61 64 73 20 74 68 65 20  .     Reads the 
da70: 67 69 76 65 6e 20 6e 75 6d 62 65 72 20 6f 66 20  given number of 
da80: 75 6e 63 6f 6d 70 72 65 73 73 65 64 20 62 79 74  uncompressed byt
da90: 65 73 20 66 72 6f 6d 20 74 68 65 20 63 6f 6d 70  es from the comp
daa0: 72 65 73 73 65 64 20 66 69 6c 65 2e 0a 20 20 20  ressed file..   
dab0: 49 66 20 74 68 65 20 69 6e 70 75 74 20 66 69 6c  If the input fil
dac0: 65 20 77 61 73 20 6e 6f 74 20 69 6e 20 67 7a 69  e was not in gzi
dad0: 70 20 66 6f 72 6d 61 74 2c 20 67 7a 72 65 61 64  p format, gzread
dae0: 20 63 6f 70 69 65 73 20 74 68 65 20 67 69 76 65   copies the give
daf0: 6e 20 6e 75 6d 62 65 72 0a 20 20 20 6f 66 20 62  n number.   of b
db00: 79 74 65 73 20 69 6e 74 6f 20 74 68 65 20 62 75  ytes into the bu
db10: 66 66 65 72 2e 0a 20 20 20 20 20 67 7a 72 65 61  ffer..     gzrea
db20: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  d returns the nu
db30: 6d 62 65 72 20 6f 66 20 75 6e 63 6f 6d 70 72 65  mber of uncompre
db40: 73 73 65 64 20 62 79 74 65 73 20 61 63 74 75 61  ssed bytes actua
db50: 6c 6c 79 20 72 65 61 64 20 28 30 20 66 6f 72 0a  lly read (0 for.
db60: 20 20 20 65 6e 64 20 6f 66 20 66 69 6c 65 2c 20     end of file, 
db70: 2d 31 20 66 6f 72 20 65 72 72 6f 72 29 2e 20 2a  -1 for error). *
db80: 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a  /..ZEXTERN int Z
db90: 45 58 50 4f 52 54 20 20 20 20 67 7a 77 72 69 74  EXPORT    gzwrit
dba0: 65 20 4f 46 28 28 67 7a 46 69 6c 65 20 66 69 6c  e OF((gzFile fil
dbb0: 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e,.             
dbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbd0: 20 20 20 20 20 20 76 6f 69 64 70 63 20 62 75 66        voidpc buf
dbe0: 2c 20 75 6e 73 69 67 6e 65 64 20 6c 65 6e 29 29  , unsigned len))
dbf0: 3b 0a 2f 2a 0a 20 20 20 20 20 57 72 69 74 65 73  ;./*.     Writes
dc00: 20 74 68 65 20 67 69 76 65 6e 20 6e 75 6d 62 65   the given numbe
dc10: 72 20 6f 66 20 75 6e 63 6f 6d 70 72 65 73 73 65  r of uncompresse
dc20: 64 20 62 79 74 65 73 20 69 6e 74 6f 20 74 68 65  d bytes into the
dc30: 20 63 6f 6d 70 72 65 73 73 65 64 20 66 69 6c 65   compressed file
dc40: 2e 0a 20 20 20 67 7a 77 72 69 74 65 20 72 65 74  ..   gzwrite ret
dc50: 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20  urns the number 
dc60: 6f 66 20 75 6e 63 6f 6d 70 72 65 73 73 65 64 20  of uncompressed 
dc70: 62 79 74 65 73 20 61 63 74 75 61 6c 6c 79 20 77  bytes actually w
dc80: 72 69 74 74 65 6e 0a 20 20 20 28 30 20 69 6e 20  ritten.   (0 in 
dc90: 63 61 73 65 20 6f 66 20 65 72 72 6f 72 29 2e 0a  case of error)..
dca0: 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20  */..ZEXTERN int 
dcb0: 5a 45 58 50 4f 52 54 56 41 20 20 20 67 7a 70 72  ZEXPORTVA   gzpr
dcc0: 69 6e 74 66 20 4f 46 28 28 67 7a 46 69 6c 65 20  intf OF((gzFile 
dcd0: 66 69 6c 65 2c 20 63 6f 6e 73 74 20 63 68 61 72  file, const char
dce0: 20 2a 66 6f 72 6d 61 74 2c 20 2e 2e 2e 29 29 3b   *format, ...));
dcf0: 0a 2f 2a 0a 20 20 20 20 20 43 6f 6e 76 65 72 74  ./*.     Convert
dd00: 73 2c 20 66 6f 72 6d 61 74 73 2c 20 61 6e 64 20  s, formats, and 
dd10: 77 72 69 74 65 73 20 74 68 65 20 61 72 67 73 20  writes the args 
dd20: 74 6f 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65  to the compresse
dd30: 64 20 66 69 6c 65 20 75 6e 64 65 72 0a 20 20 20  d file under.   
dd40: 63 6f 6e 74 72 6f 6c 20 6f 66 20 74 68 65 20 66  control of the f
dd50: 6f 72 6d 61 74 20 73 74 72 69 6e 67 2c 20 61 73  ormat string, as
dd60: 20 69 6e 20 66 70 72 69 6e 74 66 2e 20 67 7a 70   in fprintf. gzp
dd70: 72 69 6e 74 66 20 72 65 74 75 72 6e 73 20 74 68  rintf returns th
dd80: 65 20 6e 75 6d 62 65 72 20 6f 66 0a 20 20 20 75  e number of.   u
dd90: 6e 63 6f 6d 70 72 65 73 73 65 64 20 62 79 74 65  ncompressed byte
dda0: 73 20 61 63 74 75 61 6c 6c 79 20 77 72 69 74 74  s actually writt
ddb0: 65 6e 20 28 30 20 69 6e 20 63 61 73 65 20 6f 66  en (0 in case of
ddc0: 20 65 72 72 6f 72 29 2e 20 20 54 68 65 20 6e 75   error).  The nu
ddd0: 6d 62 65 72 20 6f 66 0a 20 20 20 75 6e 63 6f 6d  mber of.   uncom
dde0: 70 72 65 73 73 65 64 20 62 79 74 65 73 20 77 72  pressed bytes wr
ddf0: 69 74 74 65 6e 20 69 73 20 6c 69 6d 69 74 65 64  itten is limited
de00: 20 74 6f 20 34 30 39 35 2e 20 54 68 65 20 63 61   to 4095. The ca
de10: 6c 6c 65 72 20 73 68 6f 75 6c 64 20 61 73 73 75  ller should assu
de20: 72 65 20 74 68 61 74 0a 20 20 20 74 68 69 73 20  re that.   this 
de30: 6c 69 6d 69 74 20 69 73 20 6e 6f 74 20 65 78 63  limit is not exc
de40: 65 65 64 65 64 2e 20 49 66 20 69 74 20 69 73 20  eeded. If it is 
de50: 65 78 63 65 65 64 65 64 2c 20 74 68 65 6e 20 67  exceeded, then g
de60: 7a 70 72 69 6e 74 66 28 29 20 77 69 6c 6c 20 72  zprintf() will r
de70: 65 74 75 72 6e 0a 20 20 20 72 65 74 75 72 6e 20  eturn.   return 
de80: 61 6e 20 65 72 72 6f 72 20 28 30 29 20 77 69 74  an error (0) wit
de90: 68 20 6e 6f 74 68 69 6e 67 20 77 72 69 74 74 65  h nothing writte
dea0: 6e 2e 20 49 6e 20 74 68 69 73 20 63 61 73 65 2c  n. In this case,
deb0: 20 74 68 65 72 65 20 6d 61 79 20 61 6c 73 6f 20   there may also 
dec0: 62 65 20 61 0a 20 20 20 62 75 66 66 65 72 20 6f  be a.   buffer o
ded0: 76 65 72 66 6c 6f 77 20 77 69 74 68 20 75 6e 70  verflow with unp
dee0: 72 65 64 69 63 74 61 62 6c 65 20 63 6f 6e 73 65  redictable conse
def0: 71 75 65 6e 63 65 73 2c 20 77 68 69 63 68 20 69  quences, which i
df00: 73 20 70 6f 73 73 69 62 6c 65 20 6f 6e 6c 79 20  s possible only 
df10: 69 66 0a 20 20 20 7a 6c 69 62 20 77 61 73 20 63  if.   zlib was c
df20: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65  ompiled with the
df30: 20 69 6e 73 65 63 75 72 65 20 66 75 6e 63 74 69   insecure functi
df40: 6f 6e 73 20 73 70 72 69 6e 74 66 28 29 20 6f 72  ons sprintf() or
df50: 20 76 73 70 72 69 6e 74 66 28 29 0a 20 20 20 62   vsprintf().   b
df60: 65 63 61 75 73 65 20 74 68 65 20 73 65 63 75 72  ecause the secur
df70: 65 20 73 6e 70 72 69 6e 74 66 28 29 20 6f 72 20  e snprintf() or 
df80: 76 73 6e 70 72 69 6e 74 66 28 29 20 66 75 6e 63  vsnprintf() func
df90: 74 69 6f 6e 73 20 77 65 72 65 20 6e 6f 74 20 61  tions were not a
dfa0: 76 61 69 6c 61 62 6c 65 2e 0a 2a 2f 0a 0a 5a 45  vailable..*/..ZE
dfb0: 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52  XTERN int ZEXPOR
dfc0: 54 20 67 7a 70 75 74 73 20 4f 46 28 28 67 7a 46  T gzputs OF((gzF
dfd0: 69 6c 65 20 66 69 6c 65 2c 20 63 6f 6e 73 74 20  ile file, const 
dfe0: 63 68 61 72 20 2a 73 29 29 3b 0a 2f 2a 0a 20 20  char *s));./*.  
dff0: 20 20 20 20 57 72 69 74 65 73 20 74 68 65 20 67      Writes the g
e000: 69 76 65 6e 20 6e 75 6c 6c 2d 74 65 72 6d 69 6e  iven null-termin
e010: 61 74 65 64 20 73 74 72 69 6e 67 20 74 6f 20 74  ated string to t
e020: 68 65 20 63 6f 6d 70 72 65 73 73 65 64 20 66 69  he compressed fi
e030: 6c 65 2c 20 65 78 63 6c 75 64 69 6e 67 0a 20 20  le, excluding.  
e040: 20 74 68 65 20 74 65 72 6d 69 6e 61 74 69 6e 67   the terminating
e050: 20 6e 75 6c 6c 20 63 68 61 72 61 63 74 65 72 2e   null character.
e060: 0a 20 20 20 20 20 20 67 7a 70 75 74 73 20 72 65  .      gzputs re
e070: 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72  turns the number
e080: 20 6f 66 20 63 68 61 72 61 63 74 65 72 73 20 77   of characters w
e090: 72 69 74 74 65 6e 2c 20 6f 72 20 2d 31 20 69 6e  ritten, or -1 in
e0a0: 20 63 61 73 65 20 6f 66 20 65 72 72 6f 72 2e 0a   case of error..
e0b0: 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 63 68 61 72  */..ZEXTERN char
e0c0: 20 2a 20 5a 45 58 50 4f 52 54 20 67 7a 67 65 74   * ZEXPORT gzget
e0d0: 73 20 4f 46 28 28 67 7a 46 69 6c 65 20 66 69 6c  s OF((gzFile fil
e0e0: 65 2c 20 63 68 61 72 20 2a 62 75 66 2c 20 69 6e  e, char *buf, in
e0f0: 74 20 6c 65 6e 29 29 3b 0a 2f 2a 0a 20 20 20 20  t len));./*.    
e100: 20 20 52 65 61 64 73 20 62 79 74 65 73 20 66 72    Reads bytes fr
e110: 6f 6d 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65  om the compresse
e120: 64 20 66 69 6c 65 20 75 6e 74 69 6c 20 6c 65 6e  d file until len
e130: 2d 31 20 63 68 61 72 61 63 74 65 72 73 20 61 72  -1 characters ar
e140: 65 20 72 65 61 64 2c 20 6f 72 0a 20 20 20 61 20  e read, or.   a 
e150: 6e 65 77 6c 69 6e 65 20 63 68 61 72 61 63 74 65  newline characte
e160: 72 20 69 73 20 72 65 61 64 20 61 6e 64 20 74 72  r is read and tr
e170: 61 6e 73 66 65 72 72 65 64 20 74 6f 20 62 75 66  ansferred to buf
e180: 2c 20 6f 72 20 61 6e 20 65 6e 64 2d 6f 66 2d 66  , or an end-of-f
e190: 69 6c 65 0a 20 20 20 63 6f 6e 64 69 74 69 6f 6e  ile.   condition
e1a0: 20 69 73 20 65 6e 63 6f 75 6e 74 65 72 65 64 2e   is encountered.
e1b0: 20 20 54 68 65 20 73 74 72 69 6e 67 20 69 73 20    The string is 
e1c0: 74 68 65 6e 20 74 65 72 6d 69 6e 61 74 65 64 20  then terminated 
e1d0: 77 69 74 68 20 61 20 6e 75 6c 6c 0a 20 20 20 63  with a null.   c
e1e0: 68 61 72 61 63 74 65 72 2e 0a 20 20 20 20 20 20  haracter..      
e1f0: 67 7a 67 65 74 73 20 72 65 74 75 72 6e 73 20 62  gzgets returns b
e200: 75 66 2c 20 6f 72 20 5a 5f 4e 55 4c 4c 20 69 6e  uf, or Z_NULL in
e210: 20 63 61 73 65 20 6f 66 20 65 72 72 6f 72 2e 0a   case of error..
e220: 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20  */..ZEXTERN int 
e230: 5a 45 58 50 4f 52 54 20 20 20 20 67 7a 70 75 74  ZEXPORT    gzput
e240: 63 20 4f 46 28 28 67 7a 46 69 6c 65 20 66 69 6c  c OF((gzFile fil
e250: 65 2c 20 69 6e 74 20 63 29 29 3b 0a 2f 2a 0a 20  e, int c));./*. 
e260: 20 20 20 20 20 57 72 69 74 65 73 20 63 2c 20 63       Writes c, c
e270: 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 6e 20 75  onverted to an u
e280: 6e 73 69 67 6e 65 64 20 63 68 61 72 2c 20 69 6e  nsigned char, in
e290: 74 6f 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65  to the compresse
e2a0: 64 20 66 69 6c 65 2e 0a 20 20 20 67 7a 70 75 74  d file..   gzput
e2b0: 63 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 61  c returns the va
e2c0: 6c 75 65 20 74 68 61 74 20 77 61 73 20 77 72 69  lue that was wri
e2d0: 74 74 65 6e 2c 20 6f 72 20 2d 31 20 69 6e 20 63  tten, or -1 in c
e2e0: 61 73 65 20 6f 66 20 65 72 72 6f 72 2e 0a 2a 2f  ase of error..*/
e2f0: 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45  ..ZEXTERN int ZE
e300: 58 50 4f 52 54 20 20 20 20 67 7a 67 65 74 63 20  XPORT    gzgetc 
e310: 4f 46 28 28 67 7a 46 69 6c 65 20 66 69 6c 65 29  OF((gzFile file)
e320: 29 3b 0a 2f 2a 0a 20 20 20 20 20 20 52 65 61 64  );./*.      Read
e330: 73 20 6f 6e 65 20 62 79 74 65 20 66 72 6f 6d 20  s one byte from 
e340: 74 68 65 20 63 6f 6d 70 72 65 73 73 65 64 20 66  the compressed f
e350: 69 6c 65 2e 20 67 7a 67 65 74 63 20 72 65 74 75  ile. gzgetc retu
e360: 72 6e 73 20 74 68 69 73 20 62 79 74 65 0a 20 20  rns this byte.  
e370: 20 6f 72 20 2d 31 20 69 6e 20 63 61 73 65 20 6f   or -1 in case o
e380: 66 20 65 6e 64 20 6f 66 20 66 69 6c 65 20 6f 72  f end of file or
e390: 20 65 72 72 6f 72 2e 0a 2a 2f 0a 0a 5a 45 58 54   error..*/..ZEXT
e3a0: 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20  ERN int ZEXPORT 
e3b0: 20 20 20 67 7a 75 6e 67 65 74 63 20 4f 46 28 28     gzungetc OF((
e3c0: 69 6e 74 20 63 2c 20 67 7a 46 69 6c 65 20 66 69  int c, gzFile fi
e3d0: 6c 65 29 29 3b 0a 2f 2a 0a 20 20 20 20 20 20 50  le));./*.      P
e3e0: 75 73 68 20 6f 6e 65 20 63 68 61 72 61 63 74 65  ush one characte
e3f0: 72 20 62 61 63 6b 20 6f 6e 74 6f 20 74 68 65 20  r back onto the 
e400: 73 74 72 65 61 6d 20 74 6f 20 62 65 20 72 65 61  stream to be rea
e410: 64 20 61 67 61 69 6e 20 6c 61 74 65 72 2e 0a 20  d again later.. 
e420: 20 20 4f 6e 6c 79 20 6f 6e 65 20 63 68 61 72 61    Only one chara
e430: 63 74 65 72 20 6f 66 20 70 75 73 68 2d 62 61 63  cter of push-bac
e440: 6b 20 69 73 20 61 6c 6c 6f 77 65 64 2e 20 20 67  k is allowed.  g
e450: 7a 75 6e 67 65 74 63 28 29 20 72 65 74 75 72 6e  zungetc() return
e460: 73 20 74 68 65 0a 20 20 20 63 68 61 72 61 63 74  s the.   charact
e470: 65 72 20 70 75 73 68 65 64 2c 20 6f 72 20 2d 31  er pushed, or -1
e480: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 20 20 67 7a   on failure.  gz
e490: 75 6e 67 65 74 63 28 29 20 77 69 6c 6c 20 66 61  ungetc() will fa
e4a0: 69 6c 20 69 66 20 61 0a 20 20 20 63 68 61 72 61  il if a.   chara
e4b0: 63 74 65 72 20 68 61 73 20 62 65 65 6e 20 70 75  cter has been pu
e4c0: 73 68 65 64 20 62 75 74 20 6e 6f 74 20 72 65 61  shed but not rea
e4d0: 64 20 79 65 74 2c 20 6f 72 20 69 66 20 63 20 69  d yet, or if c i
e4e0: 73 20 2d 31 2e 20 54 68 65 20 70 75 73 68 65 64  s -1. The pushed
e4f0: 0a 20 20 20 63 68 61 72 61 63 74 65 72 20 77 69  .   character wi
e500: 6c 6c 20 62 65 20 64 69 73 63 61 72 64 65 64 20  ll be discarded 
e510: 69 66 20 74 68 65 20 73 74 72 65 61 6d 20 69 73  if the stream is
e520: 20 72 65 70 6f 73 69 74 69 6f 6e 65 64 20 77 69   repositioned wi
e530: 74 68 20 67 7a 73 65 65 6b 28 29 0a 20 20 20 6f  th gzseek().   o
e540: 72 20 67 7a 72 65 77 69 6e 64 28 29 2e 0a 2a 2f  r gzrewind()..*/
e550: 0a 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20 5a 45  ..ZEXTERN int ZE
e560: 58 50 4f 52 54 20 20 20 20 67 7a 66 6c 75 73 68  XPORT    gzflush
e570: 20 4f 46 28 28 67 7a 46 69 6c 65 20 66 69 6c 65   OF((gzFile file
e580: 2c 20 69 6e 74 20 66 6c 75 73 68 29 29 3b 0a 2f  , int flush));./
e590: 2a 0a 20 20 20 20 20 46 6c 75 73 68 65 73 20 61  *.     Flushes a
e5a0: 6c 6c 20 70 65 6e 64 69 6e 67 20 6f 75 74 70 75  ll pending outpu
e5b0: 74 20 69 6e 74 6f 20 74 68 65 20 63 6f 6d 70 72  t into the compr
e5c0: 65 73 73 65 64 20 66 69 6c 65 2e 20 54 68 65 20  essed file. The 
e5d0: 70 61 72 61 6d 65 74 65 72 0a 20 20 20 66 6c 75  parameter.   flu
e5e0: 73 68 20 69 73 20 61 73 20 69 6e 20 74 68 65 20  sh is as in the 
e5f0: 64 65 66 6c 61 74 65 28 29 20 66 75 6e 63 74 69  deflate() functi
e600: 6f 6e 2e 20 54 68 65 20 72 65 74 75 72 6e 20 76  on. The return v
e610: 61 6c 75 65 20 69 73 20 74 68 65 20 7a 6c 69 62  alue is the zlib
e620: 0a 20 20 20 65 72 72 6f 72 20 6e 75 6d 62 65 72  .   error number
e630: 20 28 73 65 65 20 66 75 6e 63 74 69 6f 6e 20 67   (see function g
e640: 7a 65 72 72 6f 72 20 62 65 6c 6f 77 29 2e 20 67  zerror below). g
e650: 7a 66 6c 75 73 68 20 72 65 74 75 72 6e 73 20 5a  zflush returns Z
e660: 5f 4f 4b 20 69 66 0a 20 20 20 74 68 65 20 66 6c  _OK if.   the fl
e670: 75 73 68 20 70 61 72 61 6d 65 74 65 72 20 69 73  ush parameter is
e680: 20 5a 5f 46 49 4e 49 53 48 20 61 6e 64 20 61 6c   Z_FINISH and al
e690: 6c 20 6f 75 74 70 75 74 20 63 6f 75 6c 64 20 62  l output could b
e6a0: 65 20 66 6c 75 73 68 65 64 2e 0a 20 20 20 20 20  e flushed..     
e6b0: 67 7a 66 6c 75 73 68 20 73 68 6f 75 6c 64 20 62  gzflush should b
e6c0: 65 20 63 61 6c 6c 65 64 20 6f 6e 6c 79 20 77 68  e called only wh
e6d0: 65 6e 20 73 74 72 69 63 74 6c 79 20 6e 65 63 65  en strictly nece
e6e0: 73 73 61 72 79 20 62 65 63 61 75 73 65 20 69 74  ssary because it
e6f0: 20 63 61 6e 0a 20 20 20 64 65 67 72 61 64 65 20   can.   degrade 
e700: 63 6f 6d 70 72 65 73 73 69 6f 6e 2e 0a 2a 2f 0a  compression..*/.
e710: 0a 5a 45 58 54 45 52 4e 20 7a 5f 6f 66 66 5f 74  .ZEXTERN z_off_t
e720: 20 5a 45 58 50 4f 52 54 20 20 20 20 67 7a 73 65   ZEXPORT    gzse
e730: 65 6b 20 4f 46 28 28 67 7a 46 69 6c 65 20 66 69  ek OF((gzFile fi
e740: 6c 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  le,.            
e750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e760: 20 20 20 20 20 20 20 20 20 20 7a 5f 6f 66 66 5f            z_off_
e770: 74 20 6f 66 66 73 65 74 2c 20 69 6e 74 20 77 68  t offset, int wh
e780: 65 6e 63 65 29 29 3b 0a 2f 2a 0a 20 20 20 20 20  ence));./*.     
e790: 20 53 65 74 73 20 74 68 65 20 73 74 61 72 74 69   Sets the starti
e7a0: 6e 67 20 70 6f 73 69 74 69 6f 6e 20 66 6f 72 20  ng position for 
e7b0: 74 68 65 20 6e 65 78 74 20 67 7a 72 65 61 64 20  the next gzread 
e7c0: 6f 72 20 67 7a 77 72 69 74 65 20 6f 6e 20 74 68  or gzwrite on th
e7d0: 65 0a 20 20 20 67 69 76 65 6e 20 63 6f 6d 70 72  e.   given compr
e7e0: 65 73 73 65 64 20 66 69 6c 65 2e 20 54 68 65 20  essed file. The 
e7f0: 6f 66 66 73 65 74 20 72 65 70 72 65 73 65 6e 74  offset represent
e800: 73 20 61 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  s a number of by
e810: 74 65 73 20 69 6e 20 74 68 65 0a 20 20 20 75 6e  tes in the.   un
e820: 63 6f 6d 70 72 65 73 73 65 64 20 64 61 74 61 20  compressed data 
e830: 73 74 72 65 61 6d 2e 20 54 68 65 20 77 68 65 6e  stream. The when
e840: 63 65 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  ce parameter is 
e850: 64 65 66 69 6e 65 64 20 61 73 20 69 6e 20 6c 73  defined as in ls
e860: 65 65 6b 28 32 29 3b 0a 20 20 20 74 68 65 20 76  eek(2);.   the v
e870: 61 6c 75 65 20 53 45 45 4b 5f 45 4e 44 20 69 73  alue SEEK_END is
e880: 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 2e 0a   not supported..
e890: 20 20 20 20 20 49 66 20 74 68 65 20 66 69 6c 65       If the file
e8a0: 20 69 73 20 6f 70 65 6e 65 64 20 66 6f 72 20 72   is opened for r
e8b0: 65 61 64 69 6e 67 2c 20 74 68 69 73 20 66 75 6e  eading, this fun
e8c0: 63 74 69 6f 6e 20 69 73 20 65 6d 75 6c 61 74 65  ction is emulate
e8d0: 64 20 62 75 74 20 63 61 6e 20 62 65 0a 20 20 20  d but can be.   
e8e0: 65 78 74 72 65 6d 65 6c 79 20 73 6c 6f 77 2e 20  extremely slow. 
e8f0: 49 66 20 74 68 65 20 66 69 6c 65 20 69 73 20 6f  If the file is o
e900: 70 65 6e 65 64 20 66 6f 72 20 77 72 69 74 69 6e  pened for writin
e910: 67 2c 20 6f 6e 6c 79 20 66 6f 72 77 61 72 64 20  g, only forward 
e920: 73 65 65 6b 73 20 61 72 65 0a 20 20 20 73 75 70  seeks are.   sup
e930: 70 6f 72 74 65 64 3b 20 67 7a 73 65 65 6b 20 74  ported; gzseek t
e940: 68 65 6e 20 63 6f 6d 70 72 65 73 73 65 73 20 61  hen compresses a
e950: 20 73 65 71 75 65 6e 63 65 20 6f 66 20 7a 65 72   sequence of zer
e960: 6f 65 73 20 75 70 20 74 6f 20 74 68 65 20 6e 65  oes up to the ne
e970: 77 0a 20 20 20 73 74 61 72 74 69 6e 67 20 70 6f  w.   starting po
e980: 73 69 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 67  sition...      g
e990: 7a 73 65 65 6b 20 72 65 74 75 72 6e 73 20 74 68  zseek returns th
e9a0: 65 20 72 65 73 75 6c 74 69 6e 67 20 6f 66 66 73  e resulting offs
e9b0: 65 74 20 6c 6f 63 61 74 69 6f 6e 20 61 73 20 6d  et location as m
e9c0: 65 61 73 75 72 65 64 20 69 6e 20 62 79 74 65 73  easured in bytes
e9d0: 20 66 72 6f 6d 0a 20 20 20 74 68 65 20 62 65 67   from.   the beg
e9e0: 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 75 6e  inning of the un
e9f0: 63 6f 6d 70 72 65 73 73 65 64 20 73 74 72 65 61  compressed strea
ea00: 6d 2c 20 6f 72 20 2d 31 20 69 6e 20 63 61 73 65  m, or -1 in case
ea10: 20 6f 66 20 65 72 72 6f 72 2c 20 69 6e 0a 20 20   of error, in.  
ea20: 20 70 61 72 74 69 63 75 6c 61 72 20 69 66 20 74   particular if t
ea30: 68 65 20 66 69 6c 65 20 69 73 20 6f 70 65 6e 65  he file is opene
ea40: 64 20 66 6f 72 20 77 72 69 74 69 6e 67 20 61 6e  d for writing an
ea50: 64 20 74 68 65 20 6e 65 77 20 73 74 61 72 74 69  d the new starti
ea60: 6e 67 20 70 6f 73 69 74 69 6f 6e 0a 20 20 20 77  ng position.   w
ea70: 6f 75 6c 64 20 62 65 20 62 65 66 6f 72 65 20 74  ould be before t
ea80: 68 65 20 63 75 72 72 65 6e 74 20 70 6f 73 69 74  he current posit
ea90: 69 6f 6e 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e  ion..*/..ZEXTERN
eaa0: 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 20 20 20   int ZEXPORT    
eab0: 67 7a 72 65 77 69 6e 64 20 4f 46 28 28 67 7a 46  gzrewind OF((gzF
eac0: 69 6c 65 20 66 69 6c 65 29 29 3b 0a 2f 2a 0a 20  ile file));./*. 
ead0: 20 20 20 20 52 65 77 69 6e 64 73 20 74 68 65 20      Rewinds the 
eae0: 67 69 76 65 6e 20 66 69 6c 65 2e 20 54 68 69 73  given file. This
eaf0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 73 75 70   function is sup
eb00: 70 6f 72 74 65 64 20 6f 6e 6c 79 20 66 6f 72 20  ported only for 
eb10: 72 65 61 64 69 6e 67 2e 0a 0a 20 20 20 67 7a 72  reading...   gzr
eb20: 65 77 69 6e 64 28 66 69 6c 65 29 20 69 73 20 65  ewind(file) is e
eb30: 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 28 69 6e  quivalent to (in
eb40: 74 29 67 7a 73 65 65 6b 28 66 69 6c 65 2c 20 30  t)gzseek(file, 0
eb50: 4c 2c 20 53 45 45 4b 5f 53 45 54 29 0a 2a 2f 0a  L, SEEK_SET).*/.
eb60: 0a 5a 45 58 54 45 52 4e 20 7a 5f 6f 66 66 5f 74  .ZEXTERN z_off_t
eb70: 20 5a 45 58 50 4f 52 54 20 20 20 20 67 7a 74 65   ZEXPORT    gzte
eb80: 6c 6c 20 4f 46 28 28 67 7a 46 69 6c 65 20 66 69  ll OF((gzFile fi
eb90: 6c 65 29 29 3b 0a 2f 2a 0a 20 20 20 20 20 52 65  le));./*.     Re
eba0: 74 75 72 6e 73 20 74 68 65 20 73 74 61 72 74 69  turns the starti
ebb0: 6e 67 20 70 6f 73 69 74 69 6f 6e 20 66 6f 72 20  ng position for 
ebc0: 74 68 65 20 6e 65 78 74 20 67 7a 72 65 61 64 20  the next gzread 
ebd0: 6f 72 20 67 7a 77 72 69 74 65 20 6f 6e 20 74 68  or gzwrite on th
ebe0: 65 0a 20 20 20 67 69 76 65 6e 20 63 6f 6d 70 72  e.   given compr
ebf0: 65 73 73 65 64 20 66 69 6c 65 2e 20 54 68 69 73  essed file. This
ec00: 20 70 6f 73 69 74 69 6f 6e 20 72 65 70 72 65 73   position repres
ec10: 65 6e 74 73 20 61 20 6e 75 6d 62 65 72 20 6f 66  ents a number of
ec20: 20 62 79 74 65 73 20 69 6e 20 74 68 65 0a 20 20   bytes in the.  
ec30: 20 75 6e 63 6f 6d 70 72 65 73 73 65 64 20 64 61   uncompressed da
ec40: 74 61 20 73 74 72 65 61 6d 2e 0a 0a 20 20 20 67  ta stream...   g
ec50: 7a 74 65 6c 6c 28 66 69 6c 65 29 20 69 73 20 65  ztell(file) is e
ec60: 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 67 7a 73  quivalent to gzs
ec70: 65 65 6b 28 66 69 6c 65 2c 20 30 4c 2c 20 53 45  eek(file, 0L, SE
ec80: 45 4b 5f 43 55 52 29 0a 2a 2f 0a 0a 5a 45 58 54  EK_CUR).*/..ZEXT
ec90: 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20  ERN int ZEXPORT 
eca0: 67 7a 65 6f 66 20 4f 46 28 28 67 7a 46 69 6c 65  gzeof OF((gzFile
ecb0: 20 66 69 6c 65 29 29 3b 0a 2f 2a 0a 20 20 20 20   file));./*.    
ecc0: 20 52 65 74 75 72 6e 73 20 31 20 77 68 65 6e 20   Returns 1 when 
ecd0: 45 4f 46 20 68 61 73 20 70 72 65 76 69 6f 75 73  EOF has previous
ece0: 6c 79 20 62 65 65 6e 20 64 65 74 65 63 74 65 64  ly been detected
ecf0: 20 72 65 61 64 69 6e 67 20 74 68 65 20 67 69 76   reading the giv
ed00: 65 6e 0a 20 20 20 69 6e 70 75 74 20 73 74 72 65  en.   input stre
ed10: 61 6d 2c 20 6f 74 68 65 72 77 69 73 65 20 7a 65  am, otherwise ze
ed20: 72 6f 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20  ro..*/..ZEXTERN 
ed30: 69 6e 74 20 5a 45 58 50 4f 52 54 20 67 7a 64 69  int ZEXPORT gzdi
ed40: 72 65 63 74 20 4f 46 28 28 67 7a 46 69 6c 65 20  rect OF((gzFile 
ed50: 66 69 6c 65 29 29 3b 0a 2f 2a 0a 20 20 20 20 20  file));./*.     
ed60: 52 65 74 75 72 6e 73 20 31 20 69 66 20 66 69 6c  Returns 1 if fil
ed70: 65 20 69 73 20 62 65 69 6e 67 20 72 65 61 64 20  e is being read 
ed80: 64 69 72 65 63 74 6c 79 20 77 69 74 68 6f 75 74  directly without
ed90: 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 2c 20   decompression, 
eda0: 6f 74 68 65 72 77 69 73 65 0a 20 20 20 7a 65 72  otherwise.   zer
edb0: 6f 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 69  o..*/..ZEXTERN i
edc0: 6e 74 20 5a 45 58 50 4f 52 54 20 20 20 20 67 7a  nt ZEXPORT    gz
edd0: 63 6c 6f 73 65 20 4f 46 28 28 67 7a 46 69 6c 65  close OF((gzFile
ede0: 20 66 69 6c 65 29 29 3b 0a 2f 2a 0a 20 20 20 20   file));./*.    
edf0: 20 46 6c 75 73 68 65 73 20 61 6c 6c 20 70 65 6e   Flushes all pen
ee00: 64 69 6e 67 20 6f 75 74 70 75 74 20 69 66 20 6e  ding output if n
ee10: 65 63 65 73 73 61 72 79 2c 20 63 6c 6f 73 65 73  ecessary, closes
ee20: 20 74 68 65 20 63 6f 6d 70 72 65 73 73 65 64 20   the compressed 
ee30: 66 69 6c 65 0a 20 20 20 61 6e 64 20 64 65 61 6c  file.   and deal
ee40: 6c 6f 63 61 74 65 73 20 61 6c 6c 20 74 68 65 20  locates all the 
ee50: 28 64 65 29 63 6f 6d 70 72 65 73 73 69 6f 6e 20  (de)compression 
ee60: 73 74 61 74 65 2e 20 54 68 65 20 72 65 74 75 72  state. The retur
ee70: 6e 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 7a  n value is the z
ee80: 6c 69 62 0a 20 20 20 65 72 72 6f 72 20 6e 75 6d  lib.   error num
ee90: 62 65 72 20 28 73 65 65 20 66 75 6e 63 74 69 6f  ber (see functio
eea0: 6e 20 67 7a 65 72 72 6f 72 20 62 65 6c 6f 77 29  n gzerror below)
eeb0: 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e 20 63 6f  ..*/..ZEXTERN co
eec0: 6e 73 74 20 63 68 61 72 20 2a 20 5a 45 58 50 4f  nst char * ZEXPO
eed0: 52 54 20 67 7a 65 72 72 6f 72 20 4f 46 28 28 67  RT gzerror OF((g
eee0: 7a 46 69 6c 65 20 66 69 6c 65 2c 20 69 6e 74 20  zFile file, int 
eef0: 2a 65 72 72 6e 75 6d 29 29 3b 0a 2f 2a 0a 20 20  *errnum));./*.  
ef00: 20 20 20 52 65 74 75 72 6e 73 20 74 68 65 20 65     Returns the e
ef10: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 66 6f 72  rror message for
ef20: 20 74 68 65 20 6c 61 73 74 20 65 72 72 6f 72 20   the last error 
ef30: 77 68 69 63 68 20 6f 63 63 75 72 72 65 64 20 6f  which occurred o
ef40: 6e 20 74 68 65 0a 20 20 20 67 69 76 65 6e 20 63  n the.   given c
ef50: 6f 6d 70 72 65 73 73 65 64 20 66 69 6c 65 2e 20  ompressed file. 
ef60: 65 72 72 6e 75 6d 20 69 73 20 73 65 74 20 74 6f  errnum is set to
ef70: 20 7a 6c 69 62 20 65 72 72 6f 72 20 6e 75 6d 62   zlib error numb
ef80: 65 72 2e 20 49 66 20 61 6e 0a 20 20 20 65 72 72  er. If an.   err
ef90: 6f 72 20 6f 63 63 75 72 72 65 64 20 69 6e 20 74  or occurred in t
efa0: 68 65 20 66 69 6c 65 20 73 79 73 74 65 6d 20 61  he file system a
efb0: 6e 64 20 6e 6f 74 20 69 6e 20 74 68 65 20 63 6f  nd not in the co
efc0: 6d 70 72 65 73 73 69 6f 6e 20 6c 69 62 72 61 72  mpression librar
efd0: 79 2c 0a 20 20 20 65 72 72 6e 75 6d 20 69 73 20  y,.   errnum is 
efe0: 73 65 74 20 74 6f 20 5a 5f 45 52 52 4e 4f 20 61  set to Z_ERRNO a
eff0: 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  nd the applicati
f000: 6f 6e 20 6d 61 79 20 63 6f 6e 73 75 6c 74 20 65  on may consult e
f010: 72 72 6e 6f 0a 20 20 20 74 6f 20 67 65 74 20 74  rrno.   to get t
f020: 68 65 20 65 78 61 63 74 20 65 72 72 6f 72 20 63  he exact error c
f030: 6f 64 65 2e 0a 2a 2f 0a 0a 5a 45 58 54 45 52 4e  ode..*/..ZEXTERN
f040: 20 76 6f 69 64 20 5a 45 58 50 4f 52 54 20 67 7a   void ZEXPORT gz
f050: 63 6c 65 61 72 65 72 72 20 4f 46 28 28 67 7a 46  clearerr OF((gzF
f060: 69 6c 65 20 66 69 6c 65 29 29 3b 0a 2f 2a 0a 20  ile file));./*. 
f070: 20 20 20 20 43 6c 65 61 72 73 20 74 68 65 20 65      Clears the e
f080: 72 72 6f 72 20 61 6e 64 20 65 6e 64 2d 6f 66 2d  rror and end-of-
f090: 66 69 6c 65 20 66 6c 61 67 73 20 66 6f 72 20 66  file flags for f
f0a0: 69 6c 65 2e 20 54 68 69 73 20 69 73 20 61 6e 61  ile. This is ana
f0b0: 6c 6f 67 6f 75 73 20 74 6f 20 74 68 65 0a 20 20  logous to the.  
f0c0: 20 63 6c 65 61 72 65 72 72 28 29 20 66 75 6e 63   clearerr() func
f0d0: 74 69 6f 6e 20 69 6e 20 73 74 64 69 6f 2e 20 54  tion in stdio. T
f0e0: 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 66 6f  his is useful fo
f0f0: 72 20 63 6f 6e 74 69 6e 75 69 6e 67 20 74 6f 20  r continuing to 
f100: 72 65 61 64 20 61 20 67 7a 69 70 0a 20 20 20 66  read a gzip.   f
f110: 69 6c 65 20 74 68 61 74 20 69 73 20 62 65 69 6e  ile that is bein
f120: 67 20 77 72 69 74 74 65 6e 20 63 6f 6e 63 75 72  g written concur
f130: 72 65 6e 74 6c 79 2e 0a 2a 2f 0a 0a 20 20 20 20  rently..*/..    
f140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f150: 20 20 20 20 2f 2a 20 63 68 65 63 6b 73 75 6d 20      /* checksum 
f160: 66 75 6e 63 74 69 6f 6e 73 20 2a 2f 0a 0a 2f 2a  functions */../*
f170: 0a 20 20 20 20 20 54 68 65 73 65 20 66 75 6e 63  .     These func
f180: 74 69 6f 6e 73 20 61 72 65 20 6e 6f 74 20 72 65  tions are not re
f190: 6c 61 74 65 64 20 74 6f 20 63 6f 6d 70 72 65 73  lated to compres
f1a0: 73 69 6f 6e 20 62 75 74 20 61 72 65 20 65 78 70  sion but are exp
f1b0: 6f 72 74 65 64 0a 20 20 20 61 6e 79 77 61 79 20  orted.   anyway 
f1c0: 62 65 63 61 75 73 65 20 74 68 65 79 20 6d 69 67  because they mig
f1d0: 68 74 20 62 65 20 75 73 65 66 75 6c 20 69 6e 20  ht be useful in 
f1e0: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 75 73 69  applications usi
f1f0: 6e 67 20 74 68 65 0a 20 20 20 63 6f 6d 70 72 65  ng the.   compre
f200: 73 73 69 6f 6e 20 6c 69 62 72 61 72 79 2e 0a 2a  ssion library..*
f210: 2f 0a 0a 5a 45 58 54 45 52 4e 20 75 4c 6f 6e 67  /..ZEXTERN uLong
f220: 20 5a 45 58 50 4f 52 54 20 61 64 6c 65 72 33 32   ZEXPORT adler32
f230: 20 4f 46 28 28 75 4c 6f 6e 67 20 61 64 6c 65 72   OF((uLong adler
f240: 2c 20 63 6f 6e 73 74 20 42 79 74 65 66 20 2a 62  , const Bytef *b
f250: 75 66 2c 20 75 49 6e 74 20 6c 65 6e 29 29 3b 0a  uf, uInt len));.
f260: 2f 2a 0a 20 20 20 20 20 55 70 64 61 74 65 20 61  /*.     Update a
f270: 20 72 75 6e 6e 69 6e 67 20 41 64 6c 65 72 2d 33   running Adler-3
f280: 32 20 63 68 65 63 6b 73 75 6d 20 77 69 74 68 20  2 checksum with 
f290: 74 68 65 20 62 79 74 65 73 20 62 75 66 5b 30 2e  the bytes buf[0.
f2a0: 2e 6c 65 6e 2d 31 5d 20 61 6e 64 0a 20 20 20 72  .len-1] and.   r
f2b0: 65 74 75 72 6e 20 74 68 65 20 75 70 64 61 74 65  eturn the update
f2c0: 64 20 63 68 65 63 6b 73 75 6d 2e 20 49 66 20 62  d checksum. If b
f2d0: 75 66 20 69 73 20 4e 55 4c 4c 2c 20 74 68 69 73  uf is NULL, this
f2e0: 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
f2f0: 73 0a 20 20 20 74 68 65 20 72 65 71 75 69 72 65  s.   the require
f300: 64 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 65 20  d initial value 
f310: 66 6f 72 20 74 68 65 20 63 68 65 63 6b 73 75 6d  for the checksum
f320: 2e 0a 20 20 20 41 6e 20 41 64 6c 65 72 2d 33 32  ..   An Adler-32
f330: 20 63 68 65 63 6b 73 75 6d 20 69 73 20 61 6c 6d   checksum is alm
f340: 6f 73 74 20 61 73 20 72 65 6c 69 61 62 6c 65 20  ost as reliable 
f350: 61 73 20 61 20 43 52 43 33 32 20 62 75 74 20 63  as a CRC32 but c
f360: 61 6e 20 62 65 20 63 6f 6d 70 75 74 65 64 0a 20  an be computed. 
f370: 20 20 6d 75 63 68 20 66 61 73 74 65 72 2e 20 55    much faster. U
f380: 73 61 67 65 20 65 78 61 6d 70 6c 65 3a 0a 0a 20  sage example:.. 
f390: 20 20 20 20 75 4c 6f 6e 67 20 61 64 6c 65 72 20      uLong adler 
f3a0: 3d 20 61 64 6c 65 72 33 32 28 30 4c 2c 20 5a 5f  = adler32(0L, Z_
f3b0: 4e 55 4c 4c 2c 20 30 29 3b 0a 0a 20 20 20 20 20  NULL, 0);..     
f3c0: 77 68 69 6c 65 20 28 72 65 61 64 5f 62 75 66 66  while (read_buff
f3d0: 65 72 28 62 75 66 66 65 72 2c 20 6c 65 6e 67 74  er(buffer, lengt
f3e0: 68 29 20 21 3d 20 45 4f 46 29 20 7b 0a 20 20 20  h) != EOF) {.   
f3f0: 20 20 20 20 61 64 6c 65 72 20 3d 20 61 64 6c 65      adler = adle
f400: 72 33 32 28 61 64 6c 65 72 2c 20 62 75 66 66 65  r32(adler, buffe
f410: 72 2c 20 6c 65 6e 67 74 68 29 3b 0a 20 20 20 20  r, length);.    
f420: 20 7d 0a 20 20 20 20 20 69 66 20 28 61 64 6c 65   }.     if (adle
f430: 72 20 21 3d 20 6f 72 69 67 69 6e 61 6c 5f 61 64  r != original_ad
f440: 6c 65 72 29 20 65 72 72 6f 72 28 29 3b 0a 2a 2f  ler) error();.*/
f450: 0a 0a 5a 45 58 54 45 52 4e 20 75 4c 6f 6e 67 20  ..ZEXTERN uLong 
f460: 5a 45 58 50 4f 52 54 20 61 64 6c 65 72 33 32 5f  ZEXPORT adler32_
f470: 63 6f 6d 62 69 6e 65 20 4f 46 28 28 75 4c 6f 6e  combine OF((uLon
f480: 67 20 61 64 6c 65 72 31 2c 20 75 4c 6f 6e 67 20  g adler1, uLong 
f490: 61 64 6c 65 72 32 2c 0a 20 20 20 20 20 20 20 20  adler2,.        
f4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f4c0: 20 20 7a 5f 6f 66 66 5f 74 20 6c 65 6e 32 29 29    z_off_t len2))
f4d0: 3b 0a 2f 2a 0a 20 20 20 20 20 43 6f 6d 62 69 6e  ;./*.     Combin
f4e0: 65 20 74 77 6f 20 41 64 6c 65 72 2d 33 32 20 63  e two Adler-32 c
f4f0: 68 65 63 6b 73 75 6d 73 20 69 6e 74 6f 20 6f 6e  hecksums into on
f500: 65 2e 20 20 46 6f 72 20 74 77 6f 20 73 65 71 75  e.  For two sequ
f510: 65 6e 63 65 73 20 6f 66 20 62 79 74 65 73 2c 20  ences of bytes, 
f520: 73 65 71 31 0a 20 20 20 61 6e 64 20 73 65 71 32  seq1.   and seq2
f530: 20 77 69 74 68 20 6c 65 6e 67 74 68 73 20 6c 65   with lengths le
f540: 6e 31 20 61 6e 64 20 6c 65 6e 32 2c 20 41 64 6c  n1 and len2, Adl
f550: 65 72 2d 33 32 20 63 68 65 63 6b 73 75 6d 73 20  er-32 checksums 
f560: 77 65 72 65 20 63 61 6c 63 75 6c 61 74 65 64 20  were calculated 
f570: 66 6f 72 0a 20 20 20 65 61 63 68 2c 20 61 64 6c  for.   each, adl
f580: 65 72 31 20 61 6e 64 20 61 64 6c 65 72 32 2e 20  er1 and adler2. 
f590: 20 61 64 6c 65 72 33 32 5f 63 6f 6d 62 69 6e 65   adler32_combine
f5a0: 28 29 20 72 65 74 75 72 6e 73 20 74 68 65 20 41  () returns the A
f5b0: 64 6c 65 72 2d 33 32 20 63 68 65 63 6b 73 75 6d  dler-32 checksum
f5c0: 20 6f 66 0a 20 20 20 73 65 71 31 20 61 6e 64 20   of.   seq1 and 
f5d0: 73 65 71 32 20 63 6f 6e 63 61 74 65 6e 61 74 65  seq2 concatenate
f5e0: 64 2c 20 72 65 71 75 69 72 69 6e 67 20 6f 6e 6c  d, requiring onl
f5f0: 79 20 61 64 6c 65 72 31 2c 20 61 64 6c 65 72 32  y adler1, adler2
f600: 2c 20 61 6e 64 20 6c 65 6e 32 2e 0a 2a 2f 0a 0a  , and len2..*/..
f610: 5a 45 58 54 45 52 4e 20 75 4c 6f 6e 67 20 5a 45  ZEXTERN uLong ZE
f620: 58 50 4f 52 54 20 63 72 63 33 32 20 20 20 4f 46  XPORT crc32   OF
f630: 28 28 75 4c 6f 6e 67 20 63 72 63 2c 20 63 6f 6e  ((uLong crc, con
f640: 73 74 20 42 79 74 65 66 20 2a 62 75 66 2c 20 75  st Bytef *buf, u
f650: 49 6e 74 20 6c 65 6e 29 29 3b 0a 2f 2a 0a 20 20  Int len));./*.  
f660: 20 20 20 55 70 64 61 74 65 20 61 20 72 75 6e 6e     Update a runn
f670: 69 6e 67 20 43 52 43 2d 33 32 20 77 69 74 68 20  ing CRC-32 with 
f680: 74 68 65 20 62 79 74 65 73 20 62 75 66 5b 30 2e  the bytes buf[0.
f690: 2e 6c 65 6e 2d 31 5d 20 61 6e 64 20 72 65 74 75  .len-1] and retu
f6a0: 72 6e 20 74 68 65 0a 20 20 20 75 70 64 61 74 65  rn the.   update
f6b0: 64 20 43 52 43 2d 33 32 2e 20 49 66 20 62 75 66  d CRC-32. If buf
f6c0: 20 69 73 20 4e 55 4c 4c 2c 20 74 68 69 73 20 66   is NULL, this f
f6d0: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
f6e0: 74 68 65 20 72 65 71 75 69 72 65 64 20 69 6e 69  the required ini
f6f0: 74 69 61 6c 0a 20 20 20 76 61 6c 75 65 20 66 6f  tial.   value fo
f700: 72 20 74 68 65 20 66 6f 72 20 74 68 65 20 63 72  r the for the cr
f710: 63 2e 20 50 72 65 2d 20 61 6e 64 20 70 6f 73 74  c. Pre- and post
f720: 2d 63 6f 6e 64 69 74 69 6f 6e 69 6e 67 20 28 6f  -conditioning (o
f730: 6e 65 27 73 20 63 6f 6d 70 6c 65 6d 65 6e 74 29  ne's complement)
f740: 20 69 73 0a 20 20 20 70 65 72 66 6f 72 6d 65 64   is.   performed
f750: 20 77 69 74 68 69 6e 20 74 68 69 73 20 66 75 6e   within this fun
f760: 63 74 69 6f 6e 20 73 6f 20 69 74 20 73 68 6f 75  ction so it shou
f770: 6c 64 6e 27 74 20 62 65 20 64 6f 6e 65 20 62 79  ldn't be done by
f780: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
f790: 2e 0a 20 20 20 55 73 61 67 65 20 65 78 61 6d 70  ..   Usage examp
f7a0: 6c 65 3a 0a 0a 20 20 20 20 20 75 4c 6f 6e 67 20  le:..     uLong 
f7b0: 63 72 63 20 3d 20 63 72 63 33 32 28 30 4c 2c 20  crc = crc32(0L, 
f7c0: 5a 5f 4e 55 4c 4c 2c 20 30 29 3b 0a 0a 20 20 20  Z_NULL, 0);..   
f7d0: 20 20 77 68 69 6c 65 20 28 72 65 61 64 5f 62 75    while (read_bu
f7e0: 66 66 65 72 28 62 75 66 66 65 72 2c 20 6c 65 6e  ffer(buffer, len
f7f0: 67 74 68 29 20 21 3d 20 45 4f 46 29 20 7b 0a 20  gth) != EOF) {. 
f800: 20 20 20 20 20 20 63 72 63 20 3d 20 63 72 63 33        crc = crc3
f810: 32 28 63 72 63 2c 20 62 75 66 66 65 72 2c 20 6c  2(crc, buffer, l
f820: 65 6e 67 74 68 29 3b 0a 20 20 20 20 20 7d 0a 20  ength);.     }. 
f830: 20 20 20 20 69 66 20 28 63 72 63 20 21 3d 20 6f      if (crc != o
f840: 72 69 67 69 6e 61 6c 5f 63 72 63 29 20 65 72 72  riginal_crc) err
f850: 6f 72 28 29 3b 0a 2a 2f 0a 0a 5a 45 58 54 45 52  or();.*/..ZEXTER
f860: 4e 20 75 4c 6f 6e 67 20 5a 45 58 50 4f 52 54 20  N uLong ZEXPORT 
f870: 63 72 63 33 32 5f 63 6f 6d 62 69 6e 65 20 4f 46  crc32_combine OF
f880: 28 28 75 4c 6f 6e 67 20 63 72 63 31 2c 20 75 4c  ((uLong crc1, uL
f890: 6f 6e 67 20 63 72 63 32 2c 20 7a 5f 6f 66 66 5f  ong crc2, z_off_
f8a0: 74 20 6c 65 6e 32 29 29 3b 0a 0a 2f 2a 0a 20 20  t len2));../*.  
f8b0: 20 20 20 43 6f 6d 62 69 6e 65 20 74 77 6f 20 43     Combine two C
f8c0: 52 43 2d 33 32 20 63 68 65 63 6b 20 76 61 6c 75  RC-32 check valu
f8d0: 65 73 20 69 6e 74 6f 20 6f 6e 65 2e 20 20 46 6f  es into one.  Fo
f8e0: 72 20 74 77 6f 20 73 65 71 75 65 6e 63 65 73 20  r two sequences 
f8f0: 6f 66 20 62 79 74 65 73 2c 0a 20 20 20 73 65 71  of bytes,.   seq
f900: 31 20 61 6e 64 20 73 65 71 32 20 77 69 74 68 20  1 and seq2 with 
f910: 6c 65 6e 67 74 68 73 20 6c 65 6e 31 20 61 6e 64  lengths len1 and
f920: 20 6c 65 6e 32 2c 20 43 52 43 2d 33 32 20 63 68   len2, CRC-32 ch
f930: 65 63 6b 20 76 61 6c 75 65 73 20 77 65 72 65 0a  eck values were.
f940: 20 20 20 63 61 6c 63 75 6c 61 74 65 64 20 66 6f     calculated fo
f950: 72 20 65 61 63 68 2c 20 63 72 63 31 20 61 6e 64  r each, crc1 and
f960: 20 63 72 63 32 2e 20 20 63 72 63 33 32 5f 63 6f   crc2.  crc32_co
f970: 6d 62 69 6e 65 28 29 20 72 65 74 75 72 6e 73 20  mbine() returns 
f980: 74 68 65 20 43 52 43 2d 33 32 0a 20 20 20 63 68  the CRC-32.   ch
f990: 65 63 6b 20 76 61 6c 75 65 20 6f 66 20 73 65 71  eck value of seq
f9a0: 31 20 61 6e 64 20 73 65 71 32 20 63 6f 6e 63 61  1 and seq2 conca
f9b0: 74 65 6e 61 74 65 64 2c 20 72 65 71 75 69 72 69  tenated, requiri
f9c0: 6e 67 20 6f 6e 6c 79 20 63 72 63 31 2c 20 63 72  ng only crc1, cr
f9d0: 63 32 2c 20 61 6e 64 0a 20 20 20 6c 65 6e 32 2e  c2, and.   len2.
f9e0: 0a 2a 2f 0a 0a 0a 20 20 20 20 20 20 20 20 20 20  .*/...          
f9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
fa00: 20 76 61 72 69 6f 75 73 20 68 61 63 6b 73 2c 20   various hacks, 
fa10: 64 6f 6e 27 74 20 6c 6f 6f 6b 20 3a 29 20 2a 2f  don't look :) */
fa20: 0a 0a 2f 2a 20 64 65 66 6c 61 74 65 49 6e 69 74  ../* deflateInit
fa30: 20 61 6e 64 20 69 6e 66 6c 61 74 65 49 6e 69 74   and inflateInit
fa40: 20 61 72 65 20 6d 61 63 72 6f 73 20 74 6f 20 61   are macros to a
fa50: 6c 6c 6f 77 20 63 68 65 63 6b 69 6e 67 20 74 68  llow checking th
fa60: 65 20 7a 6c 69 62 20 76 65 72 73 69 6f 6e 0a 20  e zlib version. 
fa70: 2a 20 61 6e 64 20 74 68 65 20 63 6f 6d 70 69 6c  * and the compil
fa80: 65 72 27 73 20 76 69 65 77 20 6f 66 20 7a 5f 73  er's view of z_s
fa90: 74 72 65 61 6d 3a 0a 20 2a 2f 0a 5a 45 58 54 45  tream:. */.ZEXTE
faa0: 52 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 64  RN int ZEXPORT d
fab0: 65 66 6c 61 74 65 49 6e 69 74 5f 20 4f 46 28 28  eflateInit_ OF((
fac0: 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 2c 20  z_streamp strm, 
fad0: 69 6e 74 20 6c 65 76 65 6c 2c 0a 20 20 20 20 20  int level,.     
fae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
faf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb00: 63 6f 6e 73 74 20 63 68 61 72 20 2a 76 65 72 73  const char *vers
fb10: 69 6f 6e 2c 20 69 6e 74 20 73 74 72 65 61 6d 5f  ion, int stream_
fb20: 73 69 7a 65 29 29 3b 0a 5a 45 58 54 45 52 4e 20  size));.ZEXTERN 
fb30: 69 6e 74 20 5a 45 58 50 4f 52 54 20 69 6e 66 6c  int ZEXPORT infl
fb40: 61 74 65 49 6e 69 74 5f 20 4f 46 28 28 7a 5f 73  ateInit_ OF((z_s
fb50: 74 72 65 61 6d 70 20 73 74 72 6d 2c 0a 20 20 20  treamp strm,.   
fb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb80: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 76 65    const char *ve
fb90: 72 73 69 6f 6e 2c 20 69 6e 74 20 73 74 72 65 61  rsion, int strea
fba0: 6d 5f 73 69 7a 65 29 29 3b 0a 5a 45 58 54 45 52  m_size));.ZEXTER
fbb0: 4e 20 69 6e 74 20 5a 45 58 50 4f 52 54 20 64 65  N int ZEXPORT de
fbc0: 66 6c 61 74 65 49 6e 69 74 32 5f 20 4f 46 28 28  flateInit2_ OF((
fbd0: 7a 5f 73 74 72 65 61 6d 70 20 73 74 72 6d 2c 20  z_streamp strm, 
fbe0: 69 6e 74 20 20 6c 65 76 65 6c 2c 20 69 6e 74 20  int  level, int 
fbf0: 20 6d 65 74 68 6f 64 2c 0a 20 20 20 20 20 20 20   method,.       
fc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
fc20: 6e 74 20 77 69 6e 64 6f 77 42 69 74 73 2c 20 69  nt windowBits, i
fc30: 6e 74 20 6d 65 6d 4c 65 76 65 6c 2c 0a 20 20 20  nt memLevel,.   
fc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc60: 20 20 20 69 6e 74 20 73 74 72 61 74 65 67 79 2c     int strategy,
fc70: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 76 65 72   const char *ver
fc80: 73 69 6f 6e 2c 0a 20 20 20 20 20 20 20 20 20 20  sion,.          
fc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fca0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
fcb0: 73 74 72 65 61 6d 5f 73 69 7a 65 29 29 3b 0a 5a  stream_size));.Z
fcc0: 45 58 54 45 52 4e 20 69 6e 74 20 5a 45 58 50 4f  EXTERN int ZEXPO
fcd0: 52 54 20 69 6e 66 6c 61 74 65 49 6e 69 74 32 5f  RT inflateInit2_
fce0: 20 4f 46 28 28 7a 5f 73 74 72 65 61 6d 70 20 73   OF((z_streamp s
fcf0: 74 72 6d 2c 20 69 6e 74 20 20 77 69 6e 64 6f 77  trm, int  window
fd00: 42 69 74 73 2c 0a 20 20 20 20 20 20 20 20 20 20  Bits,.          
fd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd20: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
fd30: 74 20 63 68 61 72 20 2a 76 65 72 73 69 6f 6e 2c  t char *version,
fd40: 20 69 6e 74 20 73 74 72 65 61 6d 5f 73 69 7a 65   int stream_size
fd50: 29 29 3b 0a 5a 45 58 54 45 52 4e 20 69 6e 74 20  ));.ZEXTERN int 
fd60: 5a 45 58 50 4f 52 54 20 69 6e 66 6c 61 74 65 42  ZEXPORT inflateB
fd70: 61 63 6b 49 6e 69 74 5f 20 4f 46 28 28 7a 5f 73  ackInit_ OF((z_s
fd80: 74 72 65 61 6d 70 20 73 74 72 6d 2c 20 69 6e 74  treamp strm, int
fd90: 20 77 69 6e 64 6f 77 42 69 74 73 2c 0a 20 20 20   windowBits,.   
fda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fdc0: 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63        unsigned c
fdd0: 68 61 72 20 46 41 52 20 2a 77 69 6e 64 6f 77 2c  har FAR *window,
fde0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe00: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20            const 
fe10: 63 68 61 72 20 2a 76 65 72 73 69 6f 6e 2c 0a 20  char *version,. 
fe20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe40: 20 20 20 20 20 20 20 20 69 6e 74 20 73 74 72 65          int stre
fe50: 61 6d 5f 73 69 7a 65 29 29 3b 0a 23 64 65 66 69  am_size));.#defi
fe60: 6e 65 20 64 65 66 6c 61 74 65 49 6e 69 74 28 73  ne deflateInit(s
fe70: 74 72 6d 2c 20 6c 65 76 65 6c 29 20 5c 0a 20 20  trm, level) \.  
fe80: 20 20 20 20 20 20 64 65 66 6c 61 74 65 49 6e 69        deflateIni
fe90: 74 5f 28 28 73 74 72 6d 29 2c 20 28 6c 65 76 65  t_((strm), (leve
fea0: 6c 29 2c 20 20 20 20 20 20 20 5a 4c 49 42 5f 56  l),       ZLIB_V
feb0: 45 52 53 49 4f 4e 2c 20 73 69 7a 65 6f 66 28 7a  ERSION, sizeof(z
fec0: 5f 73 74 72 65 61 6d 29 29 0a 23 64 65 66 69 6e  _stream)).#defin
fed0: 65 20 69 6e 66 6c 61 74 65 49 6e 69 74 28 73 74  e inflateInit(st
fee0: 72 6d 29 20 5c 0a 20 20 20 20 20 20 20 20 69 6e  rm) \.        in
fef0: 66 6c 61 74 65 49 6e 69 74 5f 28 28 73 74 72 6d  flateInit_((strm
ff00: 29 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ),              
ff10: 20 20 5a 4c 49 42 5f 56 45 52 53 49 4f 4e 2c 20    ZLIB_VERSION, 
ff20: 73 69 7a 65 6f 66 28 7a 5f 73 74 72 65 61 6d 29  sizeof(z_stream)
ff30: 29 0a 23 64 65 66 69 6e 65 20 64 65 66 6c 61 74  ).#define deflat
ff40: 65 49 6e 69 74 32 28 73 74 72 6d 2c 20 6c 65 76  eInit2(strm, lev
ff50: 65 6c 2c 20 6d 65 74 68 6f 64 2c 20 77 69 6e 64  el, method, wind
ff60: 6f 77 42 69 74 73 2c 20 6d 65 6d 4c 65 76 65 6c  owBits, memLevel
ff70: 2c 20 73 74 72 61 74 65 67 79 29 20 5c 0a 20 20  , strategy) \.  
ff80: 20 20 20 20 20 20 64 65 66 6c 61 74 65 49 6e 69        deflateIni
ff90: 74 32 5f 28 28 73 74 72 6d 29 2c 28 6c 65 76 65  t2_((strm),(leve
ffa0: 6c 29 2c 28 6d 65 74 68 6f 64 29 2c 28 77 69 6e  l),(method),(win
ffb0: 64 6f 77 42 69 74 73 29 2c 28 6d 65 6d 4c 65 76  dowBits),(memLev
ffc0: 65 6c 29 2c 5c 0a 20 20 20 20 20 20 20 20 20 20  el),\.          
ffd0: 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72              (str
ffe0: 61 74 65 67 79 29 2c 20 20 20 20 20 20 20 20 20  ategy),         
fff0: 20 20 5a 4c 49 42 5f 56 45 52 53 49 4f 4e 2c 20    ZLIB_VERSION, 
10000 73 69 7a 65 6f 66 28 7a 5f 73 74 72 65 61 6d 29  sizeof(z_stream)
10010 29 0a 23 64 65 66 69 6e 65 20 69 6e 66 6c 61 74  ).#define inflat
10020 65 49 6e 69 74 32 28 73 74 72 6d 2c 20 77 69 6e  eInit2(strm, win
10030 64 6f 77 42 69 74 73 29 20 5c 0a 20 20 20 20 20  dowBits) \.     
10040 20 20 20 69 6e 66 6c 61 74 65 49 6e 69 74 32 5f     inflateInit2_
10050 28 28 73 74 72 6d 29 2c 20 28 77 69 6e 64 6f 77  ((strm), (window
10060 42 69 74 73 29 2c 20 5a 4c 49 42 5f 56 45 52 53  Bits), ZLIB_VERS
10070 49 4f 4e 2c 20 73 69 7a 65 6f 66 28 7a 5f 73 74  ION, sizeof(z_st
10080 72 65 61 6d 29 29 0a 23 64 65 66 69 6e 65 20 69  ream)).#define i
10090 6e 66 6c 61 74 65 42 61 63 6b 49 6e 69 74 28 73  nflateBackInit(s
100a0 74 72 6d 2c 20 77 69 6e 64 6f 77 42 69 74 73 2c  trm, windowBits,
100b0 20 77 69 6e 64 6f 77 29 20 5c 0a 20 20 20 20 20   window) \.     
100c0 20 20 20 69 6e 66 6c 61 74 65 42 61 63 6b 49 6e     inflateBackIn
100d0 69 74 5f 28 28 73 74 72 6d 29 2c 20 28 77 69 6e  it_((strm), (win
100e0 64 6f 77 42 69 74 73 29 2c 20 28 77 69 6e 64 6f  dowBits), (windo
100f0 77 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 5a 4c  w), \.        ZL
10100 49 42 5f 56 45 52 53 49 4f 4e 2c 20 73 69 7a 65  IB_VERSION, size
10110 6f 66 28 7a 5f 73 74 72 65 61 6d 29 29 0a 0a 0a  of(z_stream))...
10120 23 69 66 20 21 64 65 66 69 6e 65 64 28 5a 55 54  #if !defined(ZUT
10130 49 4c 5f 48 29 20 26 26 20 21 64 65 66 69 6e 65  IL_H) && !define
10140 64 28 4e 4f 5f 44 55 4d 4d 59 5f 44 45 43 4c 29  d(NO_DUMMY_DECL)
10150 0a 20 20 20 20 73 74 72 75 63 74 20 69 6e 74 65  .    struct inte
10160 72 6e 61 6c 5f 73 74 61 74 65 20 7b 69 6e 74 20  rnal_state {int 
10170 64 75 6d 6d 79 3b 7d 3b 20 2f 2a 20 68 61 63 6b  dummy;}; /* hack
10180 20 66 6f 72 20 62 75 67 67 79 20 63 6f 6d 70 69   for buggy compi
10190 6c 65 72 73 20 2a 2f 0a 23 65 6e 64 69 66 0a 0a  lers */.#endif..
101a0 5a 45 58 54 45 52 4e 20 63 6f 6e 73 74 20 63 68  ZEXTERN const ch
101b0 61 72 20 20 20 2a 20 5a 45 58 50 4f 52 54 20 7a  ar   * ZEXPORT z
101c0 45 72 72 6f 72 20 20 20 20 20 20 20 20 20 20 20  Error           
101d0 4f 46 28 28 69 6e 74 29 29 3b 0a 5a 45 58 54 45  OF((int));.ZEXTE
101e0 52 4e 20 69 6e 74 20 20 20 20 20 20 20 20 20 20  RN int          
101f0 20 20 5a 45 58 50 4f 52 54 20 69 6e 66 6c 61 74    ZEXPORT inflat
10200 65 53 79 6e 63 50 6f 69 6e 74 20 4f 46 28 28 7a  eSyncPoint OF((z
10210 5f 73 74 72 65 61 6d 70 20 7a 29 29 3b 0a 5a 45  _streamp z));.ZE
10220 58 54 45 52 4e 20 63 6f 6e 73 74 20 75 4c 6f 6e  XTERN const uLon
10230 67 66 20 2a 20 5a 45 58 50 4f 52 54 20 67 65 74  gf * ZEXPORT get
10240 5f 63 72 63 5f 74 61 62 6c 65 20 20 20 20 4f 46  _crc_table    OF
10250 28 28 76 6f 69 64 29 29 3b 0a 0a 23 69 66 64 65  ((void));..#ifde
10260 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 7d 0a  f __cplusplus.}.
10270 23 65 6e 64 69 66 0a 0a 23 65 6e 64 69 66 20 2f  #endif..#endif /
10280 2a 20 5a 4c 49 42 5f 48 20 2a 2f 0a              * ZLIB_H */.