Annotation of sys/net/zlib.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: zlib.h,v 1.4 2001/06/09 06:16:39 angelos Exp $ */
! 2: /* $NetBSD: zlib.h,v 1.1 1996/03/15 02:28:17 paulus Exp $ */
! 3:
! 4: /*
! 5: * This file is derived from zlib.h and zconf.h from the zlib-0.95
! 6: * distribution by Jean-loup Gailly and Mark Adler, with some additions
! 7: * by Paul Mackerras to aid in implementing Deflate compression and
! 8: * decompression for PPP packets.
! 9: */
! 10:
! 11: /* zlib.h -- interface of the 'zlib' general purpose compression library
! 12: version 0.95, Aug 16th, 1995.
! 13:
! 14: Copyright (C) 1995 Jean-loup Gailly and Mark Adler
! 15:
! 16: This software is provided 'as-is', without any express or implied
! 17: warranty. In no event will the authors be held liable for any damages
! 18: arising from the use of this software.
! 19:
! 20: Permission is granted to anyone to use this software for any purpose,
! 21: including commercial applications, and to alter it and redistribute it
! 22: freely, subject to the following restrictions:
! 23:
! 24: 1. The origin of this software must not be misrepresented; you must not
! 25: claim that you wrote the original software. If you use this software
! 26: in a product, an acknowledgment in the product documentation would be
! 27: appreciated but is not required.
! 28: 2. Altered source versions must be plainly marked as such, and must not be
! 29: misrepresented as being the original software.
! 30: 3. This notice may not be removed or altered from any source distribution.
! 31:
! 32: Jean-loup Gailly Mark Adler
! 33: gzip@prep.ai.mit.edu madler@alumni.caltech.edu
! 34: */
! 35:
! 36: #ifndef _NET_ZLIB_H_
! 37: #define _NET_ZLIB_H_
! 38:
! 39: /* #include "zconf.h" */ /* included directly here */
! 40:
! 41: /* zconf.h -- configuration of the zlib compression library
! 42: * Copyright (C) 1995 Jean-loup Gailly.
! 43: * For conditions of distribution and use, see copyright notice in zlib.h
! 44: */
! 45:
! 46: /* From: zconf.h,v 1.12 1995/05/03 17:27:12 jloup Exp */
! 47:
! 48: /*
! 49: The library does not install any signal handler. It is recommended to
! 50: add at least a handler for SIGSEGV when decompressing; the library checks
! 51: the consistency of the input data whenever possible but may go nuts
! 52: for some forms of corrupted input.
! 53: */
! 54:
! 55: /*
! 56: * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
! 57: * than 64k bytes at a time (needed on systems with 16-bit int).
! 58: * Compile with -DUNALIGNED_OK if it is OK to access shorts or ints
! 59: * at addresses which are not a multiple of their size.
! 60: * Under DOS, -DFAR=far or -DFAR=__far may be needed.
! 61: */
! 62:
! 63: #ifndef STDC
! 64: # if defined(MSDOS) || defined(__STDC__) || defined(__cplusplus)
! 65: # define STDC
! 66: # endif
! 67: #endif
! 68:
! 69: #ifdef __MWERKS__ /* Metrowerks CodeWarrior declares fileno() in unix.h */
! 70: # include <unix.h>
! 71: #endif
! 72:
! 73: /* Maximum value for memLevel in deflateInit2 */
! 74: #ifndef MAX_MEM_LEVEL
! 75: # ifdef MAXSEG_64K
! 76: # define MAX_MEM_LEVEL 8
! 77: # else
! 78: # define MAX_MEM_LEVEL 9
! 79: # endif
! 80: #endif
! 81:
! 82: #ifndef FAR
! 83: # define FAR
! 84: #endif
! 85:
! 86: /* Maximum value for windowBits in deflateInit2 and inflateInit2 */
! 87: #ifndef MAX_WBITS
! 88: # define MAX_WBITS 15 /* 32K LZ77 window */
! 89: #endif
! 90:
! 91: /* The memory requirements for deflate are (in bytes):
! 92: 1 << (windowBits+2) + 1 << (memLevel+9)
! 93: that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
! 94: plus a few kilobytes for small objects. For example, if you want to reduce
! 95: the default memory requirements from 256K to 128K, compile with
! 96: make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
! 97: Of course this will generally degrade compression (there's no free lunch).
! 98:
! 99: The memory requirements for inflate are (in bytes) 1 << windowBits
! 100: that is, 32K for windowBits=15 (default value) plus a few kilobytes
! 101: for small objects.
! 102: */
! 103:
! 104: /* Type declarations */
! 105:
! 106: #ifndef OF /* function prototypes */
! 107: # ifdef STDC
! 108: # define OF(args) args
! 109: # else
! 110: # define OF(args) ()
! 111: # endif
! 112: #endif
! 113:
! 114: typedef unsigned char Byte; /* 8 bits */
! 115: typedef unsigned int uInt; /* 16 bits or more */
! 116: typedef unsigned long uLong; /* 32 bits or more */
! 117:
! 118: typedef Byte FAR Bytef;
! 119: typedef char FAR charf;
! 120: typedef int FAR intf;
! 121: typedef uInt FAR uIntf;
! 122: typedef uLong FAR uLongf;
! 123:
! 124: #ifdef STDC
! 125: typedef void FAR *voidpf;
! 126: typedef void *voidp;
! 127: #else
! 128: typedef Byte FAR *voidpf;
! 129: typedef Byte *voidp;
! 130: #endif
! 131:
! 132: /* end of original zconf.h */
! 133:
! 134: #define ZLIB_VERSION "0.95P"
! 135:
! 136: /*
! 137: The 'zlib' compression library provides in-memory compression and
! 138: decompression functions, including integrity checks of the uncompressed
! 139: data. This version of the library supports only one compression method
! 140: (deflation) but other algorithms may be added later and will have the same
! 141: stream interface.
! 142:
! 143: For compression the application must provide the output buffer and
! 144: may optionally provide the input buffer for optimization. For decompression,
! 145: the application must provide the input buffer and may optionally provide
! 146: the output buffer for optimization.
! 147:
! 148: Compression can be done in a single step if the buffers are large
! 149: enough (for example if an input file is mmap'ed), or can be done by
! 150: repeated calls of the compression function. In the latter case, the
! 151: application must provide more input and/or consume the output
! 152: (providing more output space) before each call.
! 153: */
! 154:
! 155: typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
! 156: typedef void (*free_func) OF((voidpf opaque, voidpf address, uInt nbytes));
! 157:
! 158: struct internal_state;
! 159:
! 160: typedef struct z_stream_s {
! 161: Bytef *next_in; /* next input byte */
! 162: uInt avail_in; /* number of bytes available at next_in */
! 163: uLong total_in; /* total nb of input bytes read so far */
! 164:
! 165: Bytef *next_out; /* next output byte should be put there */
! 166: uInt avail_out; /* remaining free space at next_out */
! 167: uLong total_out; /* total nb of bytes output so far */
! 168:
! 169: char *msg; /* last error message, NULL if no error */
! 170: struct internal_state FAR *state; /* not visible by applications */
! 171:
! 172: alloc_func zalloc; /* used to allocate the internal state */
! 173: free_func zfree; /* used to free the internal state */
! 174: voidp opaque; /* private data object passed to zalloc and zfree */
! 175:
! 176: Byte data_type; /* best guess about the data type: ascii or binary */
! 177:
! 178: } z_stream;
! 179:
! 180: /*
! 181: The application must update next_in and avail_in when avail_in has
! 182: dropped to zero. It must update next_out and avail_out when avail_out
! 183: has dropped to zero. The application must initialize zalloc, zfree and
! 184: opaque before calling the init function. All other fields are set by the
! 185: compression library and must not be updated by the application.
! 186:
! 187: The opaque value provided by the application will be passed as the first
! 188: parameter for calls of zalloc and zfree. This can be useful for custom
! 189: memory management. The compression library attaches no meaning to the
! 190: opaque value.
! 191:
! 192: zalloc must return Z_NULL if there is not enough memory for the object.
! 193: On 16-bit systems, the functions zalloc and zfree must be able to allocate
! 194: exactly 65536 bytes, but will not be required to allocate more than this
! 195: if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
! 196: pointers returned by zalloc for objects of exactly 65536 bytes *must*
! 197: have their offset normalized to zero. The default allocation function
! 198: provided by this library ensures this (see zutil.c). To reduce memory
! 199: requirements and avoid any allocation of 64K objects, at the expense of
! 200: compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
! 201:
! 202: The fields total_in and total_out can be used for statistics or
! 203: progress reports. After compression, total_in holds the total size of
! 204: the uncompressed data and may be saved for use in the decompressor
! 205: (particularly if the decompressor wants to decompress everything in
! 206: a single step).
! 207: */
! 208:
! 209: /* constants */
! 210:
! 211: #define Z_NO_FLUSH 0
! 212: #define Z_PARTIAL_FLUSH 1
! 213: #define Z_FULL_FLUSH 2
! 214: #define Z_SYNC_FLUSH 3 /* experimental: partial_flush + byte align */
! 215: #define Z_FINISH 4
! 216: #define Z_PACKET_FLUSH 5
! 217: /* See deflate() below for the usage of these constants */
! 218:
! 219: #define Z_OK 0
! 220: #define Z_STREAM_END 1
! 221: #define Z_ERRNO (-1)
! 222: #define Z_STREAM_ERROR (-2)
! 223: #define Z_DATA_ERROR (-3)
! 224: #define Z_MEM_ERROR (-4)
! 225: #define Z_BUF_ERROR (-5)
! 226: /* error codes for the compression/decompression functions */
! 227:
! 228: #define Z_BEST_SPEED 1
! 229: #define Z_BEST_COMPRESSION 9
! 230: #define Z_DEFAULT_COMPRESSION (-1)
! 231: /* compression levels */
! 232:
! 233: #define Z_FILTERED 1
! 234: #define Z_HUFFMAN_ONLY 2
! 235: #define Z_DEFAULT_STRATEGY 0
! 236:
! 237: #define Z_BINARY 0
! 238: #define Z_ASCII 1
! 239: #define Z_UNKNOWN 2
! 240: /* Used to set the data_type field */
! 241:
! 242: #define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
! 243:
! 244: extern char *zlib_version;
! 245: /* The application can compare zlib_version and ZLIB_VERSION for consistency.
! 246: If the first character differs, the library code actually used is
! 247: not compatible with the zlib.h header file used by the application.
! 248: */
! 249:
! 250: /* basic functions */
! 251:
! 252: extern int deflateInit OF((z_stream *strm, int level));
! 253: /*
! 254: Initializes the internal stream state for compression. The fields
! 255: zalloc, zfree and opaque must be initialized before by the caller.
! 256: If zalloc and zfree are set to Z_NULL, deflateInit updates them to
! 257: use default allocation functions.
! 258:
! 259: The compression level must be Z_DEFAULT_COMPRESSION, or between 1 and 9:
! 260: 1 gives best speed, 9 gives best compression. Z_DEFAULT_COMPRESSION requests
! 261: a default compromise between speed and compression (currently equivalent
! 262: to level 6).
! 263:
! 264: deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
! 265: enough memory, Z_STREAM_ERROR if level is not a valid compression level.
! 266: msg is set to null if there is no error message. deflateInit does not
! 267: perform any compression: this will be done by deflate().
! 268: */
! 269:
! 270:
! 271: extern int deflate OF((z_stream *strm, int flush));
! 272: /*
! 273: Performs one or both of the following actions:
! 274:
! 275: - Compress more input starting at next_in and update next_in and avail_in
! 276: accordingly. If not all input can be processed (because there is not
! 277: enough room in the output buffer), next_in and avail_in are updated and
! 278: processing will resume at this point for the next call of deflate().
! 279:
! 280: - Provide more output starting at next_out and update next_out and avail_out
! 281: accordingly. This action is forced if the parameter flush is non zero.
! 282: Forcing flush frequently degrades the compression ratio, so this parameter
! 283: should be set only when necessary (in interactive applications).
! 284: Some output may be provided even if flush is not set.
! 285:
! 286: Before the call of deflate(), the application should ensure that at least
! 287: one of the actions is possible, by providing more input and/or consuming
! 288: more output, and updating avail_in or avail_out accordingly; avail_out
! 289: should never be zero before the call. The application can consume the
! 290: compressed output when it wants, for example when the output buffer is full
! 291: (avail_out == 0), or after each call of deflate().
! 292:
! 293: If the parameter flush is set to Z_PARTIAL_FLUSH, the current compression
! 294: block is terminated and flushed to the output buffer so that the
! 295: decompressor can get all input data available so far. For method 9, a future
! 296: variant on method 8, the current block will be flushed but not terminated.
! 297: If flush is set to Z_FULL_FLUSH, the compression block is terminated, a
! 298: special marker is output and the compression dictionary is discarded; this
! 299: is useful to allow the decompressor to synchronize if one compressed block
! 300: has been damaged (see inflateSync below). Flushing degrades compression and
! 301: so should be used only when necessary. Using Z_FULL_FLUSH too often can
! 302: seriously degrade the compression. If deflate returns with avail_out == 0,
! 303: this function must be called again with the same value of the flush
! 304: parameter and more output space (updated avail_out), until the flush is
! 305: complete (deflate returns with non-zero avail_out).
! 306:
! 307: If the parameter flush is set to Z_PACKET_FLUSH, the compression
! 308: block is terminated, and a zero-length stored block is output,
! 309: omitting the length bytes (the effect of this is that the 3-bit type
! 310: code 000 for a stored block is output, and the output is then
! 311: byte-aligned). This is designed for use at the end of a PPP packet.
! 312: In addition, if the current compression block contains all the data
! 313: since the last Z_PACKET_FLUSH, it is never output as a stored block.
! 314: If the current compression block output as a static or dynamic block
! 315: would not be at least `minCompression' bytes smaller than the
! 316: original data, then nothing is output for that block. (The type
! 317: code for the zero-length stored block is still output, resulting in
! 318: a single zero byte being output for the whole packet.)
! 319: `MinCompression' is a parameter to deflateInit2, or 0 if deflateInit
! 320: is used.
! 321:
! 322: If the parameter flush is set to Z_FINISH, all pending input is processed,
! 323: all pending output is flushed and deflate returns with Z_STREAM_END if there
! 324: was enough output space; if deflate returns with Z_OK, this function must be
! 325: called again with Z_FINISH and more output space (updated avail_out) but no
! 326: more input data, until it returns with Z_STREAM_END or an error. After
! 327: deflate has returned Z_STREAM_END, the only possible operations on the
! 328: stream are deflateReset or deflateEnd.
! 329:
! 330: Z_FINISH can be used immediately after deflateInit if all the compression
! 331: is to be done in a single step. In this case, avail_out must be at least
! 332: 0.1% larger than avail_in plus 12 bytes. If deflate does not return
! 333: Z_STREAM_END, then it must be called again as described above.
! 334:
! 335: deflate() may update data_type if it can make a good guess about
! 336: the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
! 337: binary. This field is only for information purposes and does not affect
! 338: the compression algorithm in any manner.
! 339:
! 340: deflate() returns Z_OK if some progress has been made (more input
! 341: processed or more output produced), Z_STREAM_END if all input has been
! 342: consumed and all output has been produced (only when flush is set to
! 343: Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
! 344: if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible.
! 345: */
! 346:
! 347:
! 348: extern int deflateEnd OF((z_stream *strm));
! 349: /*
! 350: All dynamically allocated data structures for this stream are freed.
! 351: This function discards any unprocessed input and does not flush any
! 352: pending output.
! 353:
! 354: deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
! 355: stream state was inconsistent. In the error case, msg may be set
! 356: but then points to a static string (which must not be deallocated).
! 357: */
! 358:
! 359:
! 360: extern int inflateInit OF((z_stream *strm));
! 361: /*
! 362: Initializes the internal stream state for decompression. The fields
! 363: zalloc and zfree must be initialized before by the caller. If zalloc and
! 364: zfree are set to Z_NULL, inflateInit updates them to use default allocation
! 365: functions.
! 366:
! 367: inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
! 368: enough memory. msg is set to null if there is no error message.
! 369: inflateInit does not perform any decompression: this will be done by
! 370: inflate().
! 371: */
! 372:
! 373:
! 374: extern int inflate OF((z_stream *strm, int flush));
! 375: /*
! 376: Performs one or both of the following actions:
! 377:
! 378: - Decompress more input starting at next_in and update next_in and avail_in
! 379: accordingly. If not all input can be processed (because there is not
! 380: enough room in the output buffer), next_in is updated and processing
! 381: will resume at this point for the next call of inflate().
! 382:
! 383: - Provide more output starting at next_out and update next_out and avail_out
! 384: accordingly. inflate() always provides as much output as possible
! 385: (until there is no more input data or no more space in the output buffer).
! 386:
! 387: Before the call of inflate(), the application should ensure that at least
! 388: one of the actions is possible, by providing more input and/or consuming
! 389: more output, and updating the next_* and avail_* values accordingly.
! 390: The application can consume the uncompressed output when it wants, for
! 391: example when the output buffer is full (avail_out == 0), or after each
! 392: call of inflate().
! 393:
! 394: If the parameter flush is set to Z_PARTIAL_FLUSH or Z_PACKET_FLUSH,
! 395: inflate flushes as much output as possible to the output buffer. The
! 396: flushing behavior of inflate is not specified for values of the flush
! 397: parameter other than Z_PARTIAL_FLUSH, Z_PACKET_FLUSH or Z_FINISH, but the
! 398: current implementation actually flushes as much output as possible
! 399: anyway. For Z_PACKET_FLUSH, inflate checks that once all the input data
! 400: has been consumed, it is expecting to see the length field of a stored
! 401: block; if not, it returns Z_DATA_ERROR.
! 402:
! 403: inflate() should normally be called until it returns Z_STREAM_END or an
! 404: error. However if all decompression is to be performed in a single step
! 405: (a single call of inflate), the parameter flush should be set to
! 406: Z_FINISH. In this case all pending input is processed and all pending
! 407: output is flushed; avail_out must be large enough to hold all the
! 408: uncompressed data. (The size of the uncompressed data may have been saved
! 409: by the compressor for this purpose.) The next operation on this stream must
! 410: be inflateEnd to deallocate the decompression state. The use of Z_FINISH
! 411: is never required, but can be used to inform inflate that a faster routine
! 412: may be used for the single inflate() call.
! 413:
! 414: inflate() returns Z_OK if some progress has been made (more input
! 415: processed or more output produced), Z_STREAM_END if the end of the
! 416: compressed data has been reached and all uncompressed output has been
! 417: produced, Z_DATA_ERROR if the input data was corrupted, Z_STREAM_ERROR if
! 418: the stream structure was inconsistent (for example if next_in or next_out
! 419: was NULL), Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if no
! 420: progress is possible or if there was not enough room in the output buffer
! 421: when Z_FINISH is used. In the Z_DATA_ERROR case, the application may then
! 422: call inflateSync to look for a good compression block. */
! 423:
! 424:
! 425: extern int inflateEnd OF((z_stream *strm));
! 426: /*
! 427: All dynamically allocated data structures for this stream are freed.
! 428: This function discards any unprocessed input and does not flush any
! 429: pending output.
! 430:
! 431: inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
! 432: was inconsistent. In the error case, msg may be set but then points to a
! 433: static string (which must not be deallocated).
! 434: */
! 435:
! 436: /* advanced functions */
! 437:
! 438: /*
! 439: The following functions are needed only in some special applications.
! 440: */
! 441:
! 442: extern int deflateInit2 OF((z_stream *strm,
! 443: int level,
! 444: int method,
! 445: int windowBits,
! 446: int memLevel,
! 447: int strategy,
! 448: int minCompression));
! 449: /*
! 450: This is another version of deflateInit with more compression options. The
! 451: fields next_in, zalloc and zfree must be initialized before by the caller.
! 452:
! 453: The method parameter is the compression method. It must be 8 in this
! 454: version of the library. (Method 9 will allow a 64K history buffer and
! 455: partial block flushes.)
! 456:
! 457: The windowBits parameter is the base two logarithm of the window size
! 458: (the size of the history buffer). It should be in the range 8..15 for this
! 459: version of the library (the value 16 will be allowed for method 9). Larger
! 460: values of this parameter result in better compression at the expense of
! 461: memory usage. The default value is 15 if deflateInit is used instead.
! 462:
! 463: The memLevel parameter specifies how much memory should be allocated
! 464: for the internal compression state. memLevel=1 uses minimum memory but
! 465: is slow and reduces compression ratio; memLevel=9 uses maximum memory
! 466: for optimal speed. The default value is 8. See zconf.h for total memory
! 467: usage as a function of windowBits and memLevel.
! 468:
! 469: The strategy parameter is used to tune the compression algorithm. Use
! 470: the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data
! 471: produced by a filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman
! 472: encoding only (no string match). Filtered data consists mostly of small
! 473: values with a somewhat random distribution. In this case, the
! 474: compression algorithm is tuned to compress them better. The strategy
! 475: parameter only affects the compression ratio but not the correctness of
! 476: the compressed output even if it is not set appropriately.
! 477:
! 478: The minCompression parameter specifies the minimum reduction in size
! 479: required for a compressed block to be output when Z_PACKET_FLUSH is
! 480: used (see the description of deflate above).
! 481:
! 482: If next_in is not null, the library will use this buffer to hold also
! 483: some history information; the buffer must either hold the entire input
! 484: data, or have at least 1<<(windowBits+1) bytes and be writable. If next_in
! 485: is null, the library will allocate its own history buffer (and leave next_in
! 486: null). next_out need not be provided here but must be provided by the
! 487: application for the next call of deflate().
! 488:
! 489: If the history buffer is provided by the application, next_in must
! 490: must never be changed by the application since the compressor maintains
! 491: information inside this buffer from call to call; the application
! 492: must provide more input only by increasing avail_in. next_in is always
! 493: reset by the library in this case.
! 494:
! 495: deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was
! 496: not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as
! 497: an invalid method). msg is set to null if there is no error message.
! 498: deflateInit2 does not perform any compression: this will be done by
! 499: deflate().
! 500: */
! 501:
! 502: extern int deflateCopy OF((z_stream *dest,
! 503: z_stream *source));
! 504: /*
! 505: Sets the destination stream as a complete copy of the source stream. If
! 506: the source stream is using an application-supplied history buffer, a new
! 507: buffer is allocated for the destination stream. The compressed output
! 508: buffer is always application-supplied. It's the responsibility of the
! 509: application to provide the correct values of next_out and avail_out for the
! 510: next call of deflate.
! 511:
! 512: This function is useful when several compression strategies will be
! 513: tried, for example when there are several ways of pre-processing the input
! 514: data with a filter. The streams that will be discarded should then be freed
! 515: by calling deflateEnd. Note that deflateCopy duplicates the internal
! 516: compression state which can be quite large, so this strategy is slow and
! 517: can consume lots of memory.
! 518:
! 519: deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
! 520: enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
! 521: (such as zalloc being NULL). msg is left unchanged in both source and
! 522: destination.
! 523: */
! 524:
! 525: extern int deflateReset OF((z_stream *strm));
! 526: /*
! 527: This function is equivalent to deflateEnd followed by deflateInit,
! 528: but does not free and reallocate all the internal compression state.
! 529: The stream will keep the same compression level and any other attributes
! 530: that may have been set by deflateInit2.
! 531:
! 532: deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
! 533: stream state was inconsistent (such as zalloc or state being NULL).
! 534: */
! 535:
! 536: extern int inflateInit2 OF((z_stream *strm,
! 537: int windowBits));
! 538: /*
! 539: This is another version of inflateInit with more compression options. The
! 540: fields next_out, zalloc and zfree must be initialized before by the caller.
! 541:
! 542: The windowBits parameter is the base two logarithm of the maximum window
! 543: size (the size of the history buffer). It should be in the range 8..15 for
! 544: this version of the library (the value 16 will be allowed soon). The
! 545: default value is 15 if inflateInit is used instead. If a compressed stream
! 546: with a larger window size is given as input, inflate() will return with
! 547: the error code Z_DATA_ERROR instead of trying to allocate a larger window.
! 548:
! 549: If next_out is not null, the library will use this buffer for the history
! 550: buffer; the buffer must either be large enough to hold the entire output
! 551: data, or have at least 1<<windowBits bytes. If next_out is null, the
! 552: library will allocate its own buffer (and leave next_out null). next_in
! 553: need not be provided here but must be provided by the application for the
! 554: next call of inflate().
! 555:
! 556: If the history buffer is provided by the application, next_out must
! 557: never be changed by the application since the decompressor maintains
! 558: history information inside this buffer from call to call; the application
! 559: can only reset next_out to the beginning of the history buffer when
! 560: avail_out is zero and all output has been consumed.
! 561:
! 562: inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was
! 563: not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as
! 564: windowBits < 8). msg is set to null if there is no error message.
! 565: inflateInit2 does not perform any decompression: this will be done by
! 566: inflate().
! 567: */
! 568:
! 569: extern int inflateSync OF((z_stream *strm));
! 570: /*
! 571: Skips invalid compressed data until the special marker (see deflate()
! 572: above) can be found, or until all available input is skipped. No output
! 573: is provided.
! 574:
! 575: inflateSync returns Z_OK if the special marker has been found, Z_BUF_ERROR
! 576: if no more input was provided, Z_DATA_ERROR if no marker has been found,
! 577: or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
! 578: case, the application may save the current current value of total_in which
! 579: indicates where valid compressed data was found. In the error case, the
! 580: application may repeatedly call inflateSync, providing more input each time,
! 581: until success or end of the input data.
! 582: */
! 583:
! 584: extern int inflateReset OF((z_stream *strm));
! 585: /*
! 586: This function is equivalent to inflateEnd followed by inflateInit,
! 587: but does not free and reallocate all the internal decompression state.
! 588: The stream will keep attributes that may have been set by inflateInit2.
! 589:
! 590: inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
! 591: stream state was inconsistent (such as zalloc or state being NULL).
! 592: */
! 593:
! 594: extern int inflateIncomp OF((z_stream *strm));
! 595: /*
! 596: This function adds the data at next_in (avail_in bytes) to the output
! 597: history without performing any output. There must be no pending output,
! 598: and the decompressor must be expecting to see the start of a block.
! 599: Calling this function is equivalent to decompressing a stored block
! 600: containing the data at next_in (except that the data is not output).
! 601: */
! 602:
! 603: /* checksum functions */
! 604:
! 605: /*
! 606: This function is not related to compression but is exported
! 607: anyway because it might be useful in applications using the
! 608: compression library.
! 609: */
! 610:
! 611: extern uLong adler32 OF((uLong adler, Bytef *buf, uInt len));
! 612:
! 613: /*
! 614: Update a running Adler-32 checksum with the bytes buf[0..len-1] and
! 615: return the updated checksum. If buf is NULL, this function returns
! 616: the required initial value for the checksum.
! 617: An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
! 618: much faster. Usage example:
! 619:
! 620: uLong adler = adler32(0L, Z_NULL, 0);
! 621:
! 622: while (read_buffer(buffer, length) != EOF) {
! 623: adler = adler32(adler, buffer, length);
! 624: }
! 625: if (adler != original_adler) error();
! 626: */
! 627:
! 628: #ifndef _Z_UTIL_H
! 629: struct internal_state {int dummy;}; /* hack for buggy compilers */
! 630: #endif
! 631: #endif /* _NET_ZLIB_H_ */
CVSweb