Lines Matching +full:zlib +full:- +full:level
1 /* zlib.h -- interface of the 'zlib' general purpose compression library
4 Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
6 This software is provided 'as-is', without any express or implied
22 Jean-loup Gailly Mark Adler
26 The data format used by the zlib library is described by RFCs (Request for
28 (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format).
48 * In Android's NDK we have one zlib.h for all the versions.
49 * zlib users tend to use ZLIB_VERNUM to check API availability,
55 * jb-mr2-dev (18): 1.2.7 (but not 1.2.7.1, where the APIs were added!)
56 * https://android.googlesource.com/platform/external/zlib/+/refs/heads/jb-mr2-dev/src/zlib.h
57 * kitkat-dev (19): 1.2.8
58 * https://android.googlesource.com/platform/external/zlib/+/refs/heads/kitkat-dev/src/zlib.h
60 * oreo-mr1-dev (27): 1.2.8
61 * https://android.googlesource.com/platform/external/zlib/+/refs/heads/oreo-mr1-dev/src/zlib.h
62 * pie-dev (28): 1.2.11
63 * https://android.googlesource.com/platform/external/zlib/+/refs/heads/pie-dev/src/zlib.h
66 * >= 28 --> 1.2.11
67 * >= 19 --> 1.2.8
68 * < 19 --> 1.2.7
91 The 'zlib' compression library provides in-memory compression and
102 The compressed data format used by default by the in-memory functions is
103 the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
108 with "gz". The gzip format is different from the zlib format. gzip is a
114 The zlib format was designed to be compact and fast for use in memory
115 and on communications channels. The gzip format was designed for single-
116 file compression on file systems, has a larger header than zlib to maintain
117 directory information, and uses a different, slower check method than zlib.
147 uLong adler; /* Adler-32 or CRC-32 value of the uncompressed data */
154 gzip header information passed to and from zlib routines. See RFC 1952
165 Bytef *name; /* pointer to zero-terminated file name or Z_NULL */
167 Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */
189 If zlib is used in a multi-threaded application, zalloc and zfree must be
190 thread safe. In that case, zlib is thread-safe. When zalloc and zfree are
194 On 16-bit systems, the functions zalloc and zfree must be able to allocate
201 the library with -DMAX_WBITS=14 (see zconf.h).
223 #define Z_ERRNO (-1)
224 #define Z_STREAM_ERROR (-2)
225 #define Z_DATA_ERROR (-3)
226 #define Z_MEM_ERROR (-4)
227 #define Z_BUF_ERROR (-5)
228 #define Z_VERSION_ERROR (-6)
236 #define Z_DEFAULT_COMPRESSION (-1)
266 compatible with the zlib.h header file used by the application. This check
271 ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
278 The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
282 equivalent to level 6).
285 memory, Z_STREAM_ERROR if level is not a valid compression level, or
286 Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
303 - Compress more input starting at next_in and update next_in and avail_in
308 - Generate more output starting at next_out and update next_out and avail_out
364 avail_out), until the flush is complete (deflate returns with non-zero
384 deflate() sets strm->adler to the Adler-32 checksum of all input read
386 strm->adler will be the CRC-32 checksum of the input read so far. (See
389 deflate() may update strm->data_type if it can make a good guess about
432 memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
438 implementation of inflateInit() does not process any header information --
453 - Decompress more input starting at next_in and update next_in and avail_in
459 - Generate more output starting at next_out and update next_out and avail_out
479 the zlib or gzip format, this will cause inflate() to return immediately
485 To assist in this, on return inflate() always sets strm->data_type to the
486 number of unused bits in the last byte taken from strm->next_in, plus 64 if
488 128 if inflate() returned immediately after decoding an end-of-block code or
490 stream. The end-of-block will not be indicated until all of the uncompressed
491 data from that block has been written to strm->next_out. The number of
502 256 is added to the value of strm->data_type when inflate() returns
529 below), inflate sets strm->adler to the Adler-32 checksum of the dictionary
531 strm->adler to the Adler-32 checksum of all output produced so far (that is,
533 below. At the end of the stream, inflate() checks that its computed Adler-32
537 inflate() can decompress and check either zlib-wrapped or gzip-wrapped
541 gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output
542 produced so far. The CRC-32 is checked against the gzip trailer, as is the
549 corrupted (input stream not conforming to the zlib format or incorrect check
550 value, in which case strm->msg points to a string with a more specific
582 int level,
603 will result in 9 (a 512-byte window). In that case, providing 8 to
604 inflateInit2() will result in an error when the zlib header with 9 is
609 windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
611 with no zlib header or trailer, and will not compute a check value.
615 compressed data instead of a zlib wrapper. The gzip header will have no
619 being written, strm->adler is a CRC-32 instead of an Adler-32.
621 For raw deflate or gzip encoding, a request for a 256-byte window is
622 rejected as invalid, since only the zlib header provides a means of
634 string match), or Z_RLE to limit match distances to one (run-length
648 method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is
659 without producing any compressed output. When using the zlib format, this
684 Upon return of this function, strm->adler is set to the Adler-32 value
686 which dictionary has been used by the compressor. (The Adler-32 value
689 Adler-32 value is not computed and strm->adler is not set.
713 to 258 bytes less in that case, due to how zlib's implementation of deflate
715 up to 258 bytes long. If the application needs the last window-size bytes of
716 input, then that would need to be saved by the application outside of zlib.
728 tried, for example when there are several ways of pre-processing the input
744 will leave the compression level and any other attributes that may have been
752 int level,
755 Dynamically update the compression level and compression strategy. The
756 interpretation of level and strategy is as in deflateInit2(). This can be
759 If the compression approach (which is a function of the level) or the
762 level and strategy using deflate(strm, Z_BLOCK). There are three approaches
763 for the compression levels 0, 1..3, and 4..9 respectively. The new level
775 If this is done, the old level and strategy will be applied to the data
776 compressed before deflateParams(), and the new level and strategy will be
795 used by someone who understands the algorithm used by zlib's deflate for
860 ignored -- the extra flags are set according to the compression level). The
864 the current versions of the command-line version of gzip (up through version
865 1.3.x) do not support header crc's, and will report that it is a "multi-part
894 the zlib header of the compressed stream.
896 windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
898 not looking for a zlib or gzip header, not generating a check value, and not
903 recommended that a check value such as an Adler-32 or a CRC-32 be applied to
904 the uncompressed data as is done in the zlib, gzip, and zip formats. For
905 most applications, the zlib format should be used as is. Note that comments
909 32 to windowBits to enable zlib and gzip decoding with automatic header
910 detection, or add 16 to decode only the gzip format (the zlib format will
911 return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a
912 CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see
918 memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
922 apart from possibly reading the zlib header if present: actual decompression
925 of inflateInit2() does not process any header information -- that is
936 can be determined from the Adler-32 value returned by that call of inflate.
947 expected one (incorrect Adler-32 value). inflateSetDictionary does not
1053 return value down 16 bits. If the upper value is -1 and the lower value is
1055 If the upper value is -1 and the lower value is non-zero, then inflate is in
1057 bytes from the input remaining to copy. If the upper value is not -1, then
1073 inflateMark returns the value noted above, or -65536 if the provided
1083 As inflate() processes the gzip stream, head->done is zero until the header
1084 is completed, at which time head->done is set to one. If a zlib stream is
1085 being decoded, then head->done is set to -1 to indicate that there will be
1123 before the call. If zalloc and zfree are Z_NULL, then the default library-
1147 inflateBack() does a raw inflate with a single call using a call-back
1156 and to initialize the state with the user-provided window buffer.
1161 A raw deflate stream is one with no zlib or gzip header or trailer.
1166 behavior of inflate(), which expects a zlib header and trailer around the
1176 there is no input available, in() must return zero -- buf is ignored in that
1177 case -- and inflateBack() will return a buffer error. inflateBack() will
1178 call out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].
1179 out() should return zero on success, or non-zero on failure. If out()
1180 returns non-zero, inflateBack() will return with an error. Neither in() nor
1183 The length written by out() will be at most the window size. Any non-zero
1187 setting strm->next_in and strm->avail_in. If that input is exhausted, then
1188 in() will be called. Therefore strm->next_in must be initialized before
1189 calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called
1190 immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in
1191 must also be initialized, and then if strm->avail_in is not zero, input will
1192 initially be taken from strm->next_in[0 .. strm->avail_in - 1].
1196 descriptors can be optionally used to pass any information that the caller-
1199 On return, inflateBack() will set strm->next_in and strm->avail_in to
1203 in the deflate stream (in which case strm->msg is set to indicate the nature
1206 using strm->next_in which will be Z_NULL only if in() returned an error. If
1207 strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning
1208 non-zero. (in() will always be called before out(), so strm->next_in is
1209 assured to be defined if out() returns non-zero.) Note that inflateBack()
1222 /* Return flags indicating compile-time options.
1232 9: ASMV or ASMINF -- use ASM code
1233 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
1236 One-time table building (smaller code, but not thread-safe if true):
1237 12: BUILDFIXED -- build static block decoding tables when needed
1238 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
1242 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
1244 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
1246 18-19: 0 (reserved)
1249 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
1250 21: FASTEST -- deflate algorithm with only one, lowest compression level
1254 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
1255 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
1256 26: 0 = returns value, 1 = void -- 1 means inferred string length returned
1259 27-31: 0 (reserved)
1268 stream-oriented functions. To simplify the interface, some default options
1269 are assumed (compression level and memory usage, standard memory allocation
1281 compressed data. compress() is equivalent to compress2() with a level
1291 int level));
1293 Compresses the source buffer into the destination buffer. The level
1302 Z_STREAM_ERROR if the level parameter is invalid.
1345 "gz". The gzip format is different from the zlib format. gzip is a gzip
1349 typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
1355 in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
1356 a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
1357 compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
1379 reading, this will be detected automatically by looking for the magic two-
1401 double-close()ing the file descriptor. Both gzclose() and fclose() will
1407 provided, or '+' was provided), or if fd is -1. The file descriptor is not
1409 will not detect if fd is invalid (unless fd is -1).
1424 gzbuffer() returns 0 on success, or -1 on failure, such as being called
1428 ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
1430 Dynamically update the compression level or strategy. See the description
1457 middle of a gzip stream. Note that gzread does not return -1 in the event
1464 len for end of file, or -1 for error. If len is too large to fit in an int,
1465 then nothing is read, -1 is returned, and the error state is set to
1490 and the end-of-file flag is set. The length of the partial item read is not
1494 file, reseting and retrying on end-of-file, when size is not 1.
1525 uncompressed bytes actually written, or a negative zlib error code in case
1531 zlib was compiled with the insecure functions sprintf() or vsprintf()
1538 Writes the given null-terminated string to the compressed file, excluding
1541 gzputs returns the number of characters written, or -1 in case of error.
1546 Reads bytes from the compressed file until len-1 characters are read, or a
1547 newline character is read and transferred to buf, or an end-of-file
1550 to an end-of-file or len < 1, then the buffer is left untouched.
1552 gzgets returns buf which is a null-terminated string, or it returns NULL
1553 for end-of-file or in case of error. If there was an error, the contents at
1560 returns the value that was written, or -1 in case of error.
1565 Reads one byte from the compressed file. gzgetc returns this byte or -1
1575 on the next read. At least one character of push-back is allowed.
1576 gzungetc() returns the character pushed, or -1 on failure. gzungetc() will
1577 fail if c is -1, and may fail if a character has been pushed but not read
1587 is as in the deflate() function. The return value is the zlib error number
1614 the beginning of the uncompressed stream, or -1 in case of error, in
1644 for a progress indicator. On error, gzoffset() returns -1.
1649 Returns true (1) if the end-of-file indicator has been set while reading,
1650 false (0) otherwise. Note that the end-of-file indicator is set only if the
1658 unless the end-of-file indicator is reset by gzclearerr() and the input file
1679 linking statically, using gzdirect() will include all of the zlib code for
1701 using these instead of gzclose() is that they avoid linking in zlib
1705 zlib library.
1711 compressed file. errnum is set to zlib error number. If an error occurred
1720 gzerror() should be used to distinguish errors from end-of-file for those
1726 Clears the error and end-of-file flags for file. This is analogous to the
1743 Update a running Adler-32 checksum with the bytes buf[0..len-1] and
1747 An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed
1772 Combine two Adler-32 checksums into one. For two sequences of bytes, seq1
1773 and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
1774 each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of
1782 Update a running CRC-32 with the bytes buf[0..len-1] and return the
1783 updated CRC-32. If buf is Z_NULL, this function returns the required
1784 initial value for the crc. Pre- and post-conditioning (one's complement) is
1808 Combine two CRC-32 check values into one. For two sequences of bytes,
1809 seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
1810 calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32
1818 /* deflateInit and inflateInit are macros to allow checking the zlib version
1821 ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
1825 ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
1836 # define z_deflateInit(strm, level) \ argument
1837 deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
1840 # define z_deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ argument
1841 deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
1850 # define deflateInit(strm, level) \ argument
1851 deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
1854 # define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ argument
1855 deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
1883 ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g))
1887 ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) \
1891 ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g))
1894 /* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or
1897 * functions are changed to 64 bits) -- in case these are set on systems