Basic gzip/gunzip in memory buffer examples using zlib code.
Embed:
(wiki syntax)
Show/hide line numbers
zconf.h
00001 /* zconf.h -- configuration of the zlib compression library 00002 * Copyright (C) 1995-2012 Jean-loup Gailly. 00003 * For conditions of distribution and use, see copyright notice in zlib.h 00004 */ 00005 00006 /* @(#) $Id$ */ 00007 00008 #ifndef ZCONF_H 00009 #define ZCONF_H 00010 00011 #define Z_PREFIX 00012 #define MAX_MEM_LEVEL 3 00013 #define MAX_WBITS 10 00014 00015 /* 00016 * If you *really* need a unique prefix for all types and library functions, 00017 * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. 00018 * Even better than compiling with -DZ_PREFIX would be to use configure to set 00019 * this permanently in zconf.h using "./configure --zprefix". 00020 */ 00021 #ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ 00022 # define Z_PREFIX_SET 00023 00024 /* all linked symbols */ 00025 # define _dist_code z__dist_code 00026 # define _length_code z__length_code 00027 # define _tr_align z__tr_align 00028 # define _tr_flush_block z__tr_flush_block 00029 # define _tr_init z__tr_init 00030 # define _tr_stored_block z__tr_stored_block 00031 # define _tr_tally z__tr_tally 00032 # define adler32 z_adler32 00033 # define adler32_combine z_adler32_combine 00034 # define adler32_combine64 z_adler32_combine64 00035 # ifndef Z_SOLO 00036 # define compress z_compress 00037 # define compress2 z_compress2 00038 # define compressBound z_compressBound 00039 # endif 00040 # define crc32 z_crc32 00041 # define crc32_combine z_crc32_combine 00042 # define crc32_combine64 z_crc32_combine64 00043 # define deflate z_deflate 00044 # define deflateBound z_deflateBound 00045 # define deflateCopy z_deflateCopy 00046 # define deflateEnd z_deflateEnd 00047 # define deflateInit2_ z_deflateInit2_ 00048 # define deflateInit_ z_deflateInit_ 00049 # define deflateParams z_deflateParams 00050 # define deflatePending z_deflatePending 00051 # define deflatePrime z_deflatePrime 00052 # define deflateReset z_deflateReset 00053 # define deflateResetKeep z_deflateResetKeep 00054 # define deflateSetDictionary z_deflateSetDictionary 00055 # define deflateSetHeader z_deflateSetHeader 00056 # define deflateTune z_deflateTune 00057 # define deflate_copyright z_deflate_copyright 00058 # define get_crc_table z_get_crc_table 00059 # ifndef Z_SOLO 00060 # define gz_error z_gz_error 00061 # define gz_intmax z_gz_intmax 00062 # define gz_strwinerror z_gz_strwinerror 00063 # define gzbuffer z_gzbuffer 00064 # define gzclearerr z_gzclearerr 00065 # define gzclose z_gzclose 00066 # define gzclose_r z_gzclose_r 00067 # define gzclose_w z_gzclose_w 00068 # define gzdirect z_gzdirect 00069 # define gzdopen z_gzdopen 00070 # define gzeof z_gzeof 00071 # define gzerror z_gzerror 00072 # define gzflush z_gzflush 00073 # define gzgetc z_gzgetc 00074 # define gzgetc_ z_gzgetc_ 00075 # define gzgets z_gzgets 00076 # define gzoffset z_gzoffset 00077 # define gzoffset64 z_gzoffset64 00078 # define gzopen z_gzopen 00079 # define gzopen64 z_gzopen64 00080 # ifdef _WIN32 00081 # define gzopen_w z_gzopen_w 00082 # endif 00083 # define gzprintf z_gzprintf 00084 # define gzputc z_gzputc 00085 # define gzputs z_gzputs 00086 # define gzread z_gzread 00087 # define gzrewind z_gzrewind 00088 # define gzseek z_gzseek 00089 # define gzseek64 z_gzseek64 00090 # define gzsetparams z_gzsetparams 00091 # define gztell z_gztell 00092 # define gztell64 z_gztell64 00093 # define gzungetc z_gzungetc 00094 # define gzwrite z_gzwrite 00095 # endif 00096 # define inflate z_inflate 00097 # define inflateBack z_inflateBack 00098 # define inflateBackEnd z_inflateBackEnd 00099 # define inflateBackInit_ z_inflateBackInit_ 00100 # define inflateCopy z_inflateCopy 00101 # define inflateEnd z_inflateEnd 00102 # define inflateGetHeader z_inflateGetHeader 00103 # define inflateInit2_ z_inflateInit2_ 00104 # define inflateInit_ z_inflateInit_ 00105 # define inflateMark z_inflateMark 00106 # define inflatePrime z_inflatePrime 00107 # define inflateReset z_inflateReset 00108 # define inflateReset2 z_inflateReset2 00109 # define inflateSetDictionary z_inflateSetDictionary 00110 # define inflateSync z_inflateSync 00111 # define inflateSyncPoint z_inflateSyncPoint 00112 # define inflateUndermine z_inflateUndermine 00113 # define inflateResetKeep z_inflateResetKeep 00114 # define inflate_copyright z_inflate_copyright 00115 # define inflate_fast z_inflate_fast 00116 # define inflate_table z_inflate_table 00117 # ifndef Z_SOLO 00118 # define uncompress z_uncompress 00119 # endif 00120 # define zError z_zError 00121 # ifndef Z_SOLO 00122 # define zcalloc z_zcalloc 00123 # define zcfree z_zcfree 00124 # endif 00125 # define zlibCompileFlags z_zlibCompileFlags 00126 # define zlibVersion z_zlibVersion 00127 00128 /* all zlib typedefs in zlib.h and zconf.h */ 00129 # define Byte z_Byte 00130 # define Bytef z_Bytef 00131 # define alloc_func z_alloc_func 00132 # define charf z_charf 00133 # define free_func z_free_func 00134 # ifndef Z_SOLO 00135 # define gzFile z_gzFile 00136 # endif 00137 # define gz_header z_gz_header 00138 # define gz_headerp z_gz_headerp 00139 # define in_func z_in_func 00140 # define intf z_intf 00141 # define out_func z_out_func 00142 # define uInt z_uInt 00143 # define uIntf z_uIntf 00144 # define uLong z_uLong 00145 # define uLongf z_uLongf 00146 # define voidp z_voidp 00147 # define voidpc z_voidpc 00148 # define voidpf z_voidpf 00149 00150 /* all zlib structs in zlib.h and zconf.h */ 00151 # define gz_header_s z_gz_header_s 00152 # define internal_state z_internal_state 00153 00154 #endif 00155 00156 #if defined(__MSDOS__) && !defined(MSDOS) 00157 # define MSDOS 00158 #endif 00159 #if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) 00160 # define OS2 00161 #endif 00162 #if defined(_WINDOWS) && !defined(WINDOWS) 00163 # define WINDOWS 00164 #endif 00165 #if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) 00166 # ifndef WIN32 00167 # define WIN32 00168 # endif 00169 #endif 00170 #if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) 00171 # if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) 00172 # ifndef SYS16BIT 00173 # define SYS16BIT 00174 # endif 00175 # endif 00176 #endif 00177 00178 /* 00179 * Compile with -DMAXSEG_64K if the alloc function cannot allocate more 00180 * than 64k bytes at a time (needed on systems with 16-bit int). 00181 */ 00182 #ifdef SYS16BIT 00183 # define MAXSEG_64K 00184 #endif 00185 #ifdef MSDOS 00186 # define UNALIGNED_OK 00187 #endif 00188 00189 #ifdef __STDC_VERSION__ 00190 # ifndef STDC 00191 # define STDC 00192 # endif 00193 # if __STDC_VERSION__ >= 199901L 00194 # ifndef STDC99 00195 # define STDC99 00196 # endif 00197 # endif 00198 #endif 00199 #if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) 00200 # define STDC 00201 #endif 00202 #if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) 00203 # define STDC 00204 #endif 00205 #if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) 00206 # define STDC 00207 #endif 00208 #if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) 00209 # define STDC 00210 #endif 00211 00212 #if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ 00213 # define STDC 00214 #endif 00215 00216 #ifndef STDC 00217 # ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ 00218 # define const /* note: need a more gentle solution here */ 00219 # endif 00220 #endif 00221 00222 #if defined(ZLIB_CONST) && !defined(z_const) 00223 # define z_const const 00224 #else 00225 # define z_const 00226 #endif 00227 00228 /* Some Mac compilers merge all .h files incorrectly: */ 00229 #if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) 00230 # define NO_DUMMY_DECL 00231 #endif 00232 00233 /* Maximum value for memLevel in deflateInit2 */ 00234 #ifndef MAX_MEM_LEVEL 00235 # ifdef MAXSEG_64K 00236 # define MAX_MEM_LEVEL 8 00237 # else 00238 # define MAX_MEM_LEVEL 9 00239 # endif 00240 #endif 00241 00242 /* Maximum value for windowBits in deflateInit2 and inflateInit2. 00243 * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files 00244 * created by gzip. (Files created by minigzip can still be extracted by 00245 * gzip.) 00246 */ 00247 #ifndef MAX_WBITS 00248 # define MAX_WBITS 15 /* 32K LZ77 window */ 00249 #endif 00250 00251 /* The memory requirements for deflate are (in bytes): 00252 (1 << (windowBits+2)) + (1 << (memLevel+9)) 00253 that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) 00254 plus a few kilobytes for small objects. For example, if you want to reduce 00255 the default memory requirements from 256K to 128K, compile with 00256 make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" 00257 Of course this will generally degrade compression (there's no free lunch). 00258 00259 The memory requirements for inflate are (in bytes) 1 << windowBits 00260 that is, 32K for windowBits=15 (default value) plus a few kilobytes 00261 for small objects. 00262 */ 00263 00264 /* Type declarations */ 00265 00266 #ifndef OF /* function prototypes */ 00267 # ifdef STDC 00268 # define OF(args) args 00269 # else 00270 # define OF(args) () 00271 # endif 00272 #endif 00273 00274 #ifndef Z_ARG /* function prototypes for stdarg */ 00275 # if defined(STDC) || defined(Z_HAVE_STDARG_H) 00276 # define Z_ARG(args) args 00277 # else 00278 # define Z_ARG(args) () 00279 # endif 00280 #endif 00281 00282 /* The following definitions for FAR are needed only for MSDOS mixed 00283 * model programming (small or medium model with some far allocations). 00284 * This was tested only with MSC; for other MSDOS compilers you may have 00285 * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, 00286 * just define FAR to be empty. 00287 */ 00288 #ifdef SYS16BIT 00289 # if defined(M_I86SM) || defined(M_I86MM) 00290 /* MSC small or medium model */ 00291 # define SMALL_MEDIUM 00292 # ifdef _MSC_VER 00293 # define FAR _far 00294 # else 00295 # define FAR far 00296 # endif 00297 # endif 00298 # if (defined(__SMALL__) || defined(__MEDIUM__)) 00299 /* Turbo C small or medium model */ 00300 # define SMALL_MEDIUM 00301 # ifdef __BORLANDC__ 00302 # define FAR _far 00303 # else 00304 # define FAR far 00305 # endif 00306 # endif 00307 #endif 00308 00309 #if defined(WINDOWS) || defined(WIN32) 00310 /* If building or using zlib as a DLL, define ZLIB_DLL. 00311 * This is not mandatory, but it offers a little performance increase. 00312 */ 00313 # ifdef ZLIB_DLL 00314 # if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) 00315 # ifdef ZLIB_INTERNAL 00316 # define ZEXTERN extern __declspec(dllexport) 00317 # else 00318 # define ZEXTERN extern __declspec(dllimport) 00319 # endif 00320 # endif 00321 # endif /* ZLIB_DLL */ 00322 /* If building or using zlib with the WINAPI/WINAPIV calling convention, 00323 * define ZLIB_WINAPI. 00324 * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. 00325 */ 00326 # ifdef ZLIB_WINAPI 00327 # ifdef FAR 00328 # undef FAR 00329 # endif 00330 # include <windows.h> 00331 /* No need for _export, use ZLIB.DEF instead. */ 00332 /* For complete Windows compatibility, use WINAPI, not __stdcall. */ 00333 # define ZEXPORT WINAPI 00334 # ifdef WIN32 00335 # define ZEXPORTVA WINAPIV 00336 # else 00337 # define ZEXPORTVA FAR CDECL 00338 # endif 00339 # endif 00340 #endif 00341 00342 #if defined (__BEOS__) 00343 # ifdef ZLIB_DLL 00344 # ifdef ZLIB_INTERNAL 00345 # define ZEXPORT __declspec(dllexport) 00346 # define ZEXPORTVA __declspec(dllexport) 00347 # else 00348 # define ZEXPORT __declspec(dllimport) 00349 # define ZEXPORTVA __declspec(dllimport) 00350 # endif 00351 # endif 00352 #endif 00353 00354 #ifndef ZEXTERN 00355 # define ZEXTERN extern 00356 #endif 00357 #ifndef ZEXPORT 00358 # define ZEXPORT 00359 #endif 00360 #ifndef ZEXPORTVA 00361 # define ZEXPORTVA 00362 #endif 00363 00364 #ifndef FAR 00365 # define FAR 00366 #endif 00367 00368 #if !defined(__MACTYPES__) 00369 typedef unsigned char Byte; /* 8 bits */ 00370 #endif 00371 typedef unsigned int uInt; /* 16 bits or more */ 00372 typedef unsigned long uLong; /* 32 bits or more */ 00373 00374 #ifdef SMALL_MEDIUM 00375 /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ 00376 # define Bytef Byte FAR 00377 #else 00378 typedef Byte FAR Bytef; 00379 #endif 00380 typedef char FAR charf; 00381 typedef int FAR intf; 00382 typedef uInt FAR uIntf; 00383 typedef uLong FAR uLongf; 00384 00385 #ifdef STDC 00386 typedef void const *voidpc; 00387 typedef void FAR *voidpf; 00388 typedef void *voidp; 00389 #else 00390 typedef Byte const *voidpc; 00391 typedef Byte FAR *voidpf; 00392 typedef Byte *voidp; 00393 #endif 00394 00395 /* ./configure may #define Z_U4 here */ 00396 00397 #if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) 00398 # include <limits.h> 00399 # if (UINT_MAX == 0xffffffffUL) 00400 # define Z_U4 unsigned 00401 # else 00402 # if (ULONG_MAX == 0xffffffffUL) 00403 # define Z_U4 unsigned long 00404 # else 00405 # if (USHRT_MAX == 0xffffffffUL) 00406 # define Z_U4 unsigned short 00407 # endif 00408 # endif 00409 # endif 00410 #endif 00411 00412 #ifdef Z_U4 00413 typedef Z_U4 z_crc_t; 00414 #else 00415 typedef unsigned long z_crc_t; 00416 #endif 00417 00418 #ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ 00419 # define Z_HAVE_UNISTD_H 00420 #endif 00421 00422 #ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ 00423 # define Z_HAVE_STDARG_H 00424 #endif 00425 00426 #ifdef STDC 00427 # ifndef Z_SOLO 00428 //# include <sys/types.h> /* for off_t */ 00429 # endif 00430 #endif 00431 00432 #ifdef _WIN32 00433 # include <stddef.h> /* for wchar_t */ 00434 #endif 00435 00436 /* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and 00437 * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even 00438 * though the former does not conform to the LFS document), but considering 00439 * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as 00440 * equivalently requesting no 64-bit operations 00441 */ 00442 #if defined(LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 00443 # undef _LARGEFILE64_SOURCE 00444 #endif 00445 00446 #if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) 00447 # define Z_HAVE_UNISTD_H 00448 #endif 00449 #ifndef Z_SOLO 00450 # if defined(Z_HAVE_UNISTD_H) || defined(LARGEFILE64_SOURCE) 00451 # include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ 00452 # ifdef VMS 00453 # include <unixio.h> /* for off_t */ 00454 # endif 00455 # ifndef z_off_t 00456 # define z_off_t off_t 00457 # endif 00458 # endif 00459 #endif 00460 00461 #if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 00462 # define Z_LFS64 00463 #endif 00464 00465 #if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) 00466 # define Z_LARGE64 00467 #endif 00468 00469 #if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) 00470 # define Z_WANT64 00471 #endif 00472 00473 #if !defined(SEEK_SET) && !defined(Z_SOLO) 00474 # define SEEK_SET 0 /* Seek from beginning of file. */ 00475 # define SEEK_CUR 1 /* Seek from current position. */ 00476 # define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ 00477 #endif 00478 00479 #ifndef z_off_t 00480 # define z_off_t long 00481 #endif 00482 00483 #if !defined(_WIN32) && defined(Z_LARGE64) 00484 # define z_off64_t off64_t 00485 #else 00486 # if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) 00487 # define z_off64_t __int64 00488 # else 00489 # define z_off64_t z_off_t 00490 # endif 00491 #endif 00492 00493 /* MVS linker does not support external names larger than 8 bytes */ 00494 #if defined(__MVS__) 00495 #pragma map(deflateInit_,"DEIN") 00496 #pragma map(deflateInit2_,"DEIN2") 00497 #pragma map(deflateEnd,"DEEND") 00498 #pragma map(deflateBound,"DEBND") 00499 #pragma map(inflateInit_,"ININ") 00500 #pragma map(inflateInit2_,"ININ2") 00501 #pragma map(inflateEnd,"INEND") 00502 #pragma map(inflateSync,"INSY") 00503 #pragma map(inflateSetDictionary,"INSEDI") 00504 #pragma map(compressBound,"CMBND") 00505 #pragma map(inflate_table,"INTABL") 00506 #pragma map(inflate_fast,"INFA") 00507 #pragma map(inflate_copyright,"INCOPY") 00508 #endif 00509 00510 #endif /* ZCONF_H */
Generated on Wed Jul 13 2022 09:05:31 by
1.7.2