| diff --git a/contrib/minizip/ioapi.h b/contrib/minizip/ioapi.h |
| index 8dcbdb06e35a..c1b7a54847f5 100644 |
| --- a/contrib/minizip/ioapi.h |
| +++ b/contrib/minizip/ioapi.h |
| @@ -43,7 +43,7 @@ |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| -#include "zlib.h" |
| +#include "third_party/zlib/zlib.h" |
| |
| #if defined(USE_FILE32API) |
| #define fopen64 fopen |
| diff --git a/contrib/minizip/iowin32.c b/contrib/minizip/iowin32.c |
| index 274f39eb1dd2..246ceb91a139 100644 |
| --- a/contrib/minizip/iowin32.c |
| +++ b/contrib/minizip/iowin32.c |
| @@ -26,12 +26,19 @@ |
| #endif |
| |
| |
| +#ifdef _WIN32_WINNT |
| +#undef _WIN32_WINNT |
| +#define _WIN32_WINNT 0x601 |
| +#endif |
| + |
| +#if _WIN32_WINNT >= _WIN32_WINNT_WIN8 |
| // see Include/shared/winapifamily.h in the Windows Kit |
| #if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API))) |
| #if WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY, WINAPI_PARTITION_APP) |
| #define IOWIN32_USING_WINRT_API 1 |
| #endif |
| #endif |
| +#endif |
| |
| voidpf ZCALLBACK win32_open_file_func OF((voidpf opaque, const char* filename, int mode)); |
| uLong ZCALLBACK win32_read_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size)); |
| diff --git a/contrib/minizip/mztools.c b/contrib/minizip/mztools.c |
| index 96891c2e0b71..8bf9cca32633 100644 |
| --- a/contrib/minizip/mztools.c |
| +++ b/contrib/minizip/mztools.c |
| @@ -8,7 +8,7 @@ |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| -#include "zlib.h" |
| +#include "third_party/zlib/zlib.h" |
| #include "unzip.h" |
| |
| #define READ_8(adr) ((unsigned char)*(adr)) |
| diff --git a/contrib/minizip/mztools.h b/contrib/minizip/mztools.h |
| index a49a426ec2fc..f295ffeda6af 100644 |
| --- a/contrib/minizip/mztools.h |
| +++ b/contrib/minizip/mztools.h |
| @@ -12,7 +12,7 @@ extern "C" { |
| #endif |
| |
| #ifndef _ZLIB_H |
| -#include "zlib.h" |
| +#include "third_party/zlib/zlib.h" |
| #endif |
| |
| #include "unzip.h" |
| diff --git a/contrib/minizip/unzip.c b/contrib/minizip/unzip.c |
| index bcfb9416ec35..199b4723fcfc 100644 |
| --- a/contrib/minizip/unzip.c |
| +++ b/contrib/minizip/unzip.c |
| @@ -72,7 +72,7 @@ |
| #define NOUNCRYPT |
| #endif |
| |
| -#include "zlib.h" |
| +#include "third_party/zlib/zlib.h" |
| #include "unzip.h" |
| |
| #ifdef STDC |
| @@ -1705,11 +1705,6 @@ extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len) |
| |
| pfile_in_zip_read_info->stream.avail_out = (uInt)len; |
| |
| - if ((len>pfile_in_zip_read_info->rest_read_uncompressed) && |
| - (!(pfile_in_zip_read_info->raw))) |
| - pfile_in_zip_read_info->stream.avail_out = |
| - (uInt)pfile_in_zip_read_info->rest_read_uncompressed; |
| - |
| if ((len>pfile_in_zip_read_info->rest_read_compressed+ |
| pfile_in_zip_read_info->stream.avail_in) && |
| (pfile_in_zip_read_info->raw)) |
| diff --git a/contrib/minizip/unzip.h b/contrib/minizip/unzip.h |
| index 2104e3915074..3c0143529b91 100644 |
| --- a/contrib/minizip/unzip.h |
| +++ b/contrib/minizip/unzip.h |
| @@ -48,7 +48,7 @@ extern "C" { |
| #endif |
| |
| #ifndef _ZLIB_H |
| -#include "zlib.h" |
| +#include "third_party/zlib/zlib.h" |
| #endif |
| |
| #ifndef _ZLIBIOAPI_H |
| diff --git a/contrib/minizip/zip.c b/contrib/minizip/zip.c |
| index 44e88a9cb989..65c0c7251843 100644 |
| --- a/contrib/minizip/zip.c |
| +++ b/contrib/minizip/zip.c |
| @@ -26,7 +26,7 @@ |
| #include <stdlib.h> |
| #include <string.h> |
| #include <time.h> |
| -#include "zlib.h" |
| +#include "third_party/zlib/zlib.h" |
| #include "zip.h" |
| |
| #ifdef STDC |
| diff --git a/contrib/minizip/zip.h b/contrib/minizip/zip.h |
| index 8aaebb623430..8c06c0aa7bb0 100644 |
| --- a/contrib/minizip/zip.h |
| +++ b/contrib/minizip/zip.h |
| @@ -47,7 +47,7 @@ extern "C" { |
| //#define HAVE_BZIP2 |
| |
| #ifndef _ZLIB_H |
| -#include "zlib.h" |
| +#include "third_party/zlib/zlib.h" |
| #endif |
| |
| #ifndef _ZLIBIOAPI_H |
| diff --git a/gzread.c b/gzread.c |
| index 956b91ea7d9e..832d3ef98c59 100644 |
| --- a/gzread.c |
| +++ b/gzread.c |
| @@ -443,7 +443,11 @@ z_size_t ZEXPORT gzfread(buf, size, nitems, file) |
| # undef z_gzgetc |
| #else |
| # undef gzgetc |
| +# ifdef Z_CR_PREFIX_SET |
| +# define gzgetc Cr_z_gzgetc |
| +# endif |
| #endif |
| + |
| int ZEXPORT gzgetc(file) |
| gzFile file; |
| { |
| diff --git a/names.h b/names.h |
| new file mode 100644 |
| index 000000000000..f18df5684dc5 |
| --- /dev/null |
| +++ b/names.h |
| @@ -0,0 +1,155 @@ |
| +/* Copyright 2017 The Chromium Authors. All rights reserved. |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. */ |
| + |
| +#ifndef THIRD_PARTY_ZLIB_NAMES_H_ |
| +#define THIRD_PARTY_ZLIB_NAMES_H_ |
| + |
| +/* Rename all zlib names with a Cr_z_ prefix. This is based on the Z_PREFIX |
| + * option from zconf.h, but with a custom prefix. Where zconf.h would rename |
| + * both a macro and its underscore-suffixed internal implementation (such as |
| + * deflateInit2 and deflateInit2_), only the implementation is renamed here. |
| + * The Byte type is also omitted. |
| + * |
| + * To generate this list, run |
| + * sed -rn -e 's/^# *define +([^ ]+) +(z_[^ ]+)$/#define \1 Cr_\2/p' zconf.h |
| + * (use -E instead of -r on macOS). |
| + * |
| + * gzread is also addressed by modifications in gzread.c and zlib.h. */ |
| + |
| +#define Z_CR_PREFIX_SET |
| + |
| +#define _dist_code Cr_z__dist_code |
| +#define _length_code Cr_z__length_code |
| +#define _tr_align Cr_z__tr_align |
| +#define _tr_flush_bits Cr_z__tr_flush_bits |
| +#define _tr_flush_block Cr_z__tr_flush_block |
| +#define _tr_init Cr_z__tr_init |
| +#define _tr_stored_block Cr_z__tr_stored_block |
| +#define _tr_tally Cr_z__tr_tally |
| +#define adler32 Cr_z_adler32 |
| +#define adler32_combine Cr_z_adler32_combine |
| +#define adler32_combine64 Cr_z_adler32_combine64 |
| +#define adler32_z Cr_z_adler32_z |
| +#define compress Cr_z_compress |
| +#define compress2 Cr_z_compress2 |
| +#define compressBound Cr_z_compressBound |
| +#define crc32 Cr_z_crc32 |
| +#define crc32_combine Cr_z_crc32_combine |
| +#define crc32_combine64 Cr_z_crc32_combine64 |
| +#define crc32_z Cr_z_crc32_z |
| +#define deflate Cr_z_deflate |
| +#define deflateBound Cr_z_deflateBound |
| +#define deflateCopy Cr_z_deflateCopy |
| +#define deflateEnd Cr_z_deflateEnd |
| +#define deflateGetDictionary Cr_z_deflateGetDictionary |
| +/* #undef deflateInit */ |
| +/* #undef deflateInit2 */ |
| +#define deflateInit2_ Cr_z_deflateInit2_ |
| +#define deflateInit_ Cr_z_deflateInit_ |
| +#define deflateParams Cr_z_deflateParams |
| +#define deflatePending Cr_z_deflatePending |
| +#define deflatePrime Cr_z_deflatePrime |
| +#define deflateReset Cr_z_deflateReset |
| +#define deflateResetKeep Cr_z_deflateResetKeep |
| +#define deflateSetDictionary Cr_z_deflateSetDictionary |
| +#define deflateSetHeader Cr_z_deflateSetHeader |
| +#define deflateTune Cr_z_deflateTune |
| +#define deflate_copyright Cr_z_deflate_copyright |
| +#define get_crc_table Cr_z_get_crc_table |
| +#define gz_error Cr_z_gz_error |
| +#define gz_intmax Cr_z_gz_intmax |
| +#define gz_strwinerror Cr_z_gz_strwinerror |
| +#define gzbuffer Cr_z_gzbuffer |
| +#define gzclearerr Cr_z_gzclearerr |
| +#define gzclose Cr_z_gzclose |
| +#define gzclose_r Cr_z_gzclose_r |
| +#define gzclose_w Cr_z_gzclose_w |
| +#define gzdirect Cr_z_gzdirect |
| +#define gzdopen Cr_z_gzdopen |
| +#define gzeof Cr_z_gzeof |
| +#define gzerror Cr_z_gzerror |
| +#define gzflush Cr_z_gzflush |
| +#define gzfread Cr_z_gzfread |
| +#define gzfwrite Cr_z_gzfwrite |
| +#define gzgetc Cr_z_gzgetc |
| +#define gzgetc_ Cr_z_gzgetc_ |
| +#define gzgets Cr_z_gzgets |
| +#define gzoffset Cr_z_gzoffset |
| +#define gzoffset64 Cr_z_gzoffset64 |
| +#define gzopen Cr_z_gzopen |
| +#define gzopen64 Cr_z_gzopen64 |
| +#define gzopen_w Cr_z_gzopen_w |
| +#define gzprintf Cr_z_gzprintf |
| +#define gzputc Cr_z_gzputc |
| +#define gzputs Cr_z_gzputs |
| +#define gzread Cr_z_gzread |
| +#define gzrewind Cr_z_gzrewind |
| +#define gzseek Cr_z_gzseek |
| +#define gzseek64 Cr_z_gzseek64 |
| +#define gzsetparams Cr_z_gzsetparams |
| +#define gztell Cr_z_gztell |
| +#define gztell64 Cr_z_gztell64 |
| +#define gzungetc Cr_z_gzungetc |
| +#define gzvprintf Cr_z_gzvprintf |
| +#define gzwrite Cr_z_gzwrite |
| +#define inflate Cr_z_inflate |
| +#define inflateBack Cr_z_inflateBack |
| +#define inflateBackEnd Cr_z_inflateBackEnd |
| +/* #undef inflateBackInit */ |
| +#define inflateBackInit_ Cr_z_inflateBackInit_ |
| +#define inflateCodesUsed Cr_z_inflateCodesUsed |
| +#define inflateCopy Cr_z_inflateCopy |
| +#define inflateEnd Cr_z_inflateEnd |
| +#define inflateGetDictionary Cr_z_inflateGetDictionary |
| +#define inflateGetHeader Cr_z_inflateGetHeader |
| +/* #undef inflateInit */ |
| +/* #undef inflateInit2 */ |
| +#define inflateInit2_ Cr_z_inflateInit2_ |
| +#define inflateInit_ Cr_z_inflateInit_ |
| +#define inflateMark Cr_z_inflateMark |
| +#define inflatePrime Cr_z_inflatePrime |
| +#define inflateReset Cr_z_inflateReset |
| +#define inflateReset2 Cr_z_inflateReset2 |
| +#define inflateResetKeep Cr_z_inflateResetKeep |
| +#define inflateSetDictionary Cr_z_inflateSetDictionary |
| +#define inflateSync Cr_z_inflateSync |
| +#define inflateSyncPoint Cr_z_inflateSyncPoint |
| +#define inflateUndermine Cr_z_inflateUndermine |
| +#define inflateValidate Cr_z_inflateValidate |
| +#define inflate_copyright Cr_z_inflate_copyright |
| +#define inflate_fast Cr_z_inflate_fast |
| +#define inflate_table Cr_z_inflate_table |
| +#define uncompress Cr_z_uncompress |
| +#define uncompress2 Cr_z_uncompress2 |
| +#define zError Cr_z_zError |
| +#define zcalloc Cr_z_zcalloc |
| +#define zcfree Cr_z_zcfree |
| +#define zlibCompileFlags Cr_z_zlibCompileFlags |
| +#define zlibVersion Cr_z_zlibVersion |
| +/* #undef Byte */ |
| +#define Bytef Cr_z_Bytef |
| +#define alloc_func Cr_z_alloc_func |
| +#define charf Cr_z_charf |
| +#define free_func Cr_z_free_func |
| +#define gzFile Cr_z_gzFile |
| +#define gz_header Cr_z_gz_header |
| +#define gz_headerp Cr_z_gz_headerp |
| +#define in_func Cr_z_in_func |
| +#define intf Cr_z_intf |
| +#define out_func Cr_z_out_func |
| +#define uInt Cr_z_uInt |
| +#define uIntf Cr_z_uIntf |
| +#define uLong Cr_z_uLong |
| +#define uLongf Cr_z_uLongf |
| +#define voidp Cr_z_voidp |
| +#define voidpc Cr_z_voidpc |
| +#define voidpf Cr_z_voidpf |
| +#define gz_header_s Cr_z_gz_header_s |
| +#define internal_state Cr_z_internal_state |
| +/* #undef z_off64_t */ |
| + |
| +/* An exported symbol that isn't handled by Z_PREFIX in zconf.h */ |
| +#define z_errmsg Cr_z_z_errmsg |
| + |
| +#endif /* THIRD_PARTY_ZLIB_NAMES_H_ */ |
| diff --git a/zconf.h b/zconf.h |
| index 5e1d68a004e9..a7a815f575a7 100644 |
| --- a/zconf.h |
| +++ b/zconf.h |
| @@ -8,6 +8,9 @@ |
| #ifndef ZCONF_H |
| #define ZCONF_H |
| |
| +/* This include does prefixing as below, but with an updated set of names */ |
| +#include "names.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. |
| @@ -431,7 +434,7 @@ typedef uLong FAR uLongf; |
| typedef unsigned long z_crc_t; |
| #endif |
| |
| -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ |
| +#if !defined(_WIN32) |
| # define Z_HAVE_UNISTD_H |
| #endif |
| |
| diff --git a/zlib.h b/zlib.h |
| index f09cdaf1e054..99fd467f6b1a 100644 |
| --- a/zlib.h |
| +++ b/zlib.h |
| @@ -1824,6 +1824,11 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ |
| # undef z_gzgetc |
| # define z_gzgetc(g) \ |
| ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) |
| +#elif defined(Z_CR_PREFIX_SET) |
| +# undef gzgetc |
| +# define gzgetc(g) \ |
| + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) \ |
| + : (Cr_z_gzgetc)(g)) |
| #else |
| # define gzgetc(g) \ |
| ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) |
| @@ -1853,11 +1858,29 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ |
| # define z_adler32_combine z_adler32_combine64 |
| # define z_crc32_combine z_crc32_combine64 |
| # else |
| +# ifdef gzopen |
| +# undef gzopen |
| +# endif |
| # define gzopen gzopen64 |
| +# ifdef gzseek |
| +# undef gzseek |
| +# endif |
| # define gzseek gzseek64 |
| +# ifdef gztell |
| +# undef gztell |
| +# endif |
| # define gztell gztell64 |
| +# ifdef gzoffset |
| +# undef gzoffset |
| +# endif |
| # define gzoffset gzoffset64 |
| +# ifdef adler32_combine |
| +# undef adler32_combine |
| +# endif |
| # define adler32_combine adler32_combine64 |
| +# ifdef crc32_combine |
| +# undef crc32_combine |
| +# endif |
| # define crc32_combine crc32_combine64 |
| # endif |
| # ifndef Z_LARGE64 |
| diff --git a/zutil.h b/zutil.h |
| index b079ea6a80f5..80375b8b6109 100644 |
| --- a/zutil.h |
| +++ b/zutil.h |
| @@ -28,6 +28,21 @@ |
| # include <string.h> |
| # include <stdlib.h> |
| #endif |
| +#ifdef NO_ERRNO_H |
| +# ifdef _WIN32_WCE |
| + /* The Microsoft C Run-Time Library for Windows CE doesn't have |
| + * errno. We define it as a global variable to simplify porting. |
| + * Its value is always 0 and should not be used. We rename it to |
| + * avoid conflict with other libraries that use the same workaround. |
| + */ |
| +# define errno z_errno |
| +# endif |
| + extern int errno; |
| +#else |
| +# ifndef _WIN32_WCE |
| +# include <errno.h> |
| +# endif |
| +#endif |
| |
| #ifdef Z_SOLO |
| typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */ |