|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * The contents of this file constitute Original Code as defined in and ! 7: * are subject to the Apple Public Source License Version 1.1 (the ! 8: * "License"). You may not use this file except in compliance with the ! 9: * License. Please obtain a copy of the License at ! 10: * http://www.apple.com/publicsource and read it before using this file. ! 11: * ! 12: * This Original Code and all software distributed under the License are ! 13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 17: * License for the specific language governing rights and limitations ! 18: * under the License. ! 19: * ! 20: * @APPLE_LICENSE_HEADER_END@ ! 21: */ ! 22: /* ! 23: * This file is derived from zlib.h and zconf.h from the zlib-1.0.4 ! 24: * distribution by Jean-loup Gailly and Mark Adler, with some additions ! 25: * by Paul Mackerras to aid in implementing Deflate compression and ! 26: * decompression for PPP packets. ! 27: */ ! 28: ! 29: /* ! 30: * ==FILEVERSION 971127== ! 31: * ! 32: * This marker is used by the Linux installation script to determine ! 33: * whether an up-to-date version of this file is already installed. ! 34: */ ! 35: ! 36: ! 37: /* +++ zlib.h */ ! 38: /* zlib.h -- interface of the 'zlib' general purpose compression library ! 39: version 1.0.4, Jul 24th, 1996. ! 40: ! 41: Copyright (C) 1995-1996 Jean-loup Gailly and Mark Adler ! 42: ! 43: This software is provided 'as-is', without any express or implied ! 44: warranty. In no event will the authors be held liable for any damages ! 45: arising from the use of this software. ! 46: ! 47: Permission is granted to anyone to use this software for any purpose, ! 48: including commercial applications, and to alter it and redistribute it ! 49: freely, subject to the following restrictions: ! 50: ! 51: 1. The origin of this software must not be misrepresented; you must not ! 52: claim that you wrote the original software. If you use this software ! 53: in a product, an acknowledgment in the product documentation would be ! 54: appreciated but is not required. ! 55: 2. Altered source versions must be plainly marked as such, and must not be ! 56: misrepresented as being the original software. ! 57: 3. This notice may not be removed or altered from any source distribution. ! 58: ! 59: Jean-loup Gailly Mark Adler ! 60: [email protected] [email protected] ! 61: ! 62: ! 63: The data format used by the zlib library is described by RFCs (Request for ! 64: Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt ! 65: (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). ! 66: */ ! 67: ! 68: #ifndef _ZLIB_H ! 69: #define _ZLIB_H ! 70: ! 71: #ifdef __cplusplus ! 72: extern "C" { ! 73: #endif ! 74: ! 75: ! 76: /* +++ zconf.h */ ! 77: /* zconf.h -- configuration of the zlib compression library ! 78: * Copyright (C) 1995-1996 Jean-loup Gailly. ! 79: * For conditions of distribution and use, see copyright notice in zlib.h ! 80: */ ! 81: ! 82: /* From: zconf.h,v 1.20 1996/07/02 15:09:28 me Exp $ */ ! 83: ! 84: #ifndef _ZCONF_H ! 85: #define _ZCONF_H ! 86: ! 87: /* ! 88: * If you *really* need a unique prefix for all types and library functions, ! 89: * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. ! 90: */ ! 91: #ifdef Z_PREFIX ! 92: # define deflateInit_ z_deflateInit_ ! 93: # define deflate z_deflate ! 94: # define deflateEnd z_deflateEnd ! 95: # define inflateInit_ z_inflateInit_ ! 96: # define inflate z_inflate ! 97: # define inflateEnd z_inflateEnd ! 98: # define deflateInit2_ z_deflateInit2_ ! 99: # define deflateSetDictionary z_deflateSetDictionary ! 100: # define deflateCopy z_deflateCopy ! 101: # define deflateReset z_deflateReset ! 102: # define deflateParams z_deflateParams ! 103: # define inflateInit2_ z_inflateInit2_ ! 104: # define inflateSetDictionary z_inflateSetDictionary ! 105: # define inflateSync z_inflateSync ! 106: # define inflateReset z_inflateReset ! 107: # define compress z_compress ! 108: # define uncompress z_uncompress ! 109: # define adler32 z_adler32 ! 110: # define crc32 z_crc32 ! 111: # define get_crc_table z_get_crc_table ! 112: ! 113: # define Byte z_Byte ! 114: # define uInt z_uInt ! 115: # define uLong z_uLong ! 116: # define Bytef z_Bytef ! 117: # define charf z_charf ! 118: # define intf z_intf ! 119: # define uIntf z_uIntf ! 120: # define uLongf z_uLongf ! 121: # define voidpf z_voidpf ! 122: # define voidp z_voidp ! 123: #endif ! 124: ! 125: #if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) ! 126: # define WIN32 ! 127: #endif ! 128: #if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386) ! 129: # ifndef __32BIT__ ! 130: # define __32BIT__ ! 131: # endif ! 132: #endif ! 133: #if defined(__MSDOS__) && !defined(MSDOS) ! 134: # define MSDOS ! 135: #endif ! 136: ! 137: /* ! 138: * Compile with -DMAXSEG_64K if the alloc function cannot allocate more ! 139: * than 64k bytes at a time (needed on systems with 16-bit int). ! 140: */ ! 141: #if defined(MSDOS) && !defined(__32BIT__) ! 142: # define MAXSEG_64K ! 143: #endif ! 144: #ifdef MSDOS ! 145: # define UNALIGNED_OK ! 146: #endif ! 147: ! 148: #if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32)) && !defined(STDC) ! 149: # define STDC ! 150: #endif ! 151: #if (defined(__STDC__) || defined(__cplusplus)) && !defined(STDC) ! 152: # define STDC ! 153: #endif ! 154: ! 155: #ifndef STDC ! 156: # ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ ! 157: # define const ! 158: # endif ! 159: #endif ! 160: ! 161: /* Some Mac compilers merge all .h files incorrectly: */ ! 162: #if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__) ! 163: # define NO_DUMMY_DECL ! 164: #endif ! 165: ! 166: /* Maximum value for memLevel in deflateInit2 */ ! 167: #ifndef MAX_MEM_LEVEL ! 168: # ifdef MAXSEG_64K ! 169: # define MAX_MEM_LEVEL 8 ! 170: # else ! 171: # define MAX_MEM_LEVEL 9 ! 172: # endif ! 173: #endif ! 174: ! 175: /* Maximum value for windowBits in deflateInit2 and inflateInit2 */ ! 176: #ifndef MAX_WBITS ! 177: # define MAX_WBITS 15 /* 32K LZ77 window */ ! 178: #endif ! 179: ! 180: /* The memory requirements for deflate are (in bytes): ! 181: 1 << (windowBits+2) + 1 << (memLevel+9) ! 182: that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) ! 183: plus a few kilobytes for small objects. For example, if you want to reduce ! 184: the default memory requirements from 256K to 128K, compile with ! 185: make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" ! 186: Of course this will generally degrade compression (there's no free lunch). ! 187: ! 188: The memory requirements for inflate are (in bytes) 1 << windowBits ! 189: that is, 32K for windowBits=15 (default value) plus a few kilobytes ! 190: for small objects. ! 191: */ ! 192: ! 193: /* Type declarations */ ! 194: ! 195: #ifndef OF /* function prototypes */ ! 196: # ifdef STDC ! 197: # define OF(args) args ! 198: # else ! 199: # define OF(args) () ! 200: # endif ! 201: #endif ! 202: ! 203: /* The following definitions for FAR are needed only for MSDOS mixed ! 204: * model programming (small or medium model with some far allocations). ! 205: * This was tested only with MSC; for other MSDOS compilers you may have ! 206: * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, ! 207: * just define FAR to be empty. ! 208: */ ! 209: #if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__) ! 210: /* MSC small or medium model */ ! 211: # define SMALL_MEDIUM ! 212: # ifdef _MSC_VER ! 213: # define FAR __far ! 214: # else ! 215: # define FAR far ! 216: # endif ! 217: #endif ! 218: #if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__)) ! 219: # ifndef __32BIT__ ! 220: # define SMALL_MEDIUM ! 221: # define FAR __far ! 222: # endif ! 223: #endif ! 224: #ifndef FAR ! 225: # define FAR ! 226: #endif ! 227: ! 228: typedef unsigned char Byte; /* 8 bits */ ! 229: typedef unsigned int uInt; /* 16 bits or more */ ! 230: typedef unsigned long uLong; /* 32 bits or more */ ! 231: ! 232: #if defined(__BORLANDC__) && defined(SMALL_MEDIUM) ! 233: /* Borland C/C++ ignores FAR inside typedef */ ! 234: # define Bytef Byte FAR ! 235: #else ! 236: typedef Byte FAR Bytef; ! 237: #endif ! 238: typedef char FAR charf; ! 239: typedef int FAR intf; ! 240: typedef uInt FAR uIntf; ! 241: typedef uLong FAR uLongf; ! 242: ! 243: #if STDC ! 244: typedef void FAR *voidpf; ! 245: typedef void *voidp; ! 246: #else ! 247: typedef Byte FAR *voidpf; ! 248: typedef Byte *voidp; ! 249: #endif ! 250: ! 251: ! 252: /* Compile with -DZLIB_DLL for Windows DLL support */ ! 253: #if (defined(_WINDOWS) || defined(WINDOWS)) && defined(ZLIB_DLL) ! 254: # include <windows.h> ! 255: # define EXPORT WINAPI ! 256: #else ! 257: # define EXPORT ! 258: #endif ! 259: ! 260: #endif /* _ZCONF_H */ ! 261: /* --- zconf.h */ ! 262: ! 263: #define ZLIB_VERSION "1.0.4P" ! 264: ! 265: /* ! 266: The 'zlib' compression library provides in-memory compression and ! 267: decompression functions, including integrity checks of the uncompressed ! 268: data. This version of the library supports only one compression method ! 269: (deflation) but other algorithms may be added later and will have the same ! 270: stream interface. ! 271: ! 272: For compression the application must provide the output buffer and ! 273: may optionally provide the input buffer for optimization. For decompression, ! 274: the application must provide the input buffer and may optionally provide ! 275: the output buffer for optimization. ! 276: ! 277: Compression can be done in a single step if the buffers are large ! 278: enough (for example if an input file is mmap'ed), or can be done by ! 279: repeated calls of the compression function. In the latter case, the ! 280: application must provide more input and/or consume the output ! 281: (providing more output space) before each call. ! 282: ! 283: The library does not install any signal handler. It is recommended to ! 284: add at least a handler for SIGSEGV when decompressing; the library checks ! 285: the consistency of the input data whenever possible but may go nuts ! 286: for some forms of corrupted input. ! 287: */ ! 288: ! 289: typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); ! 290: typedef void (*free_func) OF((voidpf opaque, voidpf address)); ! 291: ! 292: struct internal_state; ! 293: ! 294: typedef struct z_stream_s { ! 295: Bytef *next_in; /* next input byte */ ! 296: uInt avail_in; /* number of bytes available at next_in */ ! 297: uLong total_in; /* total nb of input bytes read so far */ ! 298: ! 299: Bytef *next_out; /* next output byte should be put there */ ! 300: uInt avail_out; /* remaining free space at next_out */ ! 301: uLong total_out; /* total nb of bytes output so far */ ! 302: ! 303: char *msg; /* last error message, NULL if no error */ ! 304: struct internal_state FAR *state; /* not visible by applications */ ! 305: ! 306: alloc_func zalloc; /* used to allocate the internal state */ ! 307: free_func zfree; /* used to free the internal state */ ! 308: voidpf opaque; /* private data object passed to zalloc and zfree */ ! 309: ! 310: int data_type; /* best guess about the data type: ascii or binary */ ! 311: uLong adler; /* adler32 value of the uncompressed data */ ! 312: uLong reserved; /* reserved for future use */ ! 313: } z_stream; ! 314: ! 315: typedef z_stream FAR *z_streamp; ! 316: ! 317: /* ! 318: The application must update next_in and avail_in when avail_in has ! 319: dropped to zero. It must update next_out and avail_out when avail_out ! 320: has dropped to zero. The application must initialize zalloc, zfree and ! 321: opaque before calling the init function. All other fields are set by the ! 322: compression library and must not be updated by the application. ! 323: ! 324: The opaque value provided by the application will be passed as the first ! 325: parameter for calls of zalloc and zfree. This can be useful for custom ! 326: memory management. The compression library attaches no meaning to the ! 327: opaque value. ! 328: ! 329: zalloc must return Z_NULL if there is not enough memory for the object. ! 330: On 16-bit systems, the functions zalloc and zfree must be able to allocate ! 331: exactly 65536 bytes, but will not be required to allocate more than this ! 332: if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, ! 333: pointers returned by zalloc for objects of exactly 65536 bytes *must* ! 334: have their offset normalized to zero. The default allocation function ! 335: provided by this library ensures this (see zutil.c). To reduce memory ! 336: requirements and avoid any allocation of 64K objects, at the expense of ! 337: compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h). ! 338: ! 339: The fields total_in and total_out can be used for statistics or ! 340: progress reports. After compression, total_in holds the total size of ! 341: the uncompressed data and may be saved for use in the decompressor ! 342: (particularly if the decompressor wants to decompress everything in ! 343: a single step). ! 344: */ ! 345: ! 346: /* constants */ ! 347: ! 348: #define Z_NO_FLUSH 0 ! 349: #define Z_PARTIAL_FLUSH 1 ! 350: #define Z_PACKET_FLUSH 2 ! 351: #define Z_SYNC_FLUSH 3 ! 352: #define Z_FULL_FLUSH 4 ! 353: #define Z_FINISH 5 ! 354: /* Allowed flush values; see deflate() below for details */ ! 355: ! 356: #define Z_OK 0 ! 357: #define Z_STREAM_END 1 ! 358: #define Z_NEED_DICT 2 ! 359: #define Z_ERRNO (-1) ! 360: #define Z_STREAM_ERROR (-2) ! 361: #define Z_DATA_ERROR (-3) ! 362: #define Z_MEM_ERROR (-4) ! 363: #define Z_BUF_ERROR (-5) ! 364: #define Z_VERSION_ERROR (-6) ! 365: /* Return codes for the compression/decompression functions. Negative ! 366: * values are errors, positive values are used for special but normal events. ! 367: */ ! 368: ! 369: #define Z_NO_COMPRESSION 0 ! 370: #define Z_BEST_SPEED 1 ! 371: #define Z_BEST_COMPRESSION 9 ! 372: #define Z_DEFAULT_COMPRESSION (-1) ! 373: /* compression levels */ ! 374: ! 375: #define Z_FILTERED 1 ! 376: #define Z_HUFFMAN_ONLY 2 ! 377: #define Z_DEFAULT_STRATEGY 0 ! 378: /* compression strategy; see deflateInit2() below for details */ ! 379: ! 380: #define Z_BINARY 0 ! 381: #define Z_ASCII 1 ! 382: #define Z_UNKNOWN 2 ! 383: /* Possible values of the data_type field */ ! 384: ! 385: #define Z_DEFLATED 8 ! 386: /* The deflate compression method (the only one supported in this version) */ ! 387: ! 388: #define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ ! 389: ! 390: #define zlib_version zlibVersion() ! 391: /* for compatibility with versions < 1.0.2 */ ! 392: ! 393: /* basic functions */ ! 394: ! 395: extern const char * EXPORT zlibVersion OF((void)); ! 396: /* The application can compare zlibVersion and ZLIB_VERSION for consistency. ! 397: If the first character differs, the library code actually used is ! 398: not compatible with the zlib.h header file used by the application. ! 399: This check is automatically made by deflateInit and inflateInit. ! 400: */ ! 401: ! 402: /* ! 403: extern int EXPORT deflateInit OF((z_streamp strm, int level)); ! 404: ! 405: Initializes the internal stream state for compression. The fields ! 406: zalloc, zfree and opaque must be initialized before by the caller. ! 407: If zalloc and zfree are set to Z_NULL, deflateInit updates them to ! 408: use default allocation functions. ! 409: ! 410: The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: ! 411: 1 gives best speed, 9 gives best compression, 0 gives no compression at ! 412: all (the input data is simply copied a block at a time). ! 413: Z_DEFAULT_COMPRESSION requests a default compromise between speed and ! 414: compression (currently equivalent to level 6). ! 415: ! 416: deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not ! 417: enough memory, Z_STREAM_ERROR if level is not a valid compression level, ! 418: Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible ! 419: with the version assumed by the caller (ZLIB_VERSION). ! 420: msg is set to null if there is no error message. deflateInit does not ! 421: perform any compression: this will be done by deflate(). ! 422: */ ! 423: ! 424: ! 425: extern int EXPORT deflate OF((z_streamp strm, int flush)); ! 426: /* ! 427: Performs one or both of the following actions: ! 428: ! 429: - Compress more input starting at next_in and update next_in and avail_in ! 430: accordingly. If not all input can be processed (because there is not ! 431: enough room in the output buffer), next_in and avail_in are updated and ! 432: processing will resume at this point for the next call of deflate(). ! 433: ! 434: - Provide more output starting at next_out and update next_out and avail_out ! 435: accordingly. This action is forced if the parameter flush is non zero. ! 436: Forcing flush frequently degrades the compression ratio, so this parameter ! 437: should be set only when necessary (in interactive applications). ! 438: Some output may be provided even if flush is not set. ! 439: ! 440: Before the call of deflate(), the application should ensure that at least ! 441: one of the actions is possible, by providing more input and/or consuming ! 442: more output, and updating avail_in or avail_out accordingly; avail_out ! 443: should never be zero before the call. The application can consume the ! 444: compressed output when it wants, for example when the output buffer is full ! 445: (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK ! 446: and with zero avail_out, it must be called again after making room in the ! 447: output buffer because there might be more output pending. ! 448: ! 449: If the parameter flush is set to Z_PARTIAL_FLUSH, the current compression ! 450: block is terminated and flushed to the output buffer so that the ! 451: decompressor can get all input data available so far. For method 9, a future ! 452: variant on method 8, the current block will be flushed but not terminated. ! 453: Z_SYNC_FLUSH has the same effect as partial flush except that the compressed ! 454: output is byte aligned (the compressor can clear its internal bit buffer) ! 455: and the current block is always terminated; this can be useful if the ! 456: compressor has to be restarted from scratch after an interruption (in which ! 457: case the internal state of the compressor may be lost). ! 458: If flush is set to Z_FULL_FLUSH, the compression block is terminated, a ! 459: special marker is output and the compression dictionary is discarded; this ! 460: is useful to allow the decompressor to synchronize if one compressed block ! 461: has been damaged (see inflateSync below). Flushing degrades compression and ! 462: so should be used only when necessary. Using Z_FULL_FLUSH too often can ! 463: seriously degrade the compression. If deflate returns with avail_out == 0, ! 464: this function must be called again with the same value of the flush ! 465: parameter and more output space (updated avail_out), until the flush is ! 466: complete (deflate returns with non-zero avail_out). ! 467: ! 468: If the parameter flush is set to Z_PACKET_FLUSH, the compression ! 469: block is terminated, and a zero-length stored block is output, ! 470: omitting the length bytes (the effect of this is that the 3-bit type ! 471: code 000 for a stored block is output, and the output is then ! 472: byte-aligned). This is designed for use at the end of a PPP packet. ! 473: ! 474: If the parameter flush is set to Z_FINISH, pending input is processed, ! 475: pending output is flushed and deflate returns with Z_STREAM_END if there ! 476: was enough output space; if deflate returns with Z_OK, this function must be ! 477: called again with Z_FINISH and more output space (updated avail_out) but no ! 478: more input data, until it returns with Z_STREAM_END or an error. After ! 479: deflate has returned Z_STREAM_END, the only possible operations on the ! 480: stream are deflateReset or deflateEnd. ! 481: ! 482: Z_FINISH can be used immediately after deflateInit if all the compression ! 483: is to be done in a single step. In this case, avail_out must be at least ! 484: 0.1% larger than avail_in plus 12 bytes. If deflate does not return ! 485: Z_STREAM_END, then it must be called again as described above. ! 486: ! 487: deflate() may update data_type if it can make a good guess about ! 488: the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered ! 489: binary. This field is only for information purposes and does not affect ! 490: the compression algorithm in any manner. ! 491: ! 492: deflate() returns Z_OK if some progress has been made (more input ! 493: processed or more output produced), Z_STREAM_END if all input has been ! 494: consumed and all output has been produced (only when flush is set to ! 495: Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example ! 496: if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible. ! 497: */ ! 498: ! 499: ! 500: extern int EXPORT deflateEnd OF((z_streamp strm)); ! 501: /* ! 502: All dynamically allocated data structures for this stream are freed. ! 503: This function discards any unprocessed input and does not flush any ! 504: pending output. ! 505: ! 506: deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the ! 507: stream state was inconsistent, Z_DATA_ERROR if the stream was freed ! 508: prematurely (some input or output was discarded). In the error case, ! 509: msg may be set but then points to a static string (which must not be ! 510: deallocated). ! 511: */ ! 512: ! 513: ! 514: /* ! 515: extern int EXPORT inflateInit OF((z_streamp strm)); ! 516: ! 517: Initializes the internal stream state for decompression. The fields ! 518: zalloc, zfree and opaque must be initialized before by the caller. If ! 519: zalloc and zfree are set to Z_NULL, inflateInit updates them to use default ! 520: allocation functions. ! 521: ! 522: inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not ! 523: enough memory, Z_VERSION_ERROR if the zlib library version is incompatible ! 524: with the version assumed by the caller. msg is set to null if there is no ! 525: error message. inflateInit does not perform any decompression: this will be ! 526: done by inflate(). ! 527: */ ! 528: ! 529: #if defined(__FreeBSD__) && (defined(KERNEL) || defined(_KERNEL)) ! 530: #define inflate inflate_ppp /* FreeBSD already has an inflate :-( */ ! 531: #endif ! 532: ! 533: extern int EXPORT inflate OF((z_streamp strm, int flush)); ! 534: /* ! 535: Performs one or both of the following actions: ! 536: ! 537: - Decompress more input starting at next_in and update next_in and avail_in ! 538: accordingly. If not all input can be processed (because there is not ! 539: enough room in the output buffer), next_in is updated and processing ! 540: will resume at this point for the next call of inflate(). ! 541: ! 542: - Provide more output starting at next_out and update next_out and avail_out ! 543: accordingly. inflate() provides as much output as possible, until there ! 544: is no more input data or no more space in the output buffer (see below ! 545: about the flush parameter). ! 546: ! 547: Before the call of inflate(), the application should ensure that at least ! 548: one of the actions is possible, by providing more input and/or consuming ! 549: more output, and updating the next_* and avail_* values accordingly. ! 550: The application can consume the uncompressed output when it wants, for ! 551: example when the output buffer is full (avail_out == 0), or after each ! 552: call of inflate(). If inflate returns Z_OK and with zero avail_out, it ! 553: must be called again after making room in the output buffer because there ! 554: might be more output pending. ! 555: ! 556: If the parameter flush is set to Z_PARTIAL_FLUSH or Z_PACKET_FLUSH, ! 557: inflate flushes as much output as possible to the output buffer. The ! 558: flushing behavior of inflate is not specified for values of the flush ! 559: parameter other than Z_PARTIAL_FLUSH, Z_PACKET_FLUSH or Z_FINISH, but the ! 560: current implementation actually flushes as much output as possible ! 561: anyway. For Z_PACKET_FLUSH, inflate checks that once all the input data ! 562: has been consumed, it is expecting to see the length field of a stored ! 563: block; if not, it returns Z_DATA_ERROR. ! 564: ! 565: inflate() should normally be called until it returns Z_STREAM_END or an ! 566: error. However if all decompression is to be performed in a single step ! 567: (a single call of inflate), the parameter flush should be set to ! 568: Z_FINISH. In this case all pending input is processed and all pending ! 569: output is flushed; avail_out must be large enough to hold all the ! 570: uncompressed data. (The size of the uncompressed data may have been saved ! 571: by the compressor for this purpose.) The next operation on this stream must ! 572: be inflateEnd to deallocate the decompression state. The use of Z_FINISH ! 573: is never required, but can be used to inform inflate that a faster routine ! 574: may be used for the single inflate() call. ! 575: ! 576: inflate() returns Z_OK if some progress has been made (more input ! 577: processed or more output produced), Z_STREAM_END if the end of the ! 578: compressed data has been reached and all uncompressed output has been ! 579: produced, Z_NEED_DICT if a preset dictionary is needed at this point (see ! 580: inflateSetDictionary below), Z_DATA_ERROR if the input data was corrupted, ! 581: Z_STREAM_ERROR if the stream structure was inconsistent (for example if ! 582: next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory, ! 583: Z_BUF_ERROR if no progress is possible or if there was not enough room in ! 584: the output buffer when Z_FINISH is used. In the Z_DATA_ERROR case, the ! 585: application may then call inflateSync to look for a good compression block. ! 586: In the Z_NEED_DICT case, strm->adler is set to the Adler32 value of the ! 587: dictionary chosen by the compressor. ! 588: */ ! 589: ! 590: ! 591: extern int EXPORT inflateEnd OF((z_streamp strm)); ! 592: /* ! 593: All dynamically allocated data structures for this stream are freed. ! 594: This function discards any unprocessed input and does not flush any ! 595: pending output. ! 596: ! 597: inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state ! 598: was inconsistent. In the error case, msg may be set but then points to a ! 599: static string (which must not be deallocated). ! 600: */ ! 601: ! 602: /* Advanced functions */ ! 603: ! 604: /* ! 605: The following functions are needed only in some special applications. ! 606: */ ! 607: ! 608: /* ! 609: extern int EXPORT deflateInit2 OF((z_streamp strm, ! 610: int level, ! 611: int method, ! 612: int windowBits, ! 613: int memLevel, ! 614: int strategy)); ! 615: ! 616: This is another version of deflateInit with more compression options. The ! 617: fields next_in, zalloc, zfree and opaque must be initialized before by ! 618: the caller. ! 619: ! 620: The method parameter is the compression method. It must be Z_DEFLATED in ! 621: this version of the library. (Method 9 will allow a 64K history buffer and ! 622: partial block flushes.) ! 623: ! 624: The windowBits parameter is the base two logarithm of the window size ! 625: (the size of the history buffer). It should be in the range 8..15 for this ! 626: version of the library (the value 16 will be allowed for method 9). Larger ! 627: values of this parameter result in better compression at the expense of ! 628: memory usage. The default value is 15 if deflateInit is used instead. ! 629: ! 630: The memLevel parameter specifies how much memory should be allocated ! 631: for the internal compression state. memLevel=1 uses minimum memory but ! 632: is slow and reduces compression ratio; memLevel=9 uses maximum memory ! 633: for optimal speed. The default value is 8. See zconf.h for total memory ! 634: usage as a function of windowBits and memLevel. ! 635: ! 636: The strategy parameter is used to tune the compression algorithm. Use the ! 637: value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a ! 638: filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no ! 639: string match). Filtered data consists mostly of small values with a ! 640: somewhat random distribution. In this case, the compression algorithm is ! 641: tuned to compress them better. The effect of Z_FILTERED is to force more ! 642: Huffman coding and less string matching; it is somewhat intermediate ! 643: between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects ! 644: the compression ratio but not the correctness of the compressed output even ! 645: if it is not set appropriately. ! 646: ! 647: If next_in is not null, the library will use this buffer to hold also ! 648: some history information; the buffer must either hold the entire input ! 649: data, or have at least 1<<(windowBits+1) bytes and be writable. If next_in ! 650: is null, the library will allocate its own history buffer (and leave next_in ! 651: null). next_out need not be provided here but must be provided by the ! 652: application for the next call of deflate(). ! 653: ! 654: If the history buffer is provided by the application, next_in must ! 655: must never be changed by the application since the compressor maintains ! 656: information inside this buffer from call to call; the application ! 657: must provide more input only by increasing avail_in. next_in is always ! 658: reset by the library in this case. ! 659: ! 660: deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was ! 661: not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as ! 662: an invalid method). msg is set to null if there is no error message. ! 663: deflateInit2 does not perform any compression: this will be done by ! 664: deflate(). ! 665: */ ! 666: ! 667: extern int EXPORT deflateSetDictionary OF((z_streamp strm, ! 668: const Bytef *dictionary, ! 669: uInt dictLength)); ! 670: /* ! 671: Initializes the compression dictionary (history buffer) from the given ! 672: byte sequence without producing any compressed output. This function must ! 673: be called immediately after deflateInit or deflateInit2, before any call ! 674: of deflate. The compressor and decompressor must use exactly the same ! 675: dictionary (see inflateSetDictionary). ! 676: The dictionary should consist of strings (byte sequences) that are likely ! 677: to be encountered later in the data to be compressed, with the most commonly ! 678: used strings preferably put towards the end of the dictionary. Using a ! 679: dictionary is most useful when the data to be compressed is short and ! 680: can be predicted with good accuracy; the data can then be compressed better ! 681: than with the default empty dictionary. In this version of the library, ! 682: only the last 32K bytes of the dictionary are used. ! 683: Upon return of this function, strm->adler is set to the Adler32 value ! 684: of the dictionary; the decompressor may later use this value to determine ! 685: which dictionary has been used by the compressor. (The Adler32 value ! 686: applies to the whole dictionary even if only a subset of the dictionary is ! 687: actually used by the compressor.) ! 688: ! 689: deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a ! 690: parameter is invalid (such as NULL dictionary) or the stream state ! 691: is inconsistent (for example if deflate has already been called for this ! 692: stream). deflateSetDictionary does not perform any compression: this will ! 693: be done by deflate(). ! 694: */ ! 695: ! 696: extern int EXPORT deflateCopy OF((z_streamp dest, ! 697: z_streamp source)); ! 698: /* ! 699: Sets the destination stream as a complete copy of the source stream. If ! 700: the source stream is using an application-supplied history buffer, a new ! 701: buffer is allocated for the destination stream. The compressed output ! 702: buffer is always application-supplied. It's the responsibility of the ! 703: application to provide the correct values of next_out and avail_out for the ! 704: next call of deflate. ! 705: ! 706: This function can be useful when several compression strategies will be ! 707: tried, for example when there are several ways of pre-processing the input ! 708: data with a filter. The streams that will be discarded should then be freed ! 709: by calling deflateEnd. Note that deflateCopy duplicates the internal ! 710: compression state which can be quite large, so this strategy is slow and ! 711: can consume lots of memory. ! 712: ! 713: deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not ! 714: enough memory, Z_STREAM_ERROR if the source stream state was inconsistent ! 715: (such as zalloc being NULL). msg is left unchanged in both source and ! 716: destination. ! 717: */ ! 718: ! 719: extern int EXPORT deflateReset OF((z_streamp strm)); ! 720: /* ! 721: This function is equivalent to deflateEnd followed by deflateInit, ! 722: but does not free and reallocate all the internal compression state. ! 723: The stream will keep the same compression level and any other attributes ! 724: that may have been set by deflateInit2. ! 725: ! 726: deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source ! 727: stream state was inconsistent (such as zalloc or state being NULL). ! 728: */ ! 729: ! 730: extern int EXPORT deflateParams OF((z_streamp strm, int level, int strategy)); ! 731: /* ! 732: Dynamically update the compression level and compression strategy. ! 733: This can be used to switch between compression and straight copy of ! 734: the input data, or to switch to a different kind of input data requiring ! 735: a different strategy. If the compression level is changed, the input ! 736: available so far is compressed with the old level (and may be flushed); ! 737: the new level will take effect only at the next call of deflate(). ! 738: ! 739: Before the call of deflateParams, the stream state must be set as for ! 740: a call of deflate(), since the currently available input may have to ! 741: be compressed and flushed. In particular, strm->avail_out must be non-zero. ! 742: ! 743: deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source ! 744: stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR ! 745: if strm->avail_out was zero. ! 746: */ ! 747: ! 748: extern int EXPORT deflateOutputPending OF((z_streamp strm)); ! 749: /* ! 750: Returns the number of bytes of output which are immediately ! 751: available from the compressor (i.e. without any further input ! 752: or flush). ! 753: */ ! 754: ! 755: /* ! 756: extern int EXPORT inflateInit2 OF((z_streamp strm, ! 757: int windowBits)); ! 758: ! 759: This is another version of inflateInit with more compression options. The ! 760: fields next_out, zalloc, zfree and opaque must be initialized before by ! 761: the caller. ! 762: ! 763: The windowBits parameter is the base two logarithm of the maximum window ! 764: size (the size of the history buffer). It should be in the range 8..15 for ! 765: this version of the library (the value 16 will be allowed soon). The ! 766: default value is 15 if inflateInit is used instead. If a compressed stream ! 767: with a larger window size is given as input, inflate() will return with ! 768: the error code Z_DATA_ERROR instead of trying to allocate a larger window. ! 769: ! 770: If next_out is not null, the library will use this buffer for the history ! 771: buffer; the buffer must either be large enough to hold the entire output ! 772: data, or have at least 1<<windowBits bytes. If next_out is null, the ! 773: library will allocate its own buffer (and leave next_out null). next_in ! 774: need not be provided here but must be provided by the application for the ! 775: next call of inflate(). ! 776: ! 777: If the history buffer is provided by the application, next_out must ! 778: never be changed by the application since the decompressor maintains ! 779: history information inside this buffer from call to call; the application ! 780: can only reset next_out to the beginning of the history buffer when ! 781: avail_out is zero and all output has been consumed. ! 782: ! 783: inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was ! 784: not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as ! 785: windowBits < 8). msg is set to null if there is no error message. ! 786: inflateInit2 does not perform any decompression: this will be done by ! 787: inflate(). ! 788: */ ! 789: ! 790: extern int EXPORT inflateSetDictionary OF((z_streamp strm, ! 791: const Bytef *dictionary, ! 792: uInt dictLength)); ! 793: /* ! 794: Initializes the decompression dictionary (history buffer) from the given ! 795: uncompressed byte sequence. This function must be called immediately after ! 796: a call of inflate if this call returned Z_NEED_DICT. The dictionary chosen ! 797: by the compressor can be determined from the Adler32 value returned by this ! 798: call of inflate. The compressor and decompressor must use exactly the same ! 799: dictionary (see deflateSetDictionary). ! 800: ! 801: inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a ! 802: parameter is invalid (such as NULL dictionary) or the stream state is ! 803: inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the ! 804: expected one (incorrect Adler32 value). inflateSetDictionary does not ! 805: perform any decompression: this will be done by subsequent calls of ! 806: inflate(). ! 807: */ ! 808: ! 809: extern int EXPORT inflateSync OF((z_streamp strm)); ! 810: /* ! 811: Skips invalid compressed data until the special marker (see deflate() ! 812: above) can be found, or until all available input is skipped. No output ! 813: is provided. ! 814: ! 815: inflateSync returns Z_OK if the special marker has been found, Z_BUF_ERROR ! 816: if no more input was provided, Z_DATA_ERROR if no marker has been found, ! 817: or Z_STREAM_ERROR if the stream structure was inconsistent. In the success ! 818: case, the application may save the current current value of total_in which ! 819: indicates where valid compressed data was found. In the error case, the ! 820: application may repeatedly call inflateSync, providing more input each time, ! 821: until success or end of the input data. ! 822: */ ! 823: ! 824: extern int EXPORT inflateReset OF((z_streamp strm)); ! 825: /* ! 826: This function is equivalent to inflateEnd followed by inflateInit, ! 827: but does not free and reallocate all the internal decompression state. ! 828: The stream will keep attributes that may have been set by inflateInit2. ! 829: ! 830: inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source ! 831: stream state was inconsistent (such as zalloc or state being NULL). ! 832: */ ! 833: ! 834: extern int inflateIncomp OF((z_stream *strm)); ! 835: /* ! 836: This function adds the data at next_in (avail_in bytes) to the output ! 837: history without performing any output. There must be no pending output, ! 838: and the decompressor must be expecting to see the start of a block. ! 839: Calling this function is equivalent to decompressing a stored block ! 840: containing the data at next_in (except that the data is not output). ! 841: */ ! 842: ! 843: /* utility functions */ ! 844: ! 845: /* ! 846: The following utility functions are implemented on top of the ! 847: basic stream-oriented functions. To simplify the interface, some ! 848: default options are assumed (compression level, window size, ! 849: standard memory allocation functions). The source code of these ! 850: utility functions can easily be modified if you need special options. ! 851: */ ! 852: ! 853: extern int EXPORT compress OF((Bytef *dest, uLongf *destLen, ! 854: const Bytef *source, uLong sourceLen)); ! 855: /* ! 856: Compresses the source buffer into the destination buffer. sourceLen is ! 857: the byte length of the source buffer. Upon entry, destLen is the total ! 858: size of the destination buffer, which must be at least 0.1% larger than ! 859: sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the ! 860: compressed buffer. ! 861: This function can be used to compress a whole file at once if the ! 862: input file is mmap'ed. ! 863: compress returns Z_OK if success, Z_MEM_ERROR if there was not ! 864: enough memory, Z_BUF_ERROR if there was not enough room in the output ! 865: buffer. ! 866: */ ! 867: ! 868: extern int EXPORT uncompress OF((Bytef *dest, uLongf *destLen, ! 869: const Bytef *source, uLong sourceLen)); ! 870: /* ! 871: Decompresses the source buffer into the destination buffer. sourceLen is ! 872: the byte length of the source buffer. Upon entry, destLen is the total ! 873: size of the destination buffer, which must be large enough to hold the ! 874: entire uncompressed data. (The size of the uncompressed data must have ! 875: been saved previously by the compressor and transmitted to the decompressor ! 876: by some mechanism outside the scope of this compression library.) ! 877: Upon exit, destLen is the actual size of the compressed buffer. ! 878: This function can be used to decompress a whole file at once if the ! 879: input file is mmap'ed. ! 880: ! 881: uncompress returns Z_OK if success, Z_MEM_ERROR if there was not ! 882: enough memory, Z_BUF_ERROR if there was not enough room in the output ! 883: buffer, or Z_DATA_ERROR if the input data was corrupted. ! 884: */ ! 885: ! 886: ! 887: typedef voidp gzFile; ! 888: ! 889: extern gzFile EXPORT gzopen OF((const char *path, const char *mode)); ! 890: /* ! 891: Opens a gzip (.gz) file for reading or writing. The mode parameter ! 892: is as in fopen ("rb" or "wb") but can also include a compression level ! 893: ("wb9"). gzopen can be used to read a file which is not in gzip format; ! 894: in this case gzread will directly read from the file without decompression. ! 895: gzopen returns NULL if the file could not be opened or if there was ! 896: insufficient memory to allocate the (de)compression state; errno ! 897: can be checked to distinguish the two cases (if errno is zero, the ! 898: zlib error is Z_MEM_ERROR). ! 899: */ ! 900: ! 901: extern gzFile EXPORT gzdopen OF((int fd, const char *mode)); ! 902: /* ! 903: gzdopen() associates a gzFile with the file descriptor fd. File ! 904: descriptors are obtained from calls like open, dup, creat, pipe or ! 905: fileno (in the file has been previously opened with fopen). ! 906: The mode parameter is as in gzopen. ! 907: The next call of gzclose on the returned gzFile will also close the ! 908: file descriptor fd, just like fclose(fdopen(fd), mode) closes the file ! 909: descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode). ! 910: gzdopen returns NULL if there was insufficient memory to allocate ! 911: the (de)compression state. ! 912: */ ! 913: ! 914: extern int EXPORT gzread OF((gzFile file, voidp buf, unsigned len)); ! 915: /* ! 916: Reads the given number of uncompressed bytes from the compressed file. ! 917: If the input file was not in gzip format, gzread copies the given number ! 918: of bytes into the buffer. ! 919: gzread returns the number of uncompressed bytes actually read (0 for ! 920: end of file, -1 for error). */ ! 921: ! 922: extern int EXPORT gzwrite OF((gzFile file, const voidp buf, unsigned len)); ! 923: /* ! 924: Writes the given number of uncompressed bytes into the compressed file. ! 925: gzwrite returns the number of uncompressed bytes actually written ! 926: (0 in case of error). ! 927: */ ! 928: ! 929: extern int EXPORT gzflush OF((gzFile file, int flush)); ! 930: /* ! 931: Flushes all pending output into the compressed file. The parameter ! 932: flush is as in the deflate() function. The return value is the zlib ! 933: error number (see function gzerror below). gzflush returns Z_OK if ! 934: the flush parameter is Z_FINISH and all output could be flushed. ! 935: gzflush should be called only when strictly necessary because it can ! 936: degrade compression. ! 937: */ ! 938: ! 939: extern int EXPORT gzclose OF((gzFile file)); ! 940: /* ! 941: Flushes all pending output if necessary, closes the compressed file ! 942: and deallocates all the (de)compression state. The return value is the zlib ! 943: error number (see function gzerror below). ! 944: */ ! 945: ! 946: extern const char * EXPORT gzerror OF((gzFile file, int *errnum)); ! 947: /* ! 948: Returns the error message for the last error which occurred on the ! 949: given compressed file. errnum is set to zlib error number. If an ! 950: error occurred in the file system and not in the compression library, ! 951: errnum is set to Z_ERRNO and the application may consult errno ! 952: to get the exact error code. ! 953: */ ! 954: ! 955: /* checksum functions */ ! 956: ! 957: /* ! 958: These functions are not related to compression but are exported ! 959: anyway because they might be useful in applications using the ! 960: compression library. ! 961: */ ! 962: ! 963: extern uLong EXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); ! 964: ! 965: /* ! 966: Update a running Adler-32 checksum with the bytes buf[0..len-1] and ! 967: return the updated checksum. If buf is NULL, this function returns ! 968: the required initial value for the checksum. ! 969: An Adler-32 checksum is almost as reliable as a CRC32 but can be computed ! 970: much faster. Usage example: ! 971: ! 972: uLong adler = adler32(0L, Z_NULL, 0); ! 973: ! 974: while (read_buffer(buffer, length) != EOF) { ! 975: adler = adler32(adler, buffer, length); ! 976: } ! 977: if (adler != original_adler) error(); ! 978: */ ! 979: ! 980: extern uLong EXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); ! 981: /* ! 982: Update a running crc with the bytes buf[0..len-1] and return the updated ! 983: crc. If buf is NULL, this function returns the required initial value ! 984: for the crc. Pre- and post-conditioning (one's complement) is performed ! 985: within this function so it shouldn't be done by the application. ! 986: Usage example: ! 987: ! 988: uLong crc = crc32(0L, Z_NULL, 0); ! 989: ! 990: while (read_buffer(buffer, length) != EOF) { ! 991: crc = crc32(crc, buffer, length); ! 992: } ! 993: if (crc != original_crc) error(); ! 994: */ ! 995: ! 996: ! 997: /* various hacks, don't look :) */ ! 998: ! 999: /* deflateInit and inflateInit are macros to allow checking the zlib version ! 1000: * and the compiler's view of z_stream: ! 1001: */ ! 1002: extern int EXPORT deflateInit_ OF((z_streamp strm, int level, ! 1003: const char *version, int stream_size)); ! 1004: extern int EXPORT inflateInit_ OF((z_streamp strm, ! 1005: const char *version, int stream_size)); ! 1006: extern int EXPORT deflateInit2_ OF((z_streamp strm, int level, int method, ! 1007: int windowBits, int memLevel, int strategy, ! 1008: const char *version, int stream_size)); ! 1009: extern int EXPORT inflateInit2_ OF((z_streamp strm, int windowBits, ! 1010: const char *version, int stream_size)); ! 1011: #define deflateInit(strm, level) \ ! 1012: deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream)) ! 1013: #define inflateInit(strm) \ ! 1014: inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream)) ! 1015: #define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ ! 1016: deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ ! 1017: (strategy), ZLIB_VERSION, sizeof(z_stream)) ! 1018: #define inflateInit2(strm, windowBits) \ ! 1019: inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) ! 1020: ! 1021: #if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL) ! 1022: struct internal_state {int dummy;}; /* hack for buggy compilers */ ! 1023: #endif ! 1024: ! 1025: uLongf *get_crc_table OF((void)); /* can be used by asm versions of crc32() */ ! 1026: ! 1027: #ifdef __cplusplus ! 1028: } ! 1029: #endif ! 1030: ! 1031: #endif /* _ZLIB_H */ ! 1032: /* --- zlib.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.