From 169c68adf333a94aded700ca35451bb6cb9e296f Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Fri, 23 Feb 2024 21:30:10 +0300 Subject: [PATCH 01/11] [windows] add static zlib for msvc2019 x64 --- CMakeLists.txt | 7 +- diskwriter.h | 2 +- windows/msvc2019/zlib/include/zconf.h | 545 ++++++ windows/msvc2019/zlib/include/zlib.h | 1938 +++++++++++++++++++++ windows/msvc2019/zlib/lib/zlibstatic.lib | Bin 0 -> 189166 bytes windows/msvc2019/zlib/lib/zlibstaticd.lib | Bin 0 -> 285104 bytes 6 files changed, 2490 insertions(+), 2 deletions(-) create mode 100644 windows/msvc2019/zlib/include/zconf.h create mode 100644 windows/msvc2019/zlib/include/zlib.h create mode 100644 windows/msvc2019/zlib/lib/zlibstatic.lib create mode 100644 windows/msvc2019/zlib/lib/zlibstaticd.lib diff --git a/CMakeLists.txt b/CMakeLists.txt index 47f9fed..b6beaf5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,11 @@ if(LINUX) endif() find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS ${qtComponents}) +if(MSVC_TOOLSET_VERSION EQUAL 142) + list(APPEND CMAKE_PREFIX_PATH "windows/msvc2019/zlib") +endif() +find_package(ZLIB REQUIRED) + qt_add_executable(LibreELEC.USB-SD.Creator WIN32 MACOSX_BUNDLE creator.cpp creator.h creator.ui deviceenumerator.h @@ -58,7 +63,7 @@ target_link_libraries(LibreELEC.USB-SD.Creator PUBLIC Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Widgets - z + ZLIB::ZLIB ) string(TIMESTAMP nowDateTime UTC) diff --git a/diskwriter.h b/diskwriter.h index 9847c79..f19236c 100644 --- a/diskwriter.h +++ b/diskwriter.h @@ -25,7 +25,7 @@ #include #include -#include "zlib.h" +#include class DiskWriter : public QObject { diff --git a/windows/msvc2019/zlib/include/zconf.h b/windows/msvc2019/zlib/include/zconf.h new file mode 100644 index 0000000..4944a4e --- /dev/null +++ b/windows/msvc2019/zlib/include/zconf.h @@ -0,0 +1,545 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H +/* #undef Z_PREFIX */ +/* #undef Z_HAVE_UNISTD_H */ + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ +# define Z_PREFIX_SET + +/* all linked symbols and init macros */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_bits z__tr_flush_bits +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# define adler32_z z_adler32_z +# ifndef Z_SOLO +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# endif +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define crc32_combine_gen z_crc32_combine_gen +# define crc32_combine_gen64 z_crc32_combine_gen64 +# define crc32_combine_op z_crc32_combine_op +# define crc32_z z_crc32_z +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateGetDictionary z_deflateGetDictionary +# define deflateInit z_deflateInit +# define deflateInit2 z_deflateInit2 +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePending z_deflatePending +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateResetKeep z_deflateResetKeep +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# ifndef Z_SOLO +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzfread z_gzfread +# define gzfwrite z_gzfwrite +# define gzgetc z_gzgetc +# define gzgetc_ z_gzgetc_ +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# ifdef _WIN32 +# define gzopen_w z_gzopen_w +# endif +# define gzprintf z_gzprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzvprintf z_gzvprintf +# define gzwrite z_gzwrite +# endif +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit z_inflateBackInit +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCodesUsed z_inflateCodesUsed +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetDictionary z_inflateGetDictionary +# define inflateGetHeader z_inflateGetHeader +# define inflateInit z_inflateInit +# define inflateInit2 z_inflateInit2 +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateResetKeep z_inflateResetKeep +# define inflateSetDictionary z_inflateSetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflateValidate z_inflateValidate +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# ifndef Z_SOLO +# define uncompress z_uncompress +# define uncompress2 z_uncompress2 +# endif +# define zError z_zError +# ifndef Z_SOLO +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# endif +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# ifndef Z_SOLO +# define gzFile z_gzFile +# endif +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const +#endif + +#ifdef Z_SOLO +# ifdef _WIN64 + typedef unsigned long long z_size_t; +# else + typedef unsigned long z_size_t; +# endif +#else +# define z_longlong long long +# if defined(NO_SIZE_T) + typedef unsigned NO_SIZE_T z_size_t; +# elif defined(STDC) +# include + typedef size_t z_size_t; +# else + typedef unsigned long z_size_t; +# endif +# undef z_longlong +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus about 7 kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif +# include + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) +# include +# if (UINT_MAX == 0xffffffffUL) +# define Z_U4 unsigned +# elif (ULONG_MAX == 0xffffffffUL) +# define Z_U4 unsigned long +# elif (USHRT_MAX == 0xffffffffUL) +# define Z_U4 unsigned short +# endif +#endif + +#ifdef Z_U4 + typedef Z_U4 z_crc_t; +#else + typedef unsigned long z_crc_t; +#endif + +#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_STDARG_H +#endif + +#ifdef STDC +# ifndef Z_SOLO +# include /* for off_t */ +# endif +#endif + +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +# include /* for va_list */ +# endif +#endif + +#ifdef _WIN32 +# ifndef Z_SOLO +# include /* for wchar_t */ +# endif +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#ifndef Z_HAVE_UNISTD_H +# ifdef __WATCOMC__ +# define Z_HAVE_UNISTD_H +# endif +#endif +#ifndef Z_HAVE_UNISTD_H +# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32) +# define Z_HAVE_UNISTD_H +# endif +#endif +#ifndef Z_SOLO +# if defined(Z_HAVE_UNISTD_H) +# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ +# ifdef VMS +# include /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +# endif +#endif + +#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 +# define Z_LFS64 +#endif + +#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) +# define Z_LARGE64 +#endif + +#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) +# define Z_WANT64 +#endif + +#if !defined(SEEK_SET) && !defined(Z_SOLO) +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if !defined(_WIN32) && defined(Z_LARGE64) +# define z_off64_t off64_t +#else +# if defined(_WIN32) && !defined(__GNUC__) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/windows/msvc2019/zlib/include/zlib.h b/windows/msvc2019/zlib/include/zlib.h new file mode 100644 index 0000000..8d4b932 --- /dev/null +++ b/windows/msvc2019/zlib/include/zlib.h @@ -0,0 +1,1938 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.3.1, January 22nd, 2024 + + Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 + (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). +*/ + +#ifndef ZLIB_H +#define ZLIB_H + +#include "zconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIB_VERSION "1.3.1" +#define ZLIB_VERNUM 0x1310 +#define ZLIB_VER_MAJOR 1 +#define ZLIB_VER_MINOR 3 +#define ZLIB_VER_REVISION 1 +#define ZLIB_VER_SUBREVISION 0 + +/* + The 'zlib' compression library provides in-memory compression and + decompression functions, including integrity checks of the uncompressed data. + This version of the library supports only one compression method (deflation) + but other algorithms will be added later and will have the same stream + interface. + + Compression can be done in a single step if the buffers are large enough, + or can be done by repeated calls of the compression function. In the latter + case, the application must provide more input and/or consume the output + (providing more output space) before each call. + + The compressed data format used by default by the in-memory functions is + the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped + around a deflate stream, which is itself documented in RFC 1951. + + The library also supports reading and writing files in gzip (.gz) format + with an interface similar to that of stdio using the functions that start + with "gz". The gzip format is different from the zlib format. gzip is a + gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. + + This library can optionally read and write gzip and raw deflate streams in + memory as well. + + The zlib format was designed to be compact and fast for use in memory + and on communications channels. The gzip format was designed for single- + file compression on file systems, has a larger header than zlib to maintain + directory information, and uses a different, slower check method than zlib. + + The library does not install any signal handler. The decoder checks + the consistency of the compressed data, so the library should never crash + even in the case of corrupted input. +*/ + +typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size); +typedef void (*free_func)(voidpf opaque, voidpf address); + +struct internal_state; + +typedef struct z_stream_s { + z_const Bytef *next_in; /* next input byte */ + uInt avail_in; /* number of bytes available at next_in */ + uLong total_in; /* total number of input bytes read so far */ + + Bytef *next_out; /* next output byte will go here */ + uInt avail_out; /* remaining free space at next_out */ + uLong total_out; /* total number of bytes output so far */ + + z_const char *msg; /* last error message, NULL if no error */ + struct internal_state FAR *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + voidpf opaque; /* private data object passed to zalloc and zfree */ + + int data_type; /* best guess about the data type: binary or text + for deflate, or the decoding state for inflate */ + uLong adler; /* Adler-32 or CRC-32 value of the uncompressed data */ + uLong reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream FAR *z_streamp; + +/* + gzip header information passed to and from zlib routines. See RFC 1952 + for more details on the meanings of these fields. +*/ +typedef struct gz_header_s { + int text; /* true if compressed data believed to be text */ + uLong time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + Bytef *extra; /* pointer to extra field or Z_NULL if none */ + uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ + uInt extra_max; /* space at extra (only when reading header) */ + Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ + uInt name_max; /* space at name (only when reading header) */ + Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ + uInt comm_max; /* space at comment (only when reading header) */ + int hcrc; /* true if there was or will be a header crc */ + int done; /* true when done reading gzip header (not used + when writing a gzip file) */ +} gz_header; + +typedef gz_header FAR *gz_headerp; + +/* + The application must update next_in and avail_in when avail_in has dropped + to zero. It must update next_out and avail_out when avail_out has dropped + to zero. The application must initialize zalloc, zfree and opaque before + calling the init function. All other fields are set by the compression + library and must not be updated by the application. + + The opaque value provided by the application will be passed as the first + parameter for calls of zalloc and zfree. This can be useful for custom + memory management. The compression library attaches no meaning to the + opaque value. + + zalloc must return Z_NULL if there is not enough memory for the object. + If zlib is used in a multi-threaded application, zalloc and zfree must be + thread safe. In that case, zlib is thread-safe. When zalloc and zfree are + Z_NULL on entry to the initialization function, they are set to internal + routines that use the standard library functions malloc() and free(). + + On 16-bit systems, the functions zalloc and zfree must be able to allocate + exactly 65536 bytes, but will not be required to allocate more than this if + the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers + returned by zalloc for objects of exactly 65536 bytes *must* have their + offset normalized to zero. The default allocation function provided by this + library ensures this (see zutil.c). To reduce memory requirements and avoid + any allocation of 64K objects, at the expense of compression ratio, compile + the library with -DMAX_WBITS=14 (see zconf.h). + + The fields total_in and total_out can be used for statistics or progress + reports. After compression, total_in holds the total size of the + uncompressed data and may be saved for use by the decompressor (particularly + if the decompressor wants to decompress everything in a single step). +*/ + + /* constants */ + +#define Z_NO_FLUSH 0 +#define Z_PARTIAL_FLUSH 1 +#define Z_SYNC_FLUSH 2 +#define Z_FULL_FLUSH 3 +#define Z_FINISH 4 +#define Z_BLOCK 5 +#define Z_TREES 6 +/* Allowed flush values; see deflate() and inflate() below for details */ + +#define Z_OK 0 +#define Z_STREAM_END 1 +#define Z_NEED_DICT 2 +#define Z_ERRNO (-1) +#define Z_STREAM_ERROR (-2) +#define Z_DATA_ERROR (-3) +#define Z_MEM_ERROR (-4) +#define Z_BUF_ERROR (-5) +#define Z_VERSION_ERROR (-6) +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + +#define Z_NO_COMPRESSION 0 +#define Z_BEST_SPEED 1 +#define Z_BEST_COMPRESSION 9 +#define Z_DEFAULT_COMPRESSION (-1) +/* compression levels */ + +#define Z_FILTERED 1 +#define Z_HUFFMAN_ONLY 2 +#define Z_RLE 3 +#define Z_FIXED 4 +#define Z_DEFAULT_STRATEGY 0 +/* compression strategy; see deflateInit2() below for details */ + +#define Z_BINARY 0 +#define Z_TEXT 1 +#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ +#define Z_UNKNOWN 2 +/* Possible values of the data_type field for deflate() */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported in this version) */ + +#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + + /* basic functions */ + +ZEXTERN const char * ZEXPORT zlibVersion(void); +/* The application can compare zlibVersion and ZLIB_VERSION for consistency. + If the first character differs, the library code actually used is not + compatible with the zlib.h header file used by the application. This check + is automatically made by deflateInit and inflateInit. + */ + +/* +ZEXTERN int ZEXPORT deflateInit(z_streamp strm, int level); + + Initializes the internal stream state for compression. The fields + zalloc, zfree and opaque must be initialized before by the caller. If + zalloc and zfree are set to Z_NULL, deflateInit updates them to use default + allocation functions. total_in, total_out, adler, and msg are initialized. + + The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + 1 gives best speed, 9 gives best compression, 0 gives no compression at all + (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION + requests a default compromise between speed and compression (currently + equivalent to level 6). + + deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if level is not a valid compression level, or + Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible + with the version assumed by the caller (ZLIB_VERSION). msg is set to null + if there is no error message. deflateInit does not perform any compression: + this will be done by deflate(). +*/ + + +ZEXTERN int ZEXPORT deflate(z_streamp strm, int flush); +/* + deflate compresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. deflate performs one or both of the + following actions: + + - Compress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in and avail_in are updated and + processing will resume at this point for the next call of deflate(). + + - Generate more output starting at next_out and update next_out and avail_out + accordingly. This action is forced if the parameter flush is non zero. + Forcing flush frequently degrades the compression ratio, so this parameter + should be set only when necessary. Some output may be provided even if + flush is zero. + + Before the call of deflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating avail_in or avail_out accordingly; avail_out should + never be zero before the call. The application can consume the compressed + output when it wants, for example when the output buffer is full (avail_out + == 0), or after each call of deflate(). If deflate returns Z_OK and with + zero avail_out, it must be called again after making room in the output + buffer because there might be more output pending. See deflatePending(), + which can be used if desired to determine whether or not there is more output + in that case. + + Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to + decide how much data to accumulate before producing output, in order to + maximize compression. + + If the parameter flush is set to Z_SYNC_FLUSH, all pending output is + flushed to the output buffer and the output is aligned on a byte boundary, so + that the decompressor can get all input data available so far. (In + particular avail_in is zero after the call if enough output space has been + provided before the call.) Flushing may degrade compression for some + compression algorithms and so it should be used only when necessary. This + completes the current deflate block and follows it with an empty stored block + that is three bits plus filler bits to the next byte, followed by four bytes + (00 00 ff ff). + + If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the + output buffer, but the output is not aligned to a byte boundary. All of the + input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. + This completes the current deflate block and follows it with an empty fixed + codes block that is 10 bits long. This assures that enough bytes are output + in order for the decompressor to finish the block before the empty fixed + codes block. + + If flush is set to Z_BLOCK, a deflate block is completed and emitted, as + for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to + seven bits of the current block are held to be written as the next byte after + the next deflate block is completed. In this case, the decompressor may not + be provided enough bits at this point in order to complete decompression of + the data provided so far to the compressor. It may need to wait for the next + block to be emitted. This is for advanced applications that need to control + the emission of deflate blocks. + + If flush is set to Z_FULL_FLUSH, all output is flushed as with + Z_SYNC_FLUSH, and the compression state is reset so that decompression can + restart from this point if previous compressed data has been damaged or if + random access is desired. Using Z_FULL_FLUSH too often can seriously degrade + compression. + + If deflate returns with avail_out == 0, this function must be called again + with the same value of the flush parameter and more output space (updated + avail_out), until the flush is complete (deflate returns with non-zero + avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that + avail_out is greater than six when the flush marker begins, in order to avoid + repeated flush markers upon calling deflate() again when avail_out == 0. + + If the parameter flush is set to Z_FINISH, pending input is processed, + pending output is flushed and deflate returns with Z_STREAM_END if there was + enough output space. If deflate returns with Z_OK or Z_BUF_ERROR, this + function must be called again with Z_FINISH and more output space (updated + avail_out) but no more input data, until it returns with Z_STREAM_END or an + error. After deflate has returned Z_STREAM_END, the only possible operations + on the stream are deflateReset or deflateEnd. + + Z_FINISH can be used in the first deflate call after deflateInit if all the + compression is to be done in a single step. In order to complete in one + call, avail_out must be at least the value returned by deflateBound (see + below). Then deflate is guaranteed to return Z_STREAM_END. If not enough + output space is provided, deflate will not return Z_STREAM_END, and it must + be called again as described above. + + deflate() sets strm->adler to the Adler-32 checksum of all input read + so far (that is, total_in bytes). If a gzip stream is being generated, then + strm->adler will be the CRC-32 checksum of the input read so far. (See + deflateInit2 below.) + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). If in doubt, the data is + considered binary. This field is only for information purposes and does not + affect the compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was Z_NULL or the state was inadvertently written over + by the application), or Z_BUF_ERROR if no progress is possible (for example + avail_in or avail_out was zero). Note that Z_BUF_ERROR is not fatal, and + deflate() can be called again with more input and more output space to + continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd(z_streamp strm); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, msg + may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit(z_streamp strm); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. In the current version of inflate, the provided input is not + read or consumed. The allocation of a sliding window will be deferred to + the first call of inflate (if the decompression does not complete on the + first call). If zalloc and zfree are set to Z_NULL, inflateInit updates + them to use default allocation functions. total_in, total_out, adler, and + msg are initialized. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit does not perform any decompression. + Actual decompression will be done by inflate(). So next_in, and avail_in, + next_out, and avail_out are unused and unchanged. The current + implementation of inflateInit() does not process any header information -- + that is deferred until inflate() is called. +*/ + + +ZEXTERN int ZEXPORT inflate(z_streamp strm, int flush); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), then next_in and avail_in are updated + accordingly, and processing will resume at this point for the next call of + inflate(). + + - Generate more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there is + no more input data or no more space in the output buffer (see below about + the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating the next_* and avail_* values accordingly. If the + caller of inflate() does not provide both available input and available + output space, it is possible that there will be no progress made. The + application can consume the uncompressed output when it wants, for example + when the output buffer is full (avail_out == 0), or after each call of + inflate(). If inflate returns Z_OK and with zero avail_out, it must be + called again after making room in the output buffer because there might be + more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, + Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() + stop if and when it gets to the next deflate block boundary. When decoding + the zlib or gzip format, this will cause inflate() to return immediately + after the header and before the first block. When doing a raw inflate, + inflate() will go ahead and process the first block, and will return when it + gets to the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + To assist in this, on return inflate() always sets strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 if + inflate() is currently decoding the last block in the deflate stream, plus + 128 if inflate() returned immediately after decoding an end-of-block code or + decoding the complete header up to just before the first byte of the deflate + stream. The end-of-block will not be indicated until all of the uncompressed + data from that block has been written to strm->next_out. The number of + unused bits may in general be greater than seven, except when bit 7 of + data_type is set, in which case the number of unused bits will be less than + eight. data_type is set as noted here every time inflate() returns for all + flush options, and so can be used to determine the amount of currently + consumed input in bits. + + The Z_TREES option behaves as Z_BLOCK does, but it also returns when the + end of each deflate block header is reached, before any actual data in that + block is decoded. This allows the caller to determine the length of the + deflate block header for later use in random access within a deflate block. + 256 is added to the value of strm->data_type when inflate() returns + immediately after reaching the end of the deflate block header. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step (a + single call of inflate), the parameter flush should be set to Z_FINISH. In + this case all pending input is processed and all pending output is flushed; + avail_out must be large enough to hold all of the uncompressed data for the + operation to complete. (The size of the uncompressed data may have been + saved by the compressor for this purpose.) The use of Z_FINISH is not + required to perform an inflation in one step. However it may be used to + inform inflate that a faster approach can be used for the single inflate() + call. Z_FINISH also informs inflate to not maintain a sliding window if the + stream completes, which reduces inflate's memory footprint. If the stream + does not complete, either because not all of the stream is provided or not + enough output space is provided, then a sliding window will be allocated and + inflate() can be called again to continue the operation as if Z_NO_FLUSH had + been used. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the effects of the flush parameter in this implementation are + on the return value of inflate() as noted below, when inflate() returns early + when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of + memory for a sliding window when Z_FINISH is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the Adler-32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the Adler-32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed Adler-32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() can decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically, if requested when + initializing with inflateInit2(). Any information contained in the gzip + header is not retained unless inflateGetHeader() is used. When processing + gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output + produced so far. The CRC-32 is checked against the gzip trailer, as is the + uncompressed length, modulo 2^32. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value, in which case strm->msg points to a string with a more specific + error), Z_STREAM_ERROR if the stream structure was inconsistent (for example + next_in or next_out was Z_NULL, or the state was inadvertently written over + by the application), Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR + if no progress was possible or if there was not enough room in the output + buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may + then call inflateSync() to look for a good compression block if a partial + recovery of the data is to be attempted. +*/ + + +ZEXTERN int ZEXPORT inflateEnd(z_streamp strm); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + inflateEnd returns Z_OK if success, or Z_STREAM_ERROR if the stream state + was inconsistent. +*/ + + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2(z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy); + + This is another version of deflateInit with more compression options. The + fields zalloc, zfree and opaque must be initialized before by the caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + For the current implementation of deflate(), a windowBits value of 8 (a + window size of 256 bytes) is not supported. As a result, a request for 8 + will result in 9 (a 512-byte window). In that case, providing 8 to + inflateInit2() will result in an error when the zlib header with 9 is + checked against the initialization of inflate(). The remedy is to not use 8 + with deflateInit2() with this initialization, or at least in that case use 9 + with inflateInit2(). + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute a check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), no + header crc, and the operating system will be set to the appropriate value, + if the operating system was determined at compile time. If a gzip stream is + being written, strm->adler is a CRC-32 instead of an Adler-32. + + For raw deflate or gzip encoding, a request for a 256-byte window is + rejected as invalid, since only the zlib header provides a means of + transmitting the window size to the decompressor. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but is + slow and reduces compression ratio; memLevel=9 uses maximum memory for + optimal speed. The default value is 8. See zconf.h for total memory usage + as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid + method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is + incompatible with the version assumed by the caller (ZLIB_VERSION). msg is + set to null if there is no error message. deflateInit2 does not perform any + compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary(z_streamp strm, + const Bytef *dictionary, + uInt dictLength); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. When using the zlib format, this + function must be called immediately after deflateInit, deflateInit2 or + deflateReset, and before any call of deflate. When doing raw deflate, this + function must be called either before any call of deflate, or immediately + after the completion of a deflate block, i.e. after all input has been + consumed and all output has been delivered when using any of the flush + options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The + compressor and decompressor must use exactly the same dictionary (see + inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size + provided in deflateInit or deflateInit2. Thus the strings most likely to be + useful should be put at the end of the dictionary, not at the front. In + addition, the current implementation of deflate will use at most the window + size minus 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the Adler-32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The Adler-32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + Adler-32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if not at a block boundary for raw deflate). deflateSetDictionary does + not perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateGetDictionary(z_streamp strm, + Bytef *dictionary, + uInt *dictLength); +/* + Returns the sliding dictionary being maintained by deflate. dictLength is + set to the number of bytes in the dictionary, and that many bytes are copied + to dictionary. dictionary must have enough space, where 32768 bytes is + always enough. If deflateGetDictionary() is called with dictionary equal to + Z_NULL, then only the dictionary length is returned, and nothing is copied. + Similarly, if dictLength is Z_NULL, then it is not set. + + deflateGetDictionary() may return a length less than the window size, even + when more than the window size in input has been provided. It may return up + to 258 bytes less in that case, due to how zlib's implementation of deflate + manages the sliding window and lookahead for matches, where matches can be + up to 258 bytes long. If the application needs the last window-size bytes of + input, then that would need to be saved by the application outside of zlib. + + deflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the + stream state is inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateCopy(z_streamp dest, + z_streamp source); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and can + consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset(z_streamp strm); +/* + This function is equivalent to deflateEnd followed by deflateInit, but + does not free and reallocate the internal compression state. The stream + will leave the compression level and any other attributes that may have been + set unchanged. total_in, total_out, adler, and msg are initialized. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams(z_streamp strm, + int level, + int strategy); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2(). This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different strategy. + If the compression approach (which is a function of the level) or the + strategy is changed, and if there have been any deflate() calls since the + state was initialized or reset, then the input available so far is + compressed with the old level and strategy using deflate(strm, Z_BLOCK). + There are three approaches for the compression levels 0, 1..3, and 4..9 + respectively. The new level and strategy will take effect at the next call + of deflate(). + + If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does + not have enough output space to complete, then the parameter change will not + take effect. In this case, deflateParams() can be called again with the + same parameters and more output space to try again. + + In order to assure a change in the parameters on the first try, the + deflate stream should be flushed using deflate() with Z_BLOCK or other flush + request until strm.avail_out is not zero, before calling deflateParams(). + Then no more input data should be provided before the deflateParams() call. + If this is done, the old level and strategy will be applied to the data + compressed before deflateParams(), and the new level and strategy will be + applied to the data compressed after deflateParams(). + + deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream + state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if + there was not enough output space to complete the compression of the + available input data before a change in the strategy or approach. Note that + in the case of a Z_BUF_ERROR, the parameters are not changed. A return + value of Z_BUF_ERROR is not fatal, in which case deflateParams() can be + retried with more output space. +*/ + +ZEXTERN int ZEXPORT deflateTune(z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, + uLong sourceLen); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() or + deflateInit2(), and after deflateSetHeader(), if used. This would be used + to allocate an output buffer for deflation in a single pass, and so would be + called before deflate(). If that first deflate() call is provided the + sourceLen input bytes, an output buffer allocated to the size returned by + deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed + to return Z_STREAM_END. Note that it is possible for the compressed size to + be larger than the value returned by deflateBound() if flush options other + than Z_FINISH or Z_NO_FLUSH are used. +*/ + +ZEXTERN int ZEXPORT deflatePending(z_streamp strm, + unsigned *pending, + int *bits); +/* + deflatePending() returns the number of bytes and bits of output that have + been generated, but not yet provided in the available output. The bytes not + provided would be due to the available output space having being consumed. + The number of bits of output not provided are between 0 and 7, where they + await more bits to join them in order to fill out a full byte. If pending + or bits are Z_NULL, then those values are not set. + + deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. + */ + +ZEXTERN int ZEXPORT deflatePrime(z_streamp strm, + int bits, + int value); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the bits + leftover from a previous deflate stream when appending to it. As such, this + function can only be used for raw deflate, and must be used before the first + deflate() call after a deflateInit2() or deflateReset(). bits must be less + than or equal to 16, and that many of the least significant bits of value + will be inserted in the output. + + deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough + room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader(z_streamp strm, + gz_headerp head); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to the current operating system, with no + extra, name, or comment fields. The gzip header is returned to the default + state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2(z_streamp strm, + int windowBits); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be zero to request that inflate use the window size in + the zlib header of the compressed stream. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an Adler-32 or a CRC-32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a + CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see + below), inflate() will *not* automatically decode concatenated gzip members. + inflate() will return Z_STREAM_END at the end of the gzip member. The state + would need to be reset to continue decoding a subsequent gzip member. This + *must* be done if there is more data after a gzip member, in order for the + decompression to be compliant with the gzip standard (RFC 1952). + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit2 does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit2() does not process any header information -- that is + deferred until inflate() is called. +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary(z_streamp strm, + const Bytef *dictionary, + uInt dictLength); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the Adler-32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called at any + time to set the dictionary. If the provided dictionary is smaller than the + window and there is already data in the window, then the provided dictionary + will amend what's there. The application must insure that the dictionary + that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect Adler-32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateGetDictionary(z_streamp strm, + Bytef *dictionary, + uInt *dictLength); +/* + Returns the sliding dictionary being maintained by inflate. dictLength is + set to the number of bytes in the dictionary, and that many bytes are copied + to dictionary. dictionary must have enough space, where 32768 bytes is + always enough. If inflateGetDictionary() is called with dictionary equal to + Z_NULL, then only the dictionary length is returned, and nothing is copied. + Similarly, if dictLength is Z_NULL, then it is not set. + + inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the + stream state is inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateSync(z_streamp strm); +/* + Skips invalid compressed data until a possible full flush point (see above + for the description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync searches for a 00 00 FF FF pattern in the compressed data. + All full flush points have this pattern, but not all occurrences of this + pattern are full flush points. + + inflateSync returns Z_OK if a possible full flush point has been found, + Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point + has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. + In the success case, the application may save the current value of total_in + which indicates where valid compressed data was found. In the error case, + the application may repeatedly call inflateSync, providing more input each + time, until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy(z_streamp dest, + z_streamp source); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset(z_streamp strm); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate the internal decompression state. The + stream will keep attributes that may have been set by inflateInit2. + total_in, total_out, adler, and msg are initialized. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT inflateReset2(z_streamp strm, + int windowBits); +/* + This function is the same as inflateReset, but it also permits changing + the wrap and window size requests. The windowBits parameter is interpreted + the same as it is for inflateInit2. If the window size is changed, then the + memory allocated for the window is freed, and the window will be reallocated + by inflate() if needed. + + inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL), or if + the windowBits parameter is invalid. +*/ + +ZEXTERN int ZEXPORT inflatePrime(z_streamp strm, + int bits, + int value); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + If bits is negative, then the input stream bit buffer is emptied. Then + inflatePrime() can be called again to put bits in the buffer. This is used + to clear out bits leftover after feeding inflate a block description prior + to feeding inflate codes. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN long ZEXPORT inflateMark(z_streamp strm); +/* + This function returns two values, one in the lower 16 bits of the return + value, and the other in the remaining upper bits, obtained by shifting the + return value down 16 bits. If the upper value is -1 and the lower value is + zero, then inflate() is currently decoding information outside of a block. + If the upper value is -1 and the lower value is non-zero, then inflate is in + the middle of a stored block, with the lower value equaling the number of + bytes from the input remaining to copy. If the upper value is not -1, then + it is the number of bits back from the current bit position in the input of + the code (literal or length/distance pair) currently being processed. In + that case the lower value is the number of bytes already emitted for that + code. + + A code is being processed if inflate is waiting for more input to complete + decoding of the code, or if it has completed decoding but is waiting for + more output space to write the literal or match data. + + inflateMark() is used to mark locations in the input data for random + access, which may be at bit positions, and to note those cases where the + output of a code may span boundaries of random access blocks. The current + location in the input stream can be determined from avail_in and data_type + as noted in the description for the Z_BLOCK flush parameter for inflate. + + inflateMark returns the value noted above, or -65536 if the provided + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader(z_streamp strm, + gz_headerp head); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be + used to force inflate() to return immediately after header processing is + complete and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit(z_streamp strm, int windowBits, + unsigned char FAR *window); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the parameters are invalid, Z_MEM_ERROR if the internal state could not be + allocated, or Z_VERSION_ERROR if the version of the library does not match + the version of the header file. +*/ + +typedef unsigned (*in_func)(void FAR *, + z_const unsigned char FAR * FAR *); +typedef int (*out_func)(void FAR *, unsigned char FAR *, unsigned); + +ZEXTERN int ZEXPORT inflateBack(z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is potentially more efficient than + inflate() for file i/o applications, in that it avoids copying between the + output and the sliding window by simply making the window itself the output + buffer. inflate() can be faster on modern CPUs when used with large + buffers. inflateBack() trusts the application to not change the output + buffer passed by the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free the + allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects only + the raw deflate stream to decompress. This is different from the default + behavior of inflate(), which expects a zlib header and trailer around the + deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero -- buf is ignored in that + case -- and inflateBack() will return a buffer error. inflateBack() will + call out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. + out() should return zero on success, or non-zero on failure. If out() + returns non-zero, inflateBack() will return with an error. Neither in() nor + out() are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format error + in the deflate stream (in which case strm->msg is set to indicate the nature + of the error), or Z_STREAM_ERROR if the stream was not properly initialized. + In the case of Z_BUF_ERROR, an input or output error can be distinguished + using strm->next_in which will be Z_NULL only if in() returned an error. If + strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning + non-zero. (in() will always be called before out(), so strm->next_in is + assured to be defined if out() returns non-zero.) Note that inflateBack() + cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd(z_streamp strm); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags(void); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: ZLIB_DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + +#ifndef Z_SOLO + + /* utility functions */ + +/* + The following utility functions are implemented on top of the basic + stream-oriented functions. To simplify the interface, some default options + are assumed (compression level and memory usage, standard memory allocation + functions). The source code of these utility functions can be modified if + you need special options. +*/ + +ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed data. compress() is equivalent to compress2() with a level + parameter of Z_DEFAULT_COMPRESSION. + + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed data. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before a + compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, destLen + is the actual size of the uncompressed data. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In + the case where there is not enough room, uncompress() will fill the output + buffer with the uncompressed data up to that point. +*/ + +ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, + const Bytef *source, uLong *sourceLen); +/* + Same as uncompress, except that sourceLen is a pointer, where the + length of the source is *sourceLen. On return, *sourceLen is the number of + source bytes consumed. +*/ + + /* gzip file access functions */ + +/* + This library supports reading and writing files in gzip (.gz) format with + an interface similar to that of stdio, using the functions that start with + "gz". The gzip format is different from the zlib format. gzip is a gzip + wrapper, documented in RFC 1952, wrapped around a deflate stream. +*/ + +typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ + +/* +ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode); + + Open the gzip (.gz) file at path for reading and decompressing, or + compressing and writing. The mode parameter is as in fopen ("rb" or "wb") + but can also include a compression level ("wb9") or a strategy: 'f' for + filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h", + 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression + as in "wb9F". (See the description of deflateInit2 for more information + about the strategy parameter.) 'T' will request transparent writing or + appending with no compression and not using the gzip format. + + "a" can be used instead of "w" to request that the gzip stream that will + be written be appended to the file. "+" will result in an error, since + reading and writing to the same gzip file is not supported. The addition of + "x" when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of "e" when + reading or writing will set the flag to close the file on an execve() call. + + These functions, as well as gzip, will read and decode a sequence of gzip + streams in a file. The append function of gzopen() can be used to create + such a file. (Also see gzflush() for another way to do this.) When + appending, gzopen does not test whether the file begins with a gzip stream, + nor does it look for the end of the gzip streams to begin appending. gzopen + will simply append a gzip stream to the existing file. + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. When + reading, this will be detected automatically by looking for the magic two- + byte gzip header. + + gzopen returns NULL if the file could not be opened, if there was + insufficient memory to allocate the gzFile state, or if an invalid mode was + specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). + errno can be checked to determine if the reason gzopen failed was that the + file could not be opened. +*/ + +ZEXTERN gzFile ZEXPORT gzdopen(int fd, const char *mode); +/* + Associate a gzFile with the file descriptor fd. File descriptors are + obtained from calls like open, dup, creat, pipe or fileno (if the file has + been previously opened with fopen). The mode parameter is as in gzopen. + + The next call of gzclose on the returned gzFile will also close the file + descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor + fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, + mode);. The duplicated descriptor should be saved to avoid a leak, since + gzdopen does not close fd if it fails. If you are using fileno() to get the + file descriptor from a FILE *, then you will have to use dup() to avoid + double-close()ing the file descriptor. Both gzclose() and fclose() will + close the associated file descriptor, so they need to have different file + descriptors. + + gzdopen returns NULL if there was insufficient memory to allocate the + gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not + provided, or '+' was provided), or if fd is -1. The file descriptor is not + used until the next gz* read, write, seek, or close operation, so gzdopen + will not detect if fd is invalid (unless fd is -1). +*/ + +ZEXTERN int ZEXPORT gzbuffer(gzFile file, unsigned size); +/* + Set the internal buffer size used by this library's functions for file to + size. The default buffer size is 8192 bytes. This function must be called + after gzopen() or gzdopen(), and before any other calls that read or write + the file. The buffer memory allocation is always deferred to the first read + or write. Three times that size in buffer space is allocated. A larger + buffer size of, for example, 64K or 128K bytes will noticeably increase the + speed of decompression (reading). + + The new buffer size also affects the maximum length for gzprintf(). + + gzbuffer() returns 0 on success, or -1 on failure, such as being called + too late. +*/ + +ZEXTERN int ZEXPORT gzsetparams(gzFile file, int level, int strategy); +/* + Dynamically update the compression level and strategy for file. See the + description of deflateInit2 for the meaning of these parameters. Previously + provided data is flushed before applying the parameter changes. + + gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not + opened for writing, Z_ERRNO if there is an error writing the flushed data, + or Z_MEM_ERROR if there is a memory allocation error. +*/ + +ZEXTERN int ZEXPORT gzread(gzFile file, voidp buf, unsigned len); +/* + Read and decompress up to len uncompressed bytes from file into buf. If + the input file is not in gzip format, gzread copies the given number of + bytes into the buffer directly from the file. + + After reaching the end of a gzip stream in the input, gzread will continue + to read, looking for another gzip stream. Any number of gzip streams may be + concatenated in the input file, and will all be decompressed by gzread(). + If something other than a gzip stream is encountered after a gzip stream, + that remaining trailing garbage is ignored (and no error is returned). + + gzread can be used to read a gzip file that is being concurrently written. + Upon reaching the end of the input, gzread will return with the available + data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then + gzclearerr can be used to clear the end of file indicator in order to permit + gzread to be tried again. Z_OK indicates that a gzip stream was completed + on the last gzread. Z_BUF_ERROR indicates that the input file ended in the + middle of a gzip stream. Note that gzread does not return -1 in the event + of an incomplete gzip stream. This error is deferred until gzclose(), which + will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip + stream. Alternatively, gzerror can be used before gzclose to detect this + case. + + gzread returns the number of uncompressed bytes actually read, less than + len for end of file, or -1 for error. If len is too large to fit in an int, + then nothing is read, -1 is returned, and the error state is set to + Z_STREAM_ERROR. +*/ + +ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, + gzFile file); +/* + Read and decompress up to nitems items of size size from file into buf, + otherwise operating as gzread() does. This duplicates the interface of + stdio's fread(), with size_t request and return types. If the library + defines size_t, then z_size_t is identical to size_t. If not, then z_size_t + is an unsigned integer type that can contain a pointer. + + gzfread() returns the number of full items read of size size, or zero if + the end of the file was reached and a full item could not be read, or if + there was an error. gzerror() must be consulted if zero is returned in + order to determine if there was an error. If the multiplication of size and + nitems overflows, i.e. the product does not fit in a z_size_t, then nothing + is read, zero is returned, and the error state is set to Z_STREAM_ERROR. + + In the event that the end of file is reached and only a partial item is + available at the end, i.e. the remaining uncompressed data length is not a + multiple of size, then the final partial item is nevertheless read into buf + and the end-of-file flag is set. The length of the partial item read is not + provided, but could be inferred from the result of gztell(). This behavior + is the same as the behavior of fread() implementations in common libraries, + but it prevents the direct use of gzfread() to read a concurrently written + file, resetting and retrying on end-of-file, when size is not 1. +*/ + +ZEXTERN int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len); +/* + Compress and write the len uncompressed bytes at buf to file. gzwrite + returns the number of uncompressed bytes written or 0 in case of error. +*/ + +ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, + z_size_t nitems, gzFile file); +/* + Compress and write nitems items of size size from buf to file, duplicating + the interface of stdio's fwrite(), with size_t request and return types. If + the library defines size_t, then z_size_t is identical to size_t. If not, + then z_size_t is an unsigned integer type that can contain a pointer. + + gzfwrite() returns the number of full items written of size size, or zero + if there was an error. If the multiplication of size and nitems overflows, + i.e. the product does not fit in a z_size_t, then nothing is written, zero + is returned, and the error state is set to Z_STREAM_ERROR. +*/ + +ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...); +/* + Convert, format, compress, and write the arguments (...) to file under + control of the string format, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written, or a negative zlib error code in case + of error. The number of uncompressed bytes written is limited to 8191, or + one less than the buffer size given to gzbuffer(). The caller should assure + that this limit is not exceeded. If it is exceeded, then gzprintf() will + return an error (0) with nothing written. In this case, there may also be a + buffer overflow with unpredictable consequences, which is possible only if + zlib was compiled with the insecure functions sprintf() or vsprintf(), + because the secure snprintf() or vsnprintf() functions were not available. + This can be determined using zlibCompileFlags(). +*/ + +ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); +/* + Compress and write the given null-terminated string s to file, excluding + the terminating null character. + + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len); +/* + Read and decompress bytes from file into buf, until len-1 characters are + read, or until a newline character is read and transferred to buf, or an + end-of-file condition is encountered. If any characters are read or if len + is one, the string is terminated with a null character. If no characters + are read due to an end-of-file or len is less than one, then the buffer is + left untouched. + + gzgets returns buf which is a null-terminated string, or it returns NULL + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. +*/ + +ZEXTERN int ZEXPORT gzputc(gzFile file, int c); +/* + Compress and write c, converted to an unsigned char, into file. gzputc + returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc(gzFile file); +/* + Read and decompress one byte from file. gzgetc returns this byte or -1 + in case of end of file or error. This is implemented as a macro for speed. + As such, it does not do all of the checking the other functions do. I.e. + it does not check to see if file is NULL, nor whether the structure file + points to has been clobbered or not. +*/ + +ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); +/* + Push c back onto the stream for file to be read as the first character on + the next read. At least one character of push-back is always allowed. + gzungetc() returns the character pushed, or -1 on failure. gzungetc() will + fail if c is -1, and may fail if a character has been pushed but not read + yet. If gzungetc is used immediately after gzopen or gzdopen, at least the + output buffer size of pushed characters is allowed. (See gzbuffer above.) + The pushed character will be discarded if the stream is repositioned with + gzseek() or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush(gzFile file, int flush); +/* + Flush all pending output to file. The parameter flush is as in the + deflate() function. The return value is the zlib error number (see function + gzerror below). gzflush is only permitted when writing. + + If the flush parameter is Z_FINISH, the remaining data is written and the + gzip stream is completed in the output. If gzwrite() is called again, a new + gzip stream will be started in the output. gzread() is able to read such + concatenated gzip streams. + + gzflush should be called only when strictly necessary because it will + degrade compression if called too often. +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzseek(gzFile file, + z_off_t offset, int whence); + + Set the starting position to offset relative to whence for the next gzread + or gzwrite on file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind(gzFile file); +/* + Rewind file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET). +*/ + +/* +ZEXTERN z_off_t ZEXPORT gztell(gzFile file); + + Return the starting position for the next gzread or gzwrite on file. + This position represents a number of bytes in the uncompressed data stream, + and is zero when starting, even if appending or reading a gzip stream from + the middle of a file using gzdopen(). + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzoffset(gzFile file); + + Return the current compressed (actual) read or write offset of file. This + offset includes the count of bytes that precede the gzip stream, for example + when appending or when using gzdopen() for reading. When reading, the + offset does not include as yet unused buffered input. This information can + be used for a progress indicator. On error, gzoffset() returns -1. +*/ + +ZEXTERN int ZEXPORT gzeof(gzFile file); +/* + Return true (1) if the end-of-file indicator for file has been set while + reading, false (0) otherwise. Note that the end-of-file indicator is set + only if the read tried to go past the end of the input, but came up short. + Therefore, just like feof(), gzeof() may return false even if there is no + more data to read, in the event that the last read request was for the exact + number of bytes remaining in the input file. This will happen if the input + file size is an exact multiple of the buffer size. + + If gzeof() returns true, then the read functions will return no more data, + unless the end-of-file indicator is reset by gzclearerr() and the input file + has grown since the previous end of file was detected. +*/ + +ZEXTERN int ZEXPORT gzdirect(gzFile file); +/* + Return true (1) if file is being copied directly while reading, or false + (0) if file is a gzip stream being decompressed. + + If the input file is empty, gzdirect() will return true, since the input + does not contain a gzip stream. + + If gzdirect() is used immediately after gzopen() or gzdopen() it will + cause buffers to be allocated to allow reading the file to determine if it + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). + + When writing, gzdirect() returns true (1) if transparent writing was + requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: + gzdirect() is not needed when writing. Transparent writing must be + explicitly requested, so the application already knows the answer. When + linking statically, using gzdirect() will include all of the zlib code for + gzip file reading and decompression, which may not be desired.) +*/ + +ZEXTERN int ZEXPORT gzclose(gzFile file); +/* + Flush all pending output for file, if necessary, close file and + deallocate the (de)compression state. Note that once file is closed, you + cannot call gzerror with file, since its structures have been deallocated. + gzclose must not be called more than once on the same file, just as free + must not be called more than once on the same allocation. + + gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a + file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the + last read ended in the middle of a gzip stream, or Z_OK on success. +*/ + +ZEXTERN int ZEXPORT gzclose_r(gzFile file); +ZEXTERN int ZEXPORT gzclose_w(gzFile file); +/* + Same as gzclose(), but gzclose_r() is only for use when reading, and + gzclose_w() is only for use when writing or appending. The advantage to + using these instead of gzclose() is that they avoid linking in zlib + compression or decompression code that is not used when only reading or only + writing respectively. If gzclose() is used, then both compression and + decompression code will be included the application when linking to a static + zlib library. +*/ + +ZEXTERN const char * ZEXPORT gzerror(gzFile file, int *errnum); +/* + Return the error message for the last error which occurred on file. + errnum is set to zlib error number. If an error occurred in the file system + and not in the compression library, errnum is set to Z_ERRNO and the + application may consult errno to get the exact error code. + + The application must not modify the returned string. Future calls to + this function may invalidate the previously returned string. If file is + closed, then the string previously returned by gzerror will no longer be + available. + + gzerror() should be used to distinguish errors from end-of-file for those + functions above that do not distinguish those cases in their return values. +*/ + +ZEXTERN void ZEXPORT gzclearerr(gzFile file); +/* + Clear the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + +#endif /* !Z_SOLO */ + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the compression + library. +*/ + +ZEXTERN uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. An Adler-32 value is in the range of a 32-bit + unsigned integer. If buf is Z_NULL, this function returns the required + initial value for the checksum. + + An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed + much faster. + + Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, + z_size_t len); +/* + Same as adler32(), but with a size_t length. +*/ + +/* +ZEXTERN uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, + z_off_t len2); + + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note + that the z_off_t type (like off_t) is a signed integer. If len2 is + negative, the result has no meaning or utility. +*/ + +ZEXTERN uLong ZEXPORT crc32(uLong crc, const Bytef *buf, uInt len); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer. + If buf is Z_NULL, this function returns the required initial value for the + crc. Pre- and post-conditioning (one's complement) is performed within this + function so it shouldn't be done by the application. + + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf, + z_size_t len); +/* + Same as crc32(), but with a size_t length. +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2); + + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. len2 must be non-negative. +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2); + + Return the operator corresponding to length len2, to be used with + crc32_combine_op(). len2 must be non-negative. +*/ + +ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op); +/* + Give the same result as crc32_combine(), using op in place of len2. op is + is generated from len2 by crc32_combine_gen(). This will be faster than + crc32_combine() if the generated op is used more than once. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_(z_streamp strm, int level, + const char *version, int stream_size); +ZEXTERN int ZEXPORT inflateInit_(z_streamp strm, + const char *version, int stream_size); +ZEXTERN int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size); +ZEXTERN int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, + const char *version, int stream_size); +ZEXTERN int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size); +#ifdef Z_PREFIX_SET +# define z_deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) +# define z_inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) +# define z_deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) +# define z_inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) +# define z_inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, (int)sizeof(z_stream)) +#else +# define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) +# define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) +# define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) +# define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) +# define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, (int)sizeof(z_stream)) +#endif + +#ifndef Z_SOLO + +/* gzgetc() macro and its supporting function and exposed data structure. Note + * that the real internal state is much larger than the exposed structure. + * This abbreviated structure exposes just enough for the gzgetc() macro. The + * user should not mess with these exposed elements, since their names or + * behavior could change in the future, perhaps even capriciously. They can + * only be used by the gzgetc() macro. You have been warned. + */ +struct gzFile_s { + unsigned have; + unsigned char *next; + z_off64_t pos; +}; +ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */ +#ifdef Z_PREFIX_SET +# undef z_gzgetc +# define z_gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) +#else +# define gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) +#endif + +/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or + * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if + * both are true, the application gets the *64 functions, and the regular + * functions are changed to 64 bits) -- in case these are set on systems + * without large file support, _LFS64_LARGEFILE must also be true + */ +#ifdef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); + ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int); + ZEXTERN z_off64_t ZEXPORT gztell64(gzFile); + ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile); + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); +#endif + +#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) +# ifdef Z_PREFIX_SET +# define z_gzopen z_gzopen64 +# define z_gzseek z_gzseek64 +# define z_gztell z_gztell64 +# define z_gzoffset z_gzoffset64 +# define z_adler32_combine z_adler32_combine64 +# define z_crc32_combine z_crc32_combine64 +# define z_crc32_combine_gen z_crc32_combine_gen64 +# else +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# define crc32_combine_gen crc32_combine_gen64 +# endif +# ifndef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); + ZEXTERN z_off_t ZEXPORT gzseek64(gzFile, z_off_t, int); + ZEXTERN z_off_t ZEXPORT gztell64(gzFile); + ZEXTERN z_off_t ZEXPORT gzoffset64(gzFile); + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); +# endif +#else + ZEXTERN gzFile ZEXPORT gzopen(const char *, const char *); + ZEXTERN z_off_t ZEXPORT gzseek(gzFile, z_off_t, int); + ZEXTERN z_off_t ZEXPORT gztell(gzFile); + ZEXTERN z_off_t ZEXPORT gzoffset(gzFile); + ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t); +#endif + +#else /* Z_SOLO */ + + ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t); + +#endif /* !Z_SOLO */ + +/* undocumented functions */ +ZEXTERN const char * ZEXPORT zError(int); +ZEXTERN int ZEXPORT inflateSyncPoint(z_streamp); +ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table(void); +ZEXTERN int ZEXPORT inflateUndermine(z_streamp, int); +ZEXTERN int ZEXPORT inflateValidate(z_streamp, int); +ZEXTERN unsigned long ZEXPORT inflateCodesUsed(z_streamp); +ZEXTERN int ZEXPORT inflateResetKeep(z_streamp); +ZEXTERN int ZEXPORT deflateResetKeep(z_streamp); +#if defined(_WIN32) && !defined(Z_SOLO) +ZEXTERN gzFile ZEXPORT gzopen_w(const wchar_t *path, + const char *mode); +#endif +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +ZEXTERN int ZEXPORTVA gzvprintf(gzFile file, + const char *format, + va_list va); +# endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff --git a/windows/msvc2019/zlib/lib/zlibstatic.lib b/windows/msvc2019/zlib/lib/zlibstatic.lib new file mode 100644 index 0000000000000000000000000000000000000000..24c2d51b7ea089a0e2222b017c0b529e645a8d70 GIT binary patch literal 189166 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 Yb35%H`$qpH*mJw^57KSl?hpL`0Wn+WdjJ3c literal 0 HcmV?d00001 diff --git a/windows/msvc2019/zlib/lib/zlibstaticd.lib b/windows/msvc2019/zlib/lib/zlibstaticd.lib new file mode 100644 index 0000000000000000000000000000000000000000..8b4c52c62dfe6273a7041ad774cf24a8c27be396 GIT binary patch literal 285104 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

  • l#hV`3U<%Cbp>m}b6cXf0xz6=*U@gP2AdomF{$ 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¨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 od^{9FDMf%@wAFDd<6VM=$-{xI Date: Fri, 23 Feb 2024 21:30:36 +0300 Subject: [PATCH 02/11] [windows] fix building with msvc --- main.cpp | 2 +- privileges.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/main.cpp b/main.cpp index 04396c1..3bf6be0 100644 --- a/main.cpp +++ b/main.cpp @@ -88,7 +88,7 @@ int main(int argc, char *argv[]) } } - Privileges privileges = Privileges(); + Privileges privileges; privileges.Whoami(); QString argFile; diff --git a/privileges.h b/privileges.h index f3837c4..495e212 100644 --- a/privileges.h +++ b/privileges.h @@ -19,14 +19,14 @@ #ifndef PRIVILEGES_H #define PRIVILEGES_H +#include + class Privileges { public: - Privileges() {} void SetRoot() {} void SetUser() {} void SetRealUser() {} void Whoami() {} - void SaveUserEnv(pid_t) {} QString GetUserEnvDbusSession() { return QString(); From 74bc4205242c515cfbf4d57fa4e6ddfb1ce9bc0c Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Sat, 24 Feb 2024 16:14:37 +0300 Subject: [PATCH 03/11] [windows] fix linking with msvc --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index b6beaf5..de5db8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -112,6 +112,12 @@ qt_add_translations(LibreELEC.USB-SD.Creator ) if(WIN32) + if(MSVC) + set_target_properties(LibreELEC.USB-SD.Creator PROPERTIES + LINK_OPTIONS "/MANIFEST:NO" # disable default manifest + ) + endif() + target_sources(LibreELEC.USB-SD.Creator PUBLIC deviceenumerator_windows.cpp deviceenumerator_windows.h diskwriter_windows.cpp diskwriter_windows.h From 0e48876dbec6623d25d1a9eb3f19f5c9c9cc7294 Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Fri, 23 Feb 2024 21:30:49 +0300 Subject: [PATCH 04/11] [windows] disable dark mode --- main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/main.cpp b/main.cpp index 3bf6be0..80680a3 100644 --- a/main.cpp +++ b/main.cpp @@ -46,6 +46,7 @@ void noMessageOutput(QtMsgType type, const QMessageLogContext &context, const QS int main(int argc, char *argv[]) { + qputenv("QT_QPA_PLATFORM", "windows:darkmode=0"); QApplication app(argc, argv); const auto cmdArgs = app.arguments(); From 385717765c026dddb0d6b8a5f60879dd46854c9d Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Sat, 24 Feb 2024 08:44:32 +0300 Subject: [PATCH 05/11] [windows] add WINDOWS_DUMMY_WRITE option to cmake --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index de5db8e..aa1c7d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) +if(WIN32) + option(DUMMY_WRITE "Write image to local file named 'dummy_image_file' instead to real device (for testing)") +endif() + find_package(QT NAMES Qt6 REQUIRED COMPONENTS Core) set(qtComponents Gui Network Widgets LinguistTools) @@ -72,6 +76,7 @@ target_compile_definitions(LibreELEC.USB-SD.Creator PRIVATE "BUILD_VERSION=\"${PROJECT_VERSION}\"" "COPYRIGHT_YEARS=\"${copyrightYears}\"" $<$:ALWAYS_DEBUG_OUTPUT> + $<$:WINDOWS_DUMMY_WRITE> ) qt_add_translations(LibreELEC.USB-SD.Creator From 5e255d869406a59e9c5c702e4b6db64dd897966d Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Fri, 23 Feb 2024 21:31:24 +0300 Subject: [PATCH 06/11] prevent showing duplicate languages happens when running from build dir --- translator.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/translator.cpp b/translator.cpp index 3c6289c..f7935a2 100644 --- a/translator.cpp +++ b/translator.cpp @@ -46,8 +46,6 @@ void Translator::fillLanguages(QMenu *menuPtr, QPushButton *langBtnPtr) QStringList qmFiles; // languages from resources qmFiles << QDir(":/lang").entryList(QStringList("*.qm")); - // languages from a local disk (mostly for testing purposes) - qmFiles << QDir(".").entryList(QStringList("*.qm")); // add menu entry for all the files QList actions; From 28088896d7b17db63dd4065b1a98a3efb7775695 Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Sat, 24 Feb 2024 10:11:13 +0300 Subject: [PATCH 07/11] [CI] add Windows MSVC --- .github/workflows/build.yaml | 24 +++++++++++++++++++++++- CMakePresets.json | 5 +++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index c0d3730..ff758d7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -14,16 +14,38 @@ jobs: platform: macos preset: release-macos artifact: '*.dmg' + - os: windows-latest + platform: windows-msvc + preset: release-msvc + useQtAction: true steps: - name: Checkout uses: actions/checkout@v4 - name: Setup + shell: bash run: | - ci/${{ matrix.platform }}/setup.sh + setupScript='ci/${{ matrix.platform }}/setup.sh' + [ ! -f "$setupScript" ] || "$setupScript" env: MACOS_ASC_API_KEY: ${{ secrets.MACOS_ASC_API_KEY }} MACOS_CODE_SIGN_KEY_BASE64: ${{ secrets.MACOS_CODE_SIGN_KEY_BASE64 }} MACOS_KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} + - name: Install Qt + uses: jurplel/install-qt-action@v3 + if: ${{ matrix.useQtAction }} + with: + version: '6.6.2' + arch: 'win64_msvc2019_64' + archives: 'qtbase qttools opengl32sw d3dcompiler_47' + extra: '--external 7z' + cache: true + setup-python: false + - name: Prepare MSVC environment + uses: ilammy/msvc-dev-cmd@v1 + if: ${{ matrix.platform == 'windows-msvc' }} + with: + arch: x64 + toolset: 14.29 - name: Configure run: | cmake --preset ${{ matrix.preset || 'release' }} diff --git a/CMakePresets.json b/CMakePresets.json index 3385538..2afcbb5 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -17,6 +17,11 @@ "CMAKE_OSX_ARCHITECTURES": "x86_64;arm64", "CMAKE_OSX_DEPLOYMENT_TARGET": "11.0" } + }, + { + "name": "release-msvc", + "inherits": "release", + "generator": "NMake Makefiles" } ], "buildPresets": [ From 659e6bce1a350702c5c4a9e3f1c85cef66bbaa41 Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Sat, 24 Feb 2024 13:22:50 +0300 Subject: [PATCH 08/11] [windows] deploy Qt libs when installing --- CMakeLists.txt | 79 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index aa1c7d7..307a28b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,12 +20,19 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) +include(GNUInstallDirs) +# GNU dirs must be adjusted before finding Qt for qt_deploy_runtime_dependencies to use customzied vars +if(WIN32) + set(CMAKE_INSTALL_BINDIR .) +endif() + +# options if(WIN32) option(DUMMY_WRITE "Write image to local file named 'dummy_image_file' instead to real device (for testing)") endif() +# dependencies find_package(QT NAMES Qt6 REQUIRED COMPONENTS Core) - set(qtComponents Gui Network Widgets LinguistTools) if(LINUX) list(APPEND qtComponents DBus) @@ -37,6 +44,7 @@ if(MSVC_TOOLSET_VERSION EQUAL 142) endif() find_package(ZLIB REQUIRED) +# executable qt_add_executable(LibreELEC.USB-SD.Creator WIN32 MACOSX_BUNDLE creator.cpp creator.h creator.ui deviceenumerator.h @@ -131,6 +139,14 @@ if(WIN32) ) configure_file("windows/winapp.rc.in" "${CMAKE_SOURCE_DIR}/windows/winapp.rc" @ONLY) + + set(qtDeployExecutable "$") + set(qtDeployExtraCommands " + # windeployqt also packages extra libs that aren't needed + foreach(dll in Qt${QT_VERSION_MAJOR}Svg opengl32sw D3Dcompiler_47) + file(REMOVE \"\\\${QT_DEPLOY_PREFIX}/\\\${QT_DEPLOY_BIN_DIR}/\\\${dll}.dll\") + endforeach() + ") elseif(APPLE) set_target_properties(LibreELEC.USB-SD.Creator PROPERTIES OUTPUT_NAME "${projectDisplayName}" @@ -142,32 +158,24 @@ elseif(APPLE) privileges_unix.cpp privileges_unix.h ) - set(bundleContentsDir "$") install(FILES "dmg_osx/icon.icns" - DESTINATION "${bundleContentsDir}/Resources" + DESTINATION "$/Resources" ) - qt_generate_deploy_script( - TARGET LibreELEC.USB-SD.Creator - OUTPUT_SCRIPT qtDeployScript - CONTENT " - qt_deploy_runtime_dependencies( - EXECUTABLE \"$\" - GENERATE_QT_CONF - NO_APP_STORE_COMPLIANCE - VERBOSE - ) - # macdeployqt also packages extra frameworks that aren't needed - foreach(qtModule in Pdf Svg) - file(REMOVE_RECURSE \"${bundleContentsDir}/Frameworks/Qt\\\${qtModule}.framework\") - endforeach() - - # codesign - execute_process(COMMAND \"${CMAKE_SOURCE_DIR}/dmg_osx/codesign.sh\" - WORKING_DIRECTORY \"${bundleContentsDir}\" - ) - ") - install(SCRIPT ${qtDeployScript}) + set(qtDeployExecutable "$.app") + set(qtDeployExtraCommands " + set(bundleContentsDir \"\\\${QT_DEPLOY_PREFIX}/${qtDeployExecutable}/Contents\") + + # macdeployqt also packages extra frameworks that aren't needed + foreach(qtModule in Pdf Svg) + file(REMOVE_RECURSE \"\\\${bundleContentsDir}/Frameworks/Qt\\\${qtModule}.framework\") + endforeach() + + # codesign + execute_process(COMMAND \"${CMAKE_SOURCE_DIR}/dmg_osx/codesign.sh\" + WORKING_DIRECTORY \"\\\${bundleContentsDir}\" + ) + ") elseif(LINUX) set_target_properties(LibreELEC.USB-SD.Creator PROPERTIES SUFFIX .Linux.bin) @@ -182,15 +190,36 @@ elseif(LINUX) ) endif() +# install install(TARGETS LibreELEC.USB-SD.Creator BUNDLE DESTINATION . ) +if(qtDeployExecutable) + qt_generate_deploy_script( + TARGET LibreELEC.USB-SD.Creator + OUTPUT_SCRIPT qtDeployScript + CONTENT " + qt_deploy_runtime_dependencies( + EXECUTABLE \"${qtDeployExecutable}\" + GENERATE_QT_CONF + NO_APP_STORE_COMPLIANCE + NO_COMPILER_RUNTIME + NO_TRANSLATIONS + VERBOSE + ) + ${qtDeployExtraCommands} + " + ) + install(SCRIPT ${qtDeployScript}) +endif() # cpack set(CPACK_PACKAGE_NAME "${projectDisplayName}") set(CPACK_PACKAGE_VENDOR "LibreELEC") -if(APPLE) +if(WIN32) + set(CPACK_PACKAGE_FILE_NAME "LibreELEC.USB-SD.Creator.Win32") +elseif(APPLE) set(CPACK_PACKAGE_FILE_NAME "LibreELEC.USB-SD.Creator.macOS") set(notarizeScript "${CMAKE_BINARY_DIR}/notarize.cmake") From c55e6d852572b2b1730eb29c91fd9276c2747e5e Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Sat, 24 Feb 2024 15:42:11 +0300 Subject: [PATCH 09/11] [windows] fix indentation in manifest --- windows/windows.manifest | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/windows/windows.manifest b/windows/windows.manifest index f92bb82..68892cc 100644 --- a/windows/windows.manifest +++ b/windows/windows.manifest @@ -28,22 +28,22 @@ - + - - - - - - - - - - - - + + + + + + + + + + + + From 10694f12bb66667373b2105356b5233ac1813f9c Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Sat, 24 Feb 2024 16:31:21 +0300 Subject: [PATCH 10/11] [CI] windows: generate installer with InnoSetup --- .github/workflows/build.yaml | 2 ++ CMakeLists.txt | 1 + 2 files changed, 3 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index ff758d7..cf3f4b1 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -17,6 +17,7 @@ jobs: - os: windows-latest platform: windows-msvc preset: release-msvc + artifact: '*.Win32.exe' useQtAction: true steps: - name: Checkout @@ -66,3 +67,4 @@ jobs: with: path: build/${{ matrix.artifact }} name: ${{ matrix.platform }} + compression-level: 0 diff --git a/CMakeLists.txt b/CMakeLists.txt index 307a28b..43acc90 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -219,6 +219,7 @@ set(CPACK_PACKAGE_NAME "${projectDisplayName}") set(CPACK_PACKAGE_VENDOR "LibreELEC") if(WIN32) set(CPACK_PACKAGE_FILE_NAME "LibreELEC.USB-SD.Creator.Win32") + set(CPACK_GENERATOR INNOSETUP) elseif(APPLE) set(CPACK_PACKAGE_FILE_NAME "LibreELEC.USB-SD.Creator.macOS") From 2612498f1f9275e37c09b2df3399571a1ddac4c6 Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Sat, 24 Feb 2024 16:58:57 +0300 Subject: [PATCH 11/11] [CI] add windows-mingw without artifact --- .github/workflows/build.yaml | 18 ++++++++++++++++++ CMakePresets.json | 8 ++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index cf3f4b1..2747eb8 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -19,6 +19,9 @@ jobs: preset: release-msvc artifact: '*.Win32.exe' useQtAction: true + - os: windows-latest + platform: windows-mingw + preset: release-ninja steps: - name: Checkout uses: actions/checkout@v4 @@ -47,6 +50,21 @@ jobs: with: arch: x64 toolset: 14.29 + - name: Setup msys2 + uses: msys2/setup-msys2@v2 + if: ${{ matrix.platform == 'windows-mingw' }} + with: + update: true + install: >- + mingw-w64-x86_64-cmake + mingw-w64-x86_64-gcc + mingw-w64-x86_64-ninja + mingw-w64-x86_64-qt6-base + mingw-w64-x86_64-qt6-tools + - name: Put MSYS2_MinGW64 on PATH + if: ${{ matrix.platform == 'windows-mingw' }} + run: | + echo "${{ runner.temp }}/msys64/mingw64/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: Configure run: | cmake --preset ${{ matrix.preset || 'release' }} diff --git a/CMakePresets.json b/CMakePresets.json index 2afcbb5..d8ecfa0 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -10,9 +10,13 @@ } }, { - "name": "release-macos", + "name": "release-ninja", "inherits": "release", - "generator": "Ninja", + "generator": "Ninja" + }, + { + "name": "release-macos", + "inherits": "release-ninja", "cacheVariables": { "CMAKE_OSX_ARCHITECTURES": "x86_64;arm64", "CMAKE_OSX_DEPLOYMENT_TARGET": "11.0"