LCOV - code coverage report
Current view: top level - include/linux - zlib.h (source / functions) Hit Total Coverage
Test: combined.info Lines: 0 2 0.0 %
Date: 2022-04-01 13:59:58 Functions: 0 0 -
Branches: 0 2 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* zlib.h -- interface of the 'zlib' general purpose compression library
       2                 :            : 
       3                 :            :   Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
       4                 :            : 
       5                 :            :   This software is provided 'as-is', without any express or implied
       6                 :            :   warranty.  In no event will the authors be held liable for any damages
       7                 :            :   arising from the use of this software.
       8                 :            : 
       9                 :            :   Permission is granted to anyone to use this software for any purpose,
      10                 :            :   including commercial applications, and to alter it and redistribute it
      11                 :            :   freely, subject to the following restrictions:
      12                 :            : 
      13                 :            :   1. The origin of this software must not be misrepresented; you must not
      14                 :            :      claim that you wrote the original software. If you use this software
      15                 :            :      in a product, an acknowledgment in the product documentation would be
      16                 :            :      appreciated but is not required.
      17                 :            :   2. Altered source versions must be plainly marked as such, and must not be
      18                 :            :      misrepresented as being the original software.
      19                 :            :   3. This notice may not be removed or altered from any source distribution.
      20                 :            : 
      21                 :            :   Jean-loup Gailly        Mark Adler
      22                 :            :   jloup@gzip.org          madler@alumni.caltech.edu
      23                 :            : 
      24                 :            : 
      25                 :            :   The data format used by the zlib library is described by RFCs (Request for
      26                 :            :   Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt
      27                 :            :   (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
      28                 :            : */
      29                 :            : 
      30                 :            : #ifndef _ZLIB_H
      31                 :            : #define _ZLIB_H
      32                 :            : 
      33                 :            : #include <linux/zconf.h>
      34                 :            : 
      35                 :            : /* zlib deflate based on ZLIB_VERSION "1.1.3" */
      36                 :            : /* zlib inflate based on ZLIB_VERSION "1.2.3" */
      37                 :            : 
      38                 :            : /*
      39                 :            :   This is a modified version of zlib for use inside the Linux kernel.
      40                 :            :   The main changes are to perform all memory allocation in advance.
      41                 :            : 
      42                 :            :   Inflation Changes:
      43                 :            :     * Z_PACKET_FLUSH is added and used by ppp_deflate. Before returning
      44                 :            :       this checks there is no more input data available and the next data
      45                 :            :       is a STORED block. It also resets the mode to be read for the next
      46                 :            :       data, all as per PPP requirements.
      47                 :            :     * Addition of zlib_inflateIncomp which copies incompressible data into
      48                 :            :       the history window and adjusts the accoutning without calling
      49                 :            :       zlib_inflate itself to inflate the data.
      50                 :            : */
      51                 :            : 
      52                 :            : /* 
      53                 :            :      The 'zlib' compression library provides in-memory compression and
      54                 :            :   decompression functions, including integrity checks of the uncompressed
      55                 :            :   data.  This version of the library supports only one compression method
      56                 :            :   (deflation) but other algorithms will be added later and will have the same
      57                 :            :   stream interface.
      58                 :            : 
      59                 :            :      Compression can be done in a single step if the buffers are large
      60                 :            :   enough (for example if an input file is mmap'ed), or can be done by
      61                 :            :   repeated calls of the compression function.  In the latter case, the
      62                 :            :   application must provide more input and/or consume the output
      63                 :            :   (providing more output space) before each call.
      64                 :            : 
      65                 :            :      The compressed data format used by default by the in-memory functions is
      66                 :            :   the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
      67                 :            :   around a deflate stream, which is itself documented in RFC 1951.
      68                 :            : 
      69                 :            :      The library also supports reading and writing files in gzip (.gz) format
      70                 :            :   with an interface similar to that of stdio.
      71                 :            : 
      72                 :            :      The zlib format was designed to be compact and fast for use in memory
      73                 :            :   and on communications channels.  The gzip format was designed for single-
      74                 :            :   file compression on file systems, has a larger header than zlib to maintain
      75                 :            :   directory information, and uses a different, slower check method than zlib.
      76                 :            : 
      77                 :            :      The library does not install any signal handler. The decoder checks
      78                 :            :   the consistency of the compressed data, so the library should never
      79                 :            :   crash even in case of corrupted input.
      80                 :            : */
      81                 :            : 
      82                 :            : struct internal_state;
      83                 :            : 
      84                 :            : typedef struct z_stream_s {
      85                 :            :     const Byte *next_in;   /* next input byte */
      86                 :            :         uLong avail_in;  /* number of bytes available at next_in */
      87                 :            :     uLong    total_in;  /* total nb of input bytes read so far */
      88                 :            : 
      89                 :            :     Byte    *next_out;  /* next output byte should be put there */
      90                 :            :         uLong avail_out; /* remaining free space at next_out */
      91                 :            :     uLong    total_out; /* total nb of bytes output so far */
      92                 :            : 
      93                 :            :     char     *msg;      /* last error message, NULL if no error */
      94                 :            :     struct internal_state *state; /* not visible by applications */
      95                 :            : 
      96                 :            :     void     *workspace; /* memory allocated for this stream */
      97                 :            : 
      98                 :            :     int     data_type;  /* best guess about the data type: ascii or binary */
      99                 :            :     uLong   adler;      /* adler32 value of the uncompressed data */
     100                 :            :     uLong   reserved;   /* reserved for future use */
     101                 :            : } z_stream;
     102                 :            : 
     103                 :            : typedef z_stream *z_streamp;
     104                 :            : 
     105                 :            : /*
     106                 :            :    The application must update next_in and avail_in when avail_in has
     107                 :            :    dropped to zero. It must update next_out and avail_out when avail_out
     108                 :            :    has dropped to zero. The application must initialize zalloc, zfree and
     109                 :            :    opaque before calling the init function. All other fields are set by the
     110                 :            :    compression library and must not be updated by the application.
     111                 :            : 
     112                 :            :    The opaque value provided by the application will be passed as the first
     113                 :            :    parameter for calls of zalloc and zfree. This can be useful for custom
     114                 :            :    memory management. The compression library attaches no meaning to the
     115                 :            :    opaque value.
     116                 :            : 
     117                 :            :    zalloc must return NULL if there is not enough memory for the object.
     118                 :            :    If zlib is used in a multi-threaded application, zalloc and zfree must be
     119                 :            :    thread safe.
     120                 :            : 
     121                 :            :    On 16-bit systems, the functions zalloc and zfree must be able to allocate
     122                 :            :    exactly 65536 bytes, but will not be required to allocate more than this
     123                 :            :    if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
     124                 :            :    pointers returned by zalloc for objects of exactly 65536 bytes *must*
     125                 :            :    have their offset normalized to zero. The default allocation function
     126                 :            :    provided by this library ensures this (see zutil.c). To reduce memory
     127                 :            :    requirements and avoid any allocation of 64K objects, at the expense of
     128                 :            :    compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
     129                 :            : 
     130                 :            :    The fields total_in and total_out can be used for statistics or
     131                 :            :    progress reports. After compression, total_in holds the total size of
     132                 :            :    the uncompressed data and may be saved for use in the decompressor
     133                 :            :    (particularly if the decompressor wants to decompress everything in
     134                 :            :    a single step).
     135                 :            : */
     136                 :            : 
     137                 :            :                         /* constants */
     138                 :            : 
     139                 :            : #define Z_NO_FLUSH      0
     140                 :            : #define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
     141                 :            : #define Z_PACKET_FLUSH  2
     142                 :            : #define Z_SYNC_FLUSH    3
     143                 :            : #define Z_FULL_FLUSH    4
     144                 :            : #define Z_FINISH        5
     145                 :            : #define Z_BLOCK         6 /* Only for inflate at present */
     146                 :            : /* Allowed flush values; see deflate() and inflate() below for details */
     147                 :            : 
     148                 :            : #define Z_OK            0
     149                 :            : #define Z_STREAM_END    1
     150                 :            : #define Z_NEED_DICT     2
     151                 :            : #define Z_ERRNO        (-1)
     152                 :            : #define Z_STREAM_ERROR (-2)
     153                 :            : #define Z_DATA_ERROR   (-3)
     154                 :            : #define Z_MEM_ERROR    (-4)
     155                 :            : #define Z_BUF_ERROR    (-5)
     156                 :            : #define Z_VERSION_ERROR (-6)
     157                 :            : /* Return codes for the compression/decompression functions. Negative
     158                 :            :  * values are errors, positive values are used for special but normal events.
     159                 :            :  */
     160                 :            : 
     161                 :            : #define Z_NO_COMPRESSION         0
     162                 :            : #define Z_BEST_SPEED             1
     163                 :            : #define Z_BEST_COMPRESSION       9
     164                 :            : #define Z_DEFAULT_COMPRESSION  (-1)
     165                 :            : /* compression levels */
     166                 :            : 
     167                 :            : #define Z_FILTERED            1
     168                 :            : #define Z_HUFFMAN_ONLY        2
     169                 :            : #define Z_DEFAULT_STRATEGY    0
     170                 :            : /* compression strategy; see deflateInit2() below for details */
     171                 :            : 
     172                 :            : #define Z_BINARY   0
     173                 :            : #define Z_ASCII    1
     174                 :            : #define Z_UNKNOWN  2
     175                 :            : /* Possible values of the data_type field */
     176                 :            : 
     177                 :            : #define Z_DEFLATED   8
     178                 :            : /* The deflate compression method (the only one supported in this version) */
     179                 :            : 
     180                 :            :                         /* basic functions */
     181                 :            : 
     182                 :            : extern int zlib_deflate_workspacesize (int windowBits, int memLevel);
     183                 :            : /*
     184                 :            :    Returns the number of bytes that needs to be allocated for a per-
     185                 :            :    stream workspace with the specified parameters.  A pointer to this
     186                 :            :    number of bytes should be returned in stream->workspace before
     187                 :            :    you call zlib_deflateInit() or zlib_deflateInit2().  If you call
     188                 :            :    zlib_deflateInit(), specify windowBits = MAX_WBITS and memLevel =
     189                 :            :    MAX_MEM_LEVEL here.  If you call zlib_deflateInit2(), the windowBits
     190                 :            :    and memLevel parameters passed to zlib_deflateInit2() must not
     191                 :            :    exceed those passed here.
     192                 :            : */
     193                 :            : 
     194                 :            : extern int zlib_deflate_dfltcc_enabled (void);
     195                 :            : /*
     196                 :            :    Returns 1 if Deflate-Conversion facility is installed and enabled,
     197                 :            :    otherwise 0.
     198                 :            : */
     199                 :            : 
     200                 :            : /* 
     201                 :            : extern int deflateInit (z_streamp strm, int level);
     202                 :            : 
     203                 :            :      Initializes the internal stream state for compression. The fields
     204                 :            :    zalloc, zfree and opaque must be initialized before by the caller.
     205                 :            :    If zalloc and zfree are set to NULL, deflateInit updates them to
     206                 :            :    use default allocation functions.
     207                 :            : 
     208                 :            :      The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
     209                 :            :    1 gives best speed, 9 gives best compression, 0 gives no compression at
     210                 :            :    all (the input data is simply copied a block at a time).
     211                 :            :    Z_DEFAULT_COMPRESSION requests a default compromise between speed and
     212                 :            :    compression (currently equivalent to level 6).
     213                 :            : 
     214                 :            :      deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
     215                 :            :    enough memory, Z_STREAM_ERROR if level is not a valid compression level,
     216                 :            :    Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
     217                 :            :    with the version assumed by the caller (ZLIB_VERSION).
     218                 :            :    msg is set to null if there is no error message.  deflateInit does not
     219                 :            :    perform any compression: this will be done by deflate().
     220                 :            : */
     221                 :            : 
     222                 :            : 
     223                 :            : extern int zlib_deflate (z_streamp strm, int flush);
     224                 :            : /*
     225                 :            :     deflate compresses as much data as possible, and stops when the input
     226                 :            :   buffer becomes empty or the output buffer becomes full. It may introduce some
     227                 :            :   output latency (reading input without producing any output) except when
     228                 :            :   forced to flush.
     229                 :            : 
     230                 :            :     The detailed semantics are as follows. deflate performs one or both of the
     231                 :            :   following actions:
     232                 :            : 
     233                 :            :   - Compress more input starting at next_in and update next_in and avail_in
     234                 :            :     accordingly. If not all input can be processed (because there is not
     235                 :            :     enough room in the output buffer), next_in and avail_in are updated and
     236                 :            :     processing will resume at this point for the next call of deflate().
     237                 :            : 
     238                 :            :   - Provide more output starting at next_out and update next_out and avail_out
     239                 :            :     accordingly. This action is forced if the parameter flush is non zero.
     240                 :            :     Forcing flush frequently degrades the compression ratio, so this parameter
     241                 :            :     should be set only when necessary (in interactive applications).
     242                 :            :     Some output may be provided even if flush is not set.
     243                 :            : 
     244                 :            :   Before the call of deflate(), the application should ensure that at least
     245                 :            :   one of the actions is possible, by providing more input and/or consuming
     246                 :            :   more output, and updating avail_in or avail_out accordingly; avail_out
     247                 :            :   should never be zero before the call. The application can consume the
     248                 :            :   compressed output when it wants, for example when the output buffer is full
     249                 :            :   (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
     250                 :            :   and with zero avail_out, it must be called again after making room in the
     251                 :            :   output buffer because there might be more output pending.
     252                 :            : 
     253                 :            :     If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
     254                 :            :   flushed to the output buffer and the output is aligned on a byte boundary, so
     255                 :            :   that the decompressor can get all input data available so far. (In particular
     256                 :            :   avail_in is zero after the call if enough output space has been provided
     257                 :            :   before the call.)  Flushing may degrade compression for some compression
     258                 :            :   algorithms and so it should be used only when necessary.
     259                 :            : 
     260                 :            :     If flush is set to Z_FULL_FLUSH, all output is flushed as with
     261                 :            :   Z_SYNC_FLUSH, and the compression state is reset so that decompression can
     262                 :            :   restart from this point if previous compressed data has been damaged or if
     263                 :            :   random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
     264                 :            :   the compression.
     265                 :            : 
     266                 :            :     If deflate returns with avail_out == 0, this function must be called again
     267                 :            :   with the same value of the flush parameter and more output space (updated
     268                 :            :   avail_out), until the flush is complete (deflate returns with non-zero
     269                 :            :   avail_out).
     270                 :            : 
     271                 :            :     If the parameter flush is set to Z_FINISH, pending input is processed,
     272                 :            :   pending output is flushed and deflate returns with Z_STREAM_END if there
     273                 :            :   was enough output space; if deflate returns with Z_OK, this function must be
     274                 :            :   called again with Z_FINISH and more output space (updated avail_out) but no
     275                 :            :   more input data, until it returns with Z_STREAM_END or an error. After
     276                 :            :   deflate has returned Z_STREAM_END, the only possible operations on the
     277                 :            :   stream are deflateReset or deflateEnd.
     278                 :            :   
     279                 :            :     Z_FINISH can be used immediately after deflateInit if all the compression
     280                 :            :   is to be done in a single step. In this case, avail_out must be at least
     281                 :            :   0.1% larger than avail_in plus 12 bytes.  If deflate does not return
     282                 :            :   Z_STREAM_END, then it must be called again as described above.
     283                 :            : 
     284                 :            :     deflate() sets strm->adler to the adler32 checksum of all input read
     285                 :            :   so far (that is, total_in bytes).
     286                 :            : 
     287                 :            :     deflate() may update data_type if it can make a good guess about
     288                 :            :   the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
     289                 :            :   binary. This field is only for information purposes and does not affect
     290                 :            :   the compression algorithm in any manner.
     291                 :            : 
     292                 :            :     deflate() returns Z_OK if some progress has been made (more input
     293                 :            :   processed or more output produced), Z_STREAM_END if all input has been
     294                 :            :   consumed and all output has been produced (only when flush is set to
     295                 :            :   Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
     296                 :            :   if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
     297                 :            :   (for example avail_in or avail_out was zero).
     298                 :            : */
     299                 :            : 
     300                 :            : 
     301                 :            : extern int zlib_deflateEnd (z_streamp strm);
     302                 :            : /*
     303                 :            :      All dynamically allocated data structures for this stream are freed.
     304                 :            :    This function discards any unprocessed input and does not flush any
     305                 :            :    pending output.
     306                 :            : 
     307                 :            :      deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
     308                 :            :    stream state was inconsistent, Z_DATA_ERROR if the stream was freed
     309                 :            :    prematurely (some input or output was discarded). In the error case,
     310                 :            :    msg may be set but then points to a static string (which must not be
     311                 :            :    deallocated).
     312                 :            : */
     313                 :            : 
     314                 :            : 
     315                 :            : extern int zlib_inflate_workspacesize (void);
     316                 :            : /*
     317                 :            :    Returns the number of bytes that needs to be allocated for a per-
     318                 :            :    stream workspace.  A pointer to this number of bytes should be
     319                 :            :    returned in stream->workspace before calling zlib_inflateInit().
     320                 :            : */
     321                 :            : 
     322                 :            : /* 
     323                 :            : extern int zlib_inflateInit (z_streamp strm);
     324                 :            : 
     325                 :            :      Initializes the internal stream state for decompression. The fields
     326                 :            :    next_in, avail_in, and workspace must be initialized before by
     327                 :            :    the caller. If next_in is not NULL and avail_in is large enough (the exact
     328                 :            :    value depends on the compression method), inflateInit determines the
     329                 :            :    compression method from the zlib header and allocates all data structures
     330                 :            :    accordingly; otherwise the allocation will be deferred to the first call of
     331                 :            :    inflate.  If zalloc and zfree are set to NULL, inflateInit updates them to
     332                 :            :    use default allocation functions.
     333                 :            : 
     334                 :            :      inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
     335                 :            :    memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
     336                 :            :    version assumed by the caller.  msg is set to null if there is no error
     337                 :            :    message. inflateInit does not perform any decompression apart from reading
     338                 :            :    the zlib header if present: this will be done by inflate().  (So next_in and
     339                 :            :    avail_in may be modified, but next_out and avail_out are unchanged.)
     340                 :            : */
     341                 :            : 
     342                 :            : 
     343                 :            : extern int zlib_inflate (z_streamp strm, int flush);
     344                 :            : /*
     345                 :            :     inflate decompresses as much data as possible, and stops when the input
     346                 :            :   buffer becomes empty or the output buffer becomes full. It may introduce
     347                 :            :   some output latency (reading input without producing any output) except when
     348                 :            :   forced to flush.
     349                 :            : 
     350                 :            :   The detailed semantics are as follows. inflate performs one or both of the
     351                 :            :   following actions:
     352                 :            : 
     353                 :            :   - Decompress more input starting at next_in and update next_in and avail_in
     354                 :            :     accordingly. If not all input can be processed (because there is not
     355                 :            :     enough room in the output buffer), next_in is updated and processing
     356                 :            :     will resume at this point for the next call of inflate().
     357                 :            : 
     358                 :            :   - Provide more output starting at next_out and update next_out and avail_out
     359                 :            :     accordingly.  inflate() provides as much output as possible, until there
     360                 :            :     is no more input data or no more space in the output buffer (see below
     361                 :            :     about the flush parameter).
     362                 :            : 
     363                 :            :   Before the call of inflate(), the application should ensure that at least
     364                 :            :   one of the actions is possible, by providing more input and/or consuming
     365                 :            :   more output, and updating the next_* and avail_* values accordingly.
     366                 :            :   The application can consume the uncompressed output when it wants, for
     367                 :            :   example when the output buffer is full (avail_out == 0), or after each
     368                 :            :   call of inflate(). If inflate returns Z_OK and with zero avail_out, it
     369                 :            :   must be called again after making room in the output buffer because there
     370                 :            :   might be more output pending.
     371                 :            : 
     372                 :            :     The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
     373                 :            :   Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
     374                 :            :   output as possible to the output buffer. Z_BLOCK requests that inflate() stop
     375                 :            :   if and when it gets to the next deflate block boundary. When decoding the
     376                 :            :   zlib or gzip format, this will cause inflate() to return immediately after
     377                 :            :   the header and before the first block. When doing a raw inflate, inflate()
     378                 :            :   will go ahead and process the first block, and will return when it gets to
     379                 :            :   the end of that block, or when it runs out of data.
     380                 :            : 
     381                 :            :     The Z_BLOCK option assists in appending to or combining deflate streams.
     382                 :            :   Also to assist in this, on return inflate() will set strm->data_type to the
     383                 :            :   number of unused bits in the last byte taken from strm->next_in, plus 64
     384                 :            :   if inflate() is currently decoding the last block in the deflate stream,
     385                 :            :   plus 128 if inflate() returned immediately after decoding an end-of-block
     386                 :            :   code or decoding the complete header up to just before the first byte of the
     387                 :            :   deflate stream. The end-of-block will not be indicated until all of the
     388                 :            :   uncompressed data from that block has been written to strm->next_out.  The
     389                 :            :   number of unused bits may in general be greater than seven, except when
     390                 :            :   bit 7 of data_type is set, in which case the number of unused bits will be
     391                 :            :   less than eight.
     392                 :            : 
     393                 :            :     inflate() should normally be called until it returns Z_STREAM_END or an
     394                 :            :   error. However if all decompression is to be performed in a single step
     395                 :            :   (a single call of inflate), the parameter flush should be set to
     396                 :            :   Z_FINISH. In this case all pending input is processed and all pending
     397                 :            :   output is flushed; avail_out must be large enough to hold all the
     398                 :            :   uncompressed data. (The size of the uncompressed data may have been saved
     399                 :            :   by the compressor for this purpose.) The next operation on this stream must
     400                 :            :   be inflateEnd to deallocate the decompression state. The use of Z_FINISH
     401                 :            :   is never required, but can be used to inform inflate that a faster approach
     402                 :            :   may be used for the single inflate() call.
     403                 :            : 
     404                 :            :      In this implementation, inflate() always flushes as much output as
     405                 :            :   possible to the output buffer, and always uses the faster approach on the
     406                 :            :   first call. So the only effect of the flush parameter in this implementation
     407                 :            :   is on the return value of inflate(), as noted below, or when it returns early
     408                 :            :   because Z_BLOCK is used.
     409                 :            : 
     410                 :            :      If a preset dictionary is needed after this call (see inflateSetDictionary
     411                 :            :   below), inflate sets strm->adler to the adler32 checksum of the dictionary
     412                 :            :   chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
     413                 :            :   strm->adler to the adler32 checksum of all output produced so far (that is,
     414                 :            :   total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
     415                 :            :   below. At the end of the stream, inflate() checks that its computed adler32
     416                 :            :   checksum is equal to that saved by the compressor and returns Z_STREAM_END
     417                 :            :   only if the checksum is correct.
     418                 :            : 
     419                 :            :     inflate() will decompress and check either zlib-wrapped or gzip-wrapped
     420                 :            :   deflate data.  The header type is detected automatically.  Any information
     421                 :            :   contained in the gzip header is not retained, so applications that need that
     422                 :            :   information should instead use raw inflate, see inflateInit2() below, or
     423                 :            :   inflateBack() and perform their own processing of the gzip header and
     424                 :            :   trailer.
     425                 :            : 
     426                 :            :     inflate() returns Z_OK if some progress has been made (more input processed
     427                 :            :   or more output produced), Z_STREAM_END if the end of the compressed data has
     428                 :            :   been reached and all uncompressed output has been produced, Z_NEED_DICT if a
     429                 :            :   preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
     430                 :            :   corrupted (input stream not conforming to the zlib format or incorrect check
     431                 :            :   value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
     432                 :            :   if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
     433                 :            :   Z_BUF_ERROR if no progress is possible or if there was not enough room in the
     434                 :            :   output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
     435                 :            :   inflate() can be called again with more input and more output space to
     436                 :            :   continue decompressing. If Z_DATA_ERROR is returned, the application may then
     437                 :            :   call inflateSync() to look for a good compression block if a partial recovery
     438                 :            :   of the data is desired.
     439                 :            : */
     440                 :            : 
     441                 :            : 
     442                 :            : extern int zlib_inflateEnd (z_streamp strm);
     443                 :            : /*
     444                 :            :      All dynamically allocated data structures for this stream are freed.
     445                 :            :    This function discards any unprocessed input and does not flush any
     446                 :            :    pending output.
     447                 :            : 
     448                 :            :      inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
     449                 :            :    was inconsistent. In the error case, msg may be set but then points to a
     450                 :            :    static string (which must not be deallocated).
     451                 :            : */
     452                 :            : 
     453                 :            :                         /* Advanced functions */
     454                 :            : 
     455                 :            : /*
     456                 :            :     The following functions are needed only in some special applications.
     457                 :            : */
     458                 :            : 
     459                 :            : /*   
     460                 :            : extern int deflateInit2 (z_streamp strm,
     461                 :            :                                      int  level,
     462                 :            :                                      int  method,
     463                 :            :                                      int  windowBits,
     464                 :            :                                      int  memLevel,
     465                 :            :                                      int  strategy);
     466                 :            : 
     467                 :            :      This is another version of deflateInit with more compression options. The
     468                 :            :    fields next_in, zalloc, zfree and opaque must be initialized before by
     469                 :            :    the caller.
     470                 :            : 
     471                 :            :      The method parameter is the compression method. It must be Z_DEFLATED in
     472                 :            :    this version of the library.
     473                 :            : 
     474                 :            :      The windowBits parameter is the base two logarithm of the window size
     475                 :            :    (the size of the history buffer).  It should be in the range 8..15 for this
     476                 :            :    version of the library. Larger values of this parameter result in better
     477                 :            :    compression at the expense of memory usage. The default value is 15 if
     478                 :            :    deflateInit is used instead.
     479                 :            : 
     480                 :            :      The memLevel parameter specifies how much memory should be allocated
     481                 :            :    for the internal compression state. memLevel=1 uses minimum memory but
     482                 :            :    is slow and reduces compression ratio; memLevel=9 uses maximum memory
     483                 :            :    for optimal speed. The default value is 8. See zconf.h for total memory
     484                 :            :    usage as a function of windowBits and memLevel.
     485                 :            : 
     486                 :            :      The strategy parameter is used to tune the compression algorithm. Use the
     487                 :            :    value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
     488                 :            :    filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no
     489                 :            :    string match).  Filtered data consists mostly of small values with a
     490                 :            :    somewhat random distribution. In this case, the compression algorithm is
     491                 :            :    tuned to compress them better. The effect of Z_FILTERED is to force more
     492                 :            :    Huffman coding and less string matching; it is somewhat intermediate
     493                 :            :    between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects
     494                 :            :    the compression ratio but not the correctness of the compressed output even
     495                 :            :    if it is not set appropriately.
     496                 :            : 
     497                 :            :       deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
     498                 :            :    memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
     499                 :            :    method). msg is set to null if there is no error message.  deflateInit2 does
     500                 :            :    not perform any compression: this will be done by deflate().
     501                 :            : */
     502                 :            : 
     503                 :            : extern int zlib_deflateReset (z_streamp strm);
     504                 :            : /*
     505                 :            :      This function is equivalent to deflateEnd followed by deflateInit,
     506                 :            :    but does not free and reallocate all the internal compression state.
     507                 :            :    The stream will keep the same compression level and any other attributes
     508                 :            :    that may have been set by deflateInit2.
     509                 :            : 
     510                 :            :       deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
     511                 :            :    stream state was inconsistent (such as zalloc or state being NULL).
     512                 :            : */
     513                 :            : 
     514                 :          0 : static inline unsigned long deflateBound(unsigned long s)
     515                 :            : {
     516         [ #  # ]:          0 :         return s + ((s + 7) >> 3) + ((s + 63) >> 6) + 11;
     517                 :            : }
     518                 :            : 
     519                 :            : /*   
     520                 :            : extern int inflateInit2 (z_streamp strm, int  windowBits);
     521                 :            : 
     522                 :            :      This is another version of inflateInit with an extra parameter. The
     523                 :            :    fields next_in, avail_in, zalloc, zfree and opaque must be initialized
     524                 :            :    before by the caller.
     525                 :            : 
     526                 :            :      The windowBits parameter is the base two logarithm of the maximum window
     527                 :            :    size (the size of the history buffer).  It should be in the range 8..15 for
     528                 :            :    this version of the library. The default value is 15 if inflateInit is used
     529                 :            :    instead. windowBits must be greater than or equal to the windowBits value
     530                 :            :    provided to deflateInit2() while compressing, or it must be equal to 15 if
     531                 :            :    deflateInit2() was not used. If a compressed stream with a larger window
     532                 :            :    size is given as input, inflate() will return with the error code
     533                 :            :    Z_DATA_ERROR instead of trying to allocate a larger window.
     534                 :            : 
     535                 :            :      windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
     536                 :            :    determines the window size. inflate() will then process raw deflate data,
     537                 :            :    not looking for a zlib or gzip header, not generating a check value, and not
     538                 :            :    looking for any check values for comparison at the end of the stream. This
     539                 :            :    is for use with other formats that use the deflate compressed data format
     540                 :            :    such as zip.  Those formats provide their own check values. If a custom
     541                 :            :    format is developed using the raw deflate format for compressed data, it is
     542                 :            :    recommended that a check value such as an adler32 or a crc32 be applied to
     543                 :            :    the uncompressed data as is done in the zlib, gzip, and zip formats.  For
     544                 :            :    most applications, the zlib format should be used as is. Note that comments
     545                 :            :    above on the use in deflateInit2() applies to the magnitude of windowBits.
     546                 :            : 
     547                 :            :      windowBits can also be greater than 15 for optional gzip decoding. Add
     548                 :            :    32 to windowBits to enable zlib and gzip decoding with automatic header
     549                 :            :    detection, or add 16 to decode only the gzip format (the zlib format will
     550                 :            :    return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is
     551                 :            :    a crc32 instead of an adler32.
     552                 :            : 
     553                 :            :      inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
     554                 :            :    memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
     555                 :            :    is set to null if there is no error message.  inflateInit2 does not perform
     556                 :            :    any decompression apart from reading the zlib header if present: this will
     557                 :            :    be done by inflate(). (So next_in and avail_in may be modified, but next_out
     558                 :            :    and avail_out are unchanged.)
     559                 :            : */
     560                 :            : 
     561                 :            : extern int zlib_inflateReset (z_streamp strm);
     562                 :            : /*
     563                 :            :      This function is equivalent to inflateEnd followed by inflateInit,
     564                 :            :    but does not free and reallocate all the internal decompression state.
     565                 :            :    The stream will keep attributes that may have been set by inflateInit2.
     566                 :            : 
     567                 :            :       inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
     568                 :            :    stream state was inconsistent (such as zalloc or state being NULL).
     569                 :            : */
     570                 :            : 
     571                 :            : extern int zlib_inflateIncomp (z_stream *strm);
     572                 :            : /*
     573                 :            :      This function adds the data at next_in (avail_in bytes) to the output
     574                 :            :    history without performing any output.  There must be no pending output,
     575                 :            :    and the decompressor must be expecting to see the start of a block.
     576                 :            :    Calling this function is equivalent to decompressing a stored block
     577                 :            :    containing the data at next_in (except that the data is not output).
     578                 :            : */
     579                 :            : 
     580                 :            : #define zlib_deflateInit(strm, level) \
     581                 :            :         zlib_deflateInit2((strm), (level), Z_DEFLATED, MAX_WBITS, \
     582                 :            :                               DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY)
     583                 :            : #define zlib_inflateInit(strm) \
     584                 :            :         zlib_inflateInit2((strm), DEF_WBITS)
     585                 :            : 
     586                 :            : extern int zlib_deflateInit2(z_streamp strm, int  level, int  method,
     587                 :            :                                       int windowBits, int memLevel,
     588                 :            :                                       int strategy);
     589                 :            : extern int zlib_inflateInit2(z_streamp strm, int  windowBits);
     590                 :            : 
     591                 :            : #if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)
     592                 :            :     struct internal_state {int dummy;}; /* hack for buggy compilers */
     593                 :            : #endif
     594                 :            : 
     595                 :            : /* Utility function: initialize zlib, unpack binary blob, clean up zlib,
     596                 :            :  * return len or negative error code. */
     597                 :            : extern int zlib_inflate_blob(void *dst, unsigned dst_sz, const void *src, unsigned src_sz);
     598                 :            : 
     599                 :            : #endif /* _ZLIB_H */

Generated by: LCOV version 1.14