Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
19ce8c7f
Commit
19ce8c7f
authored
Feb 22, 2012
by
Andrey Kamaev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#1609 zlib is updated to 1.2.6
parent
b8eeb019
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
1061 additions
and
682 deletions
+1061
-682
.cvsignore
3rdparty/zlib/.cvsignore
+0
-1
CMakeLists.txt
3rdparty/zlib/CMakeLists.txt
+74
-12
README
3rdparty/zlib/README
+12
-12
adler32.c
3rdparty/zlib/adler32.c
+39
-29
crc32.c
3rdparty/zlib/crc32.c
+18
-13
crc32.h
3rdparty/zlib/crc32.h
+1
-1
deflate.c
3rdparty/zlib/deflate.c
+194
-63
deflate.h
3rdparty/zlib/deflate.h
+7
-3
gzguts.h
3rdparty/zlib/gzguts.h
+68
-14
gzlib.c
3rdparty/zlib/gzlib.c
+52
-25
gzread.c
3rdparty/zlib/gzread.c
+157
-226
gzwrite.c
3rdparty/zlib/gzwrite.c
+91
-29
infback.c
3rdparty/zlib/infback.c
+11
-3
inffixed.h
3rdparty/zlib/inffixed.h
+3
-3
inflate.c
3rdparty/zlib/inflate.c
+46
-25
inftrees.c
3rdparty/zlib/inftrees.c
+8
-32
trees.c
3rdparty/zlib/trees.c
+10
-30
zconf.h.cmakein
3rdparty/zlib/zconf.h.cmakein
+51
-11
zlib.h
3rdparty/zlib/zlib.h
+193
-74
zutil.c
3rdparty/zlib/zutil.c
+8
-25
zutil.h
3rdparty/zlib/zutil.h
+18
-51
No files found.
3rdparty/zlib/.cvsignore
deleted
100644 → 0
View file @
b8eeb019
*.aps *.plg *.o *.lo Makefile .libs *.user
3rdparty/zlib/CMakeLists.txt
View file @
19ce8c7f
...
...
@@ -2,31 +2,94 @@
# CMake file for zlib. See root CMakeLists.txt
#
# ----------------------------------------------------------------------------
PROJECT
(
zlib
)
# List of C++ files:
project
(
zlib C
)
include_directories
(
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
)
include
(
CheckTypeSize
)
include
(
CheckFunctionExists
)
include
(
CheckIncludeFile
)
include
(
CheckCSourceCompiles
)
file
(
GLOB lib_srcs *.c
)
file
(
GLOB lib_hdrs *.h
)
include
(
CheckTypeSize
)
include
(
CheckFunctionExists
)
include
(
CheckIncludeFile
)
include
(
CheckCSourceCompiles
)
set
(
the_target
"zlib"
)
#
# Check to see if we have large file support
#
check_type_size
(
off64_t OFF64_T
)
if
(
HAVE_OFF64_T
)
add_definitions
(
-D_LARGEFILE64_SOURCE=1
)
endif
()
add_library
(
${
the_target
}
STATIC
${
lib_srcs
}
${
lib_hdrs
}
)
#
# Check for fseeko
#
check_function_exists
(
fseeko HAVE_FSEEKO
)
if
(
NOT HAVE_FSEEKO
)
add_definitions
(
-DNO_FSEEKO
)
endif
()
#
# Check for unistd.h
#
check_include_file
(
unistd.h Z_HAVE_UNISTD_H
)
if
(
MSVC
)
set
(
CMAKE_C_FLAGS
"
${
CMAKE_C_FLAGS
}
/W3"
)
add_definitions
(
-D_CRT_SECURE_NO_DEPRECATE
)
add_definitions
(
-D_CRT_NONSTDC_NO_DEPRECATE
)
endif
()
configure_file
(
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/zconf.h.cmakein"
"
${
OpenCV_BINARY_DIR
}
/zconf.h"
@ONLY
)
include_directories
(
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
)
set
(
ZLIB_PUBLIC_HDRS
"
${
OpenCV_BINARY_DIR
}
/zconf.h"
zlib.h
)
set
(
ZLIB_PRIVATE_HDRS
crc32.h
deflate.h
gzguts.h
inffast.h
inffixed.h
inflate.h
inftrees.h
trees.h
zutil.h
)
set
(
ZLIB_SRCS
adler32.c
compress.c
crc32.c
deflate.c
gzclose.c
gzlib.c
gzread.c
gzwrite.c
inflate.c
infback.c
inftrees.c
inffast.c
trees.c
uncompr.c
zutil.c
)
set
(
the_target
"zlib"
)
add_library
(
${
the_target
}
STATIC
${
ZLIB_SRCS
}
${
ZLIB_PUBLIC_HDRS
}
${
ZLIB_PRIVATE_HDRS
}
)
set_target_properties
(
${
the_target
}
PROPERTIES DEFINE_SYMBOL ZLIB_DLL
)
if
(
UNIX
)
if
(
CMAKE_COMPILER_IS_GNUCXX OR CV_ICC
)
set
(
CMAKE_C_FLAGS
"
${
CMAKE_C_FLAGS
}
-fPIC"
)
endif
()
endif
()
set_target_properties
(
${
the_target
}
PROPERTIES
set_target_properties
(
${
the_target
}
PROPERTIES
OUTPUT_NAME
"
${
the_target
}
"
DEBUG_POSTFIX
"
${
OPENCV_DEBUG_POSTFIX
}
"
ARCHIVE_OUTPUT_DIRECTORY
"
${
CMAKE_BINARY_DIR
}
/3rdparty/
${
OPENCV_LIB_INSTALL_PATH
}
"
...
...
@@ -37,6 +100,5 @@ if(ENABLE_SOLUTION_FOLDERS)
endif
()
if
(
NOT BUILD_SHARED_LIBS
)
install
(
TARGETS
${
the_target
}
ARCHIVE DESTINATION share/OpenCV/3rdparty/
${
OPENCV_LIB_INSTALL_PATH
}
COMPONENT main
)
install
(
TARGETS
${
the_target
}
ARCHIVE DESTINATION share/OpenCV/3rdparty/
${
OPENCV_LIB_INSTALL_PATH
}
COMPONENT main
)
endif
()
3rdparty/zlib/README
View file @
19ce8c7f
ZLIB DATA COMPRESSION LIBRARY
zlib 1.2.
5
is a general purpose data compression library. All the code is
zlib 1.2.
6
is a general purpose data compression library. All the code is
thread safe. The data format used by the zlib library is described by RFCs
(Request for Comments) 1950 to 1952 in the files
http://
www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
and rfc1952.txt
(gzip format).
http://
tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
rfc1952
(gzip format).
All functions of the compression library are documented in the file zlib.h
(volunteer to write man pages welcome, contact zlib@gzip.org). A usage example
of the library is given in the file
example.c which also tests that the library
is working correctly. Another example is given in the file minigzip.c. Th
e
compression library itself is composed of all source files except example.c and
minigzip.c
.
of the library is given in the file
test/example.c which also tests that
the library is working correctly. Another example is given in the fil
e
test/minigzip.c. The compression library itself is composed of all source
files in the root directory
.
To compile all files and run the test program, follow the instructions given at
the top of Makefile.in. In short "./configure; make test", and if that goes
well, "make install" should work for most flavors of Unix. For Windows, use
one
of the special makefiles in win32/ or contrib/vstudio/ . For VMS, use
well, "make install" should work for most flavors of Unix. For Windows, use
o
ne o
f the special makefiles in win32/ or contrib/vstudio/ . For VMS, use
make_vms.com.
Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant
...
...
@@ -31,7 +31,7 @@ Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
issue of Dr. Dobb's Journal; a copy of the article is available at
http://marknelson.us/1997/01/01/zlib-engine/ .
The changes made in version 1.2.
5
are documented in the file ChangeLog.
The changes made in version 1.2.
6
are documented in the file ChangeLog.
Unsupported third party contributions are provided in directory contrib/ .
...
...
@@ -44,7 +44,7 @@ http://search.cpan.org/~pmqs/IO-Compress-Zlib/ .
A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is
available in Python 1.5 and later versions, see
http://
www.python.org/doc/lib/module-
zlib.html .
http://
docs.python.org/library/
zlib.html .
zlib is built into tcl: http://wiki.tcl.tk/4610 .
...
...
@@ -84,7 +84,7 @@ Acknowledgments:
Copyright notice:
(C) 1995-201
0
Jean-loup Gailly and Mark Adler
(C) 1995-201
2
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
...
...
3rdparty/zlib/adler32.c
View file @
19ce8c7f
/* adler32.c -- compute the Adler-32 checksum of a data stream
* Copyright (C) 1995-20
07
Mark Adler
* Copyright (C) 1995-20
11
Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -9,9 +9,9 @@
#define local static
local
uLong
adler32_combine_
(
uLong
adler1
,
uLong
adler2
,
z_off64_t
len2
);
local
uLong
adler32_combine_
OF
((
uLong
adler1
,
uLong
adler2
,
z_off64_t
len2
)
);
#define BASE 65521
UL
/* largest prime smaller than 65536 */
#define BASE 65521
/* largest prime smaller than 65536 */
#define NMAX 5552
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
...
...
@@ -21,39 +21,44 @@ local uLong adler32_combine_(uLong adler1, uLong adler2, z_off64_t len2);
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
#define DO16(buf) DO8(buf,0); DO8(buf,8);
/* use NO_DIVIDE if your processor does not do division in hardware */
/* use NO_DIVIDE if your processor does not do division in hardware --
try it both ways to see which is faster */
#ifdef NO_DIVIDE
# define MOD(a) \
/* note that this assumes BASE is 65521, where 65536 % 65521 == 15
(thank you to John Reiser for pointing this out) */
# define CHOP(a) \
do { \
unsigned long tmp = a >> 16; \
a &= 0xffffUL; \
a += (tmp << 4) - tmp; \
} while (0)
# define MOD28(a) \
do { \
if (a >= (BASE << 16)) a -= (BASE << 16); \
if (a >= (BASE << 15)) a -= (BASE << 15); \
if (a >= (BASE << 14)) a -= (BASE << 14); \
if (a >= (BASE << 13)) a -= (BASE << 13); \
if (a >= (BASE << 12)) a -= (BASE << 12); \
if (a >= (BASE << 11)) a -= (BASE << 11); \
if (a >= (BASE << 10)) a -= (BASE << 10); \
if (a >= (BASE << 9)) a -= (BASE << 9); \
if (a >= (BASE << 8)) a -= (BASE << 8); \
if (a >= (BASE << 7)) a -= (BASE << 7); \
if (a >= (BASE << 6)) a -= (BASE << 6); \
if (a >= (BASE << 5)) a -= (BASE << 5); \
if (a >= (BASE << 4)) a -= (BASE << 4); \
if (a >= (BASE << 3)) a -= (BASE << 3); \
if (a >= (BASE << 2)) a -= (BASE << 2); \
if (a >= (BASE << 1)) a -= (BASE << 1); \
CHOP(a); \
if (a >= BASE) a -= BASE; \
} while (0)
# define MOD
4
(a) \
# define MOD(a) \
do { \
if (a >= (BASE << 4)) a -= (BASE << 4); \
if (a >= (BASE << 3)) a -= (BASE << 3); \
if (a >= (BASE << 2)) a -= (BASE << 2); \
if (a >= (BASE << 1)) a -= (BASE << 1); \
CHOP(a); \
MOD28(a); \
} while (0)
# define MOD63(a) \
do {
/* this assumes a is not negative */
\
z_off64_t tmp = a >> 32; \
a &= 0xffffffffL; \
a += (tmp << 8) - (tmp << 5) + tmp; \
tmp = a >> 16; \
a &= 0xffffL; \
a += (tmp << 4) - tmp; \
tmp = a >> 16; \
a &= 0xffffL; \
a += (tmp << 4) - tmp; \
if (a >= BASE) a -= BASE; \
} while (0)
#else
# define MOD(a) a %= BASE
# define MOD4(a) a %= BASE
# define MOD28(a) a %= BASE
# define MOD63(a) a %= BASE
#endif
/* ========================================================================= */
...
...
@@ -92,7 +97,7 @@ uLong ZEXPORT adler32(adler, buf, len)
}
if
(
adler
>=
BASE
)
adler
-=
BASE
;
MOD
4
(
sum2
);
/* only added so many BASE's */
MOD
28
(
sum2
);
/* only added so many BASE's */
return
adler
|
(
sum2
<<
16
);
}
...
...
@@ -137,8 +142,13 @@ local uLong adler32_combine_(adler1, adler2, len2)
unsigned
long
sum2
;
unsigned
rem
;
/* for negative len, return invalid adler32 as a clue for debugging */
if
(
len2
<
0
)
return
0xffffffffUL
;
/* the derivation of this formula is left as an exercise for the reader */
rem
=
(
unsigned
)(
len2
%
BASE
);
MOD63
(
len2
);
/* assumes len2 >= 0 */
rem
=
(
unsigned
)
len2
;
sum1
=
adler1
&
0xffff
;
sum2
=
rem
*
sum1
;
MOD
(
sum2
);
...
...
3rdparty/zlib/crc32.c
View file @
19ce8c7f
/* crc32.c -- compute the CRC-32 of a data stream
* Copyright (C) 1995-2006, 2010 Mark Adler
* Copyright (C) 1995-2006, 2010
, 2011
Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*
* Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
...
...
@@ -17,6 +17,8 @@
of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
first call get_crc_table() to initialize the tables before allowing more than
one thread to use crc32().
DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h.
*/
#ifdef MAKECRCH
...
...
@@ -53,6 +55,7 @@
/* Definitions for doing the crc four data bytes at a time. */
#ifdef BYFOUR
typedef
u4
crc_table_t
;
# define REV(w) ((((w)>>24)&0xff)+(((w)>>8)&0xff00)+ \
(((w)&0xff00)<<8)+(((w)&0xff)<<24))
local
unsigned
long
crc32_little
OF
((
unsigned
long
,
...
...
@@ -61,6 +64,7 @@
const
unsigned
char
FAR
*
,
unsigned
));
# define TBLS 8
#else
typedef
unsigned
long
crc_table_t
;
# define TBLS 1
#endif
/* BYFOUR */
...
...
@@ -68,16 +72,16 @@
local
unsigned
long
gf2_matrix_times
OF
((
unsigned
long
*
mat
,
unsigned
long
vec
));
local
void
gf2_matrix_square
OF
((
unsigned
long
*
square
,
unsigned
long
*
mat
));
local
uLong
crc32_combine_
(
uLong
crc1
,
uLong
crc2
,
z_off64_t
len2
);
local
uLong
crc32_combine_
OF
((
uLong
crc1
,
uLong
crc2
,
z_off64_t
len2
)
);
#ifdef DYNAMIC_CRC_TABLE
local
volatile
int
crc_table_empty
=
1
;
local
unsigned
long
FAR
crc_table
[
TBLS
][
256
];
local
crc_table_t
FAR
crc_table
[
TBLS
][
256
];
local
void
make_crc_table
OF
((
void
));
#ifdef MAKECRCH
local
void
write_table
OF
((
FILE
*
,
const
unsigned
long
FAR
*
));
local
void
write_table
OF
((
FILE
*
,
const
crc_table_t
FAR
*
));
#endif
/* MAKECRCH */
/*
Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
...
...
@@ -107,9 +111,9 @@ local void make_crc_table OF((void));
*/
local
void
make_crc_table
()
{
unsigned
long
c
;
crc_table_t
c
;
int
n
,
k
;
unsigned
long
poly
;
/* polynomial exclusive-or pattern */
crc_table_t
poly
;
/* polynomial exclusive-or pattern */
/* terms of polynomial defining this crc (except x^32): */
static
volatile
int
first
=
1
;
/* flag to limit concurrent making */
static
const
unsigned
char
p
[]
=
{
0
,
1
,
2
,
4
,
5
,
7
,
8
,
10
,
11
,
12
,
16
,
22
,
23
,
26
};
...
...
@@ -121,13 +125,13 @@ local void make_crc_table()
first
=
0
;
/* make exclusive-or pattern from polynomial (0xedb88320UL) */
poly
=
0
UL
;
for
(
n
=
0
;
n
<
sizeof
(
p
)
/
sizeof
(
unsigned
char
);
n
++
)
poly
|=
1UL
<<
(
31
-
p
[
n
]);
poly
=
0
;
for
(
n
=
0
;
n
<
(
int
)(
sizeof
(
p
)
/
sizeof
(
unsigned
char
)
);
n
++
)
poly
|=
(
crc_table_t
)
1
<<
(
31
-
p
[
n
]);
/* generate a crc for every 8-bit value */
for
(
n
=
0
;
n
<
256
;
n
++
)
{
c
=
(
unsigned
long
)
n
;
c
=
(
crc_table_t
)
n
;
for
(
k
=
0
;
k
<
8
;
k
++
)
c
=
c
&
1
?
poly
^
(
c
>>
1
)
:
c
>>
1
;
crc_table
[
0
][
n
]
=
c
;
...
...
@@ -164,7 +168,7 @@ local void make_crc_table()
if
(
out
==
NULL
)
return
;
fprintf
(
out
,
"/* crc32.h -- tables for rapid CRC calculation
\n
"
);
fprintf
(
out
,
" * Generated automatically by crc32.c
\n
*/
\n\n
"
);
fprintf
(
out
,
"local const
unsigned long
FAR "
);
fprintf
(
out
,
"local const
crc_table_t
FAR "
);
fprintf
(
out
,
"crc_table[TBLS][256] =
\n
{
\n
{
\n
"
);
write_table
(
out
,
crc_table
[
0
]);
# ifdef BYFOUR
...
...
@@ -184,12 +188,13 @@ local void make_crc_table()
#ifdef MAKECRCH
local
void
write_table
(
out
,
table
)
FILE
*
out
;
const
unsigned
long
FAR
*
table
;
const
crc_table_t
FAR
*
table
;
{
int
n
;
for
(
n
=
0
;
n
<
256
;
n
++
)
fprintf
(
out
,
"%s0x%08lxUL%s"
,
n
%
5
?
""
:
" "
,
table
[
n
],
fprintf
(
out
,
"%s0x%08lxUL%s"
,
n
%
5
?
""
:
" "
,
(
unsigned
long
)(
table
[
n
]),
n
==
255
?
"
\n
"
:
(
n
%
5
==
4
?
",
\n
"
:
", "
));
}
#endif
/* MAKECRCH */
...
...
3rdparty/zlib/crc32.h
View file @
19ce8c7f
...
...
@@ -2,7 +2,7 @@
* Generated automatically by crc32.c
*/
local
const
unsigned
long
FAR
crc_table
[
TBLS
][
256
]
=
local
const
crc_table_t
FAR
crc_table
[
TBLS
][
256
]
=
{
{
0x00000000UL
,
0x77073096UL
,
0xee0e612cUL
,
0x990951baUL
,
0x076dc419UL
,
...
...
3rdparty/zlib/deflate.c
View file @
19ce8c7f
/* deflate.c -- compress data using the deflation algorithm
* Copyright (C) 1995-201
0
Jean-loup Gailly and Mark Adler
* Copyright (C) 1995-201
2
Jean-loup Gailly and Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -37,7 +37,7 @@
* REFERENCES
*
* Deutsch, L.P.,"DEFLATE Compressed Data Format Specification".
* Available in http://
www.ietf.org/rfc/rfc1951.txt
* Available in http://
tools.ietf.org/html/rfc1951
*
* A description of the Rabin and Karp algorithm is given in the book
* "Algorithms" by R. Sedgewick, Addison-Wesley, p252.
...
...
@@ -52,7 +52,7 @@
#include "deflate.h"
const
char
deflate_copyright
[]
=
" deflate 1.2.
5 Copyright 1995-2010
Jean-loup Gailly and Mark Adler "
;
" deflate 1.2.
6 Copyright 1995-2012
Jean-loup Gailly and Mark Adler "
;
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
...
...
@@ -155,6 +155,9 @@ local const config configuration_table[10] = {
struct
static_tree_desc_s
{
int
dummy
;};
/* for buggy compilers */
#endif
/* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */
#define RANK(f) (((f) << 1) - ((f) > 4 ? 9 : 0))
/* ===========================================================================
* Update a hash value with the given input byte
* IN assertion: all calls to to UPDATE_HASH are made with consecutive
...
...
@@ -235,10 +238,19 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
strm
->
msg
=
Z_NULL
;
if
(
strm
->
zalloc
==
(
alloc_func
)
0
)
{
#ifdef Z_SOLO
return
Z_STREAM_ERROR
;
#else
strm
->
zalloc
=
zcalloc
;
strm
->
opaque
=
(
voidpf
)
0
;
#endif
}
if
(
strm
->
zfree
==
(
free_func
)
0
)
strm
->
zfree
=
zcfree
;
if
(
strm
->
zfree
==
(
free_func
)
0
)
#ifdef Z_SOLO
return
Z_STREAM_ERROR
;
#else
strm
->
zfree
=
zcfree
;
#endif
#ifdef FASTEST
if
(
level
!=
0
)
level
=
1
;
...
...
@@ -314,43 +326,70 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
uInt
dictLength
;
{
deflate_state
*
s
;
uInt
length
=
dictLength
;
uInt
n
;
IPos
hash_head
=
0
;
uInt
str
,
n
;
int
wrap
;
unsigned
avail
;
unsigned
char
*
next
;
if
(
strm
==
Z_NULL
||
strm
->
state
==
Z_NULL
||
dictionary
==
Z_NULL
||
strm
->
state
->
wrap
==
2
||
(
strm
->
state
->
wrap
==
1
&&
strm
->
state
->
status
!=
INIT_STATE
))
if
(
strm
==
Z_NULL
||
strm
->
state
==
Z_NULL
||
dictionary
==
Z_NULL
)
return
Z_STREAM_ERROR
;
s
=
strm
->
state
;
if
(
s
->
wrap
)
wrap
=
s
->
wrap
;
if
(
wrap
==
2
||
(
wrap
==
1
&&
s
->
status
!=
INIT_STATE
)
||
s
->
lookahead
)
return
Z_STREAM_ERROR
;
/* when using zlib wrappers, compute Adler-32 for provided dictionary */
if
(
wrap
==
1
)
strm
->
adler
=
adler32
(
strm
->
adler
,
dictionary
,
dictLength
);
s
->
wrap
=
0
;
/* avoid computing Adler-32 in read_buf */
if
(
length
<
MIN_MATCH
)
return
Z_OK
;
if
(
length
>
s
->
w_size
)
{
length
=
s
->
w_size
;
dictionary
+=
dictLength
-
length
;
/* use the tail of the dictionary */
/* if dictionary would fill window, just replace the history */
if
(
dictLength
>=
s
->
w_size
)
{
if
(
wrap
==
0
)
{
/* already empty otherwise */
CLEAR_HASH
(
s
);
s
->
strstart
=
0
;
s
->
block_start
=
0L
;
s
->
insert
=
0
;
}
dictionary
+=
dictLength
-
s
->
w_size
;
/* use the tail */
dictLength
=
s
->
w_size
;
}
zmemcpy
(
s
->
window
,
dictionary
,
length
);
s
->
strstart
=
length
;
s
->
block_start
=
(
long
)
length
;
/* Insert all strings in the hash table (except for the last two bytes).
* s->lookahead stays null, so s->ins_h will be recomputed at the next
* call of fill_window.
*/
s
->
ins_h
=
s
->
window
[
0
];
UPDATE_HASH
(
s
,
s
->
ins_h
,
s
->
window
[
1
]);
for
(
n
=
0
;
n
<=
length
-
MIN_MATCH
;
n
++
)
{
INSERT_STRING
(
s
,
n
,
hash_head
);
/* insert dictionary into window and hash */
avail
=
strm
->
avail_in
;
next
=
strm
->
next_in
;
strm
->
avail_in
=
dictLength
;
strm
->
next_in
=
(
Bytef
*
)
dictionary
;
fill_window
(
s
);
while
(
s
->
lookahead
>=
MIN_MATCH
)
{
str
=
s
->
strstart
;
n
=
s
->
lookahead
-
(
MIN_MATCH
-
1
);
do
{
UPDATE_HASH
(
s
,
s
->
ins_h
,
s
->
window
[
str
+
MIN_MATCH
-
1
]);
#ifndef FASTEST
s
->
prev
[
str
&
s
->
w_mask
]
=
s
->
head
[
s
->
ins_h
];
#endif
s
->
head
[
s
->
ins_h
]
=
(
Pos
)
str
;
str
++
;
}
while
(
--
n
);
s
->
strstart
=
str
;
s
->
lookahead
=
MIN_MATCH
-
1
;
fill_window
(
s
);
}
if
(
hash_head
)
hash_head
=
0
;
/* to make compiler happy */
s
->
strstart
+=
s
->
lookahead
;
s
->
block_start
=
(
long
)
s
->
strstart
;
s
->
insert
=
s
->
lookahead
;
s
->
lookahead
=
0
;
s
->
match_length
=
s
->
prev_length
=
MIN_MATCH
-
1
;
s
->
match_available
=
0
;
strm
->
next_in
=
next
;
strm
->
avail_in
=
avail
;
s
->
wrap
=
wrap
;
return
Z_OK
;
}
/* ========================================================================= */
int
ZEXPORT
deflateReset
(
strm
)
int
ZEXPORT
deflateReset
Keep
(
strm
)
z_streamp
strm
;
{
deflate_state
*
s
;
...
...
@@ -380,11 +419,22 @@ int ZEXPORT deflateReset (strm)
s
->
last_flush
=
Z_NO_FLUSH
;
_tr_init
(
s
);
lm_init
(
s
);
return
Z_OK
;
}
/* ========================================================================= */
int
ZEXPORT
deflateReset
(
strm
)
z_streamp
strm
;
{
int
ret
;
ret
=
deflateResetKeep
(
strm
);
if
(
ret
==
Z_OK
)
lm_init
(
strm
->
state
);
return
ret
;
}
/* ========================================================================= */
int
ZEXPORT
deflateSetHeader
(
strm
,
head
)
z_streamp
strm
;
...
...
@@ -396,15 +446,43 @@ int ZEXPORT deflateSetHeader (strm, head)
return
Z_OK
;
}
/* ========================================================================= */
int
ZEXPORT
deflatePending
(
strm
,
pending
,
bits
)
unsigned
*
pending
;
int
*
bits
;
z_streamp
strm
;
{
if
(
strm
==
Z_NULL
||
strm
->
state
==
Z_NULL
)
return
Z_STREAM_ERROR
;
if
(
pending
!=
Z_NULL
)
*
pending
=
strm
->
state
->
pending
;
if
(
bits
!=
Z_NULL
)
*
bits
=
strm
->
state
->
bi_valid
;
return
Z_OK
;
}
/* ========================================================================= */
int
ZEXPORT
deflatePrime
(
strm
,
bits
,
value
)
z_streamp
strm
;
int
bits
;
int
value
;
{
deflate_state
*
s
;
int
put
;
if
(
strm
==
Z_NULL
||
strm
->
state
==
Z_NULL
)
return
Z_STREAM_ERROR
;
strm
->
state
->
bi_valid
=
bits
;
strm
->
state
->
bi_buf
=
(
ush
)(
value
&
((
1
<<
bits
)
-
1
));
s
=
strm
->
state
;
if
((
Bytef
*
)(
s
->
d_buf
)
<
s
->
pending_out
+
((
Buf_size
+
7
)
>>
3
))
return
Z_BUF_ERROR
;
do
{
put
=
Buf_size
-
s
->
bi_valid
;
if
(
put
>
bits
)
put
=
bits
;
s
->
bi_buf
|=
(
ush
)((
value
&
((
1
<<
put
)
-
1
))
<<
s
->
bi_valid
);
s
->
bi_valid
+=
put
;
_tr_flush_bits
(
s
);
value
>>=
put
;
bits
-=
put
;
}
while
(
bits
);
return
Z_OK
;
}
...
...
@@ -562,19 +640,22 @@ local void putShortMSB (s, b)
local
void
flush_pending
(
strm
)
z_streamp
strm
;
{
unsigned
len
=
strm
->
state
->
pending
;
unsigned
len
;
deflate_state
*
s
=
strm
->
state
;
_tr_flush_bits
(
s
);
len
=
s
->
pending
;
if
(
len
>
strm
->
avail_out
)
len
=
strm
->
avail_out
;
if
(
len
==
0
)
return
;
zmemcpy
(
strm
->
next_out
,
s
trm
->
state
->
pending_out
,
len
);
zmemcpy
(
strm
->
next_out
,
s
->
pending_out
,
len
);
strm
->
next_out
+=
len
;
s
trm
->
state
->
pending_out
+=
len
;
s
->
pending_out
+=
len
;
strm
->
total_out
+=
len
;
strm
->
avail_out
-=
len
;
s
trm
->
state
->
pending
-=
len
;
if
(
s
trm
->
state
->
pending
==
0
)
{
s
trm
->
state
->
pending_out
=
strm
->
state
->
pending_buf
;
s
->
pending
-=
len
;
if
(
s
->
pending
==
0
)
{
s
->
pending_out
=
s
->
pending_buf
;
}
}
...
...
@@ -801,7 +882,7 @@ int ZEXPORT deflate (strm, flush)
* flushes. For repeated and useless calls with Z_FINISH, we keep
* returning Z_STREAM_END instead of Z_BUF_ERROR.
*/
}
else
if
(
strm
->
avail_in
==
0
&&
flush
<=
old_flush
&&
}
else
if
(
strm
->
avail_in
==
0
&&
RANK
(
flush
)
<=
RANK
(
old_flush
)
&&
flush
!=
Z_FINISH
)
{
ERR_RETURN
(
strm
,
Z_BUF_ERROR
);
}
...
...
@@ -850,6 +931,7 @@ int ZEXPORT deflate (strm, flush)
if
(
s
->
lookahead
==
0
)
{
s
->
strstart
=
0
;
s
->
block_start
=
0L
;
s
->
insert
=
0
;
}
}
}
...
...
@@ -945,12 +1027,12 @@ int ZEXPORT deflateCopy (dest, source)
ss
=
source
->
state
;
zmemcpy
(
dest
,
source
,
sizeof
(
z_stream
));
zmemcpy
(
(
voidpf
)
dest
,
(
voidpf
)
source
,
sizeof
(
z_stream
));
ds
=
(
deflate_state
*
)
ZALLOC
(
dest
,
1
,
sizeof
(
deflate_state
));
if
(
ds
==
Z_NULL
)
return
Z_MEM_ERROR
;
dest
->
state
=
(
struct
internal_state
FAR
*
)
ds
;
zmemcpy
(
ds
,
ss
,
sizeof
(
deflate_state
));
zmemcpy
(
(
voidpf
)
ds
,
(
voidpf
)
ss
,
sizeof
(
deflate_state
));
ds
->
strm
=
dest
;
ds
->
window
=
(
Bytef
*
)
ZALLOC
(
dest
,
ds
->
w_size
,
2
*
sizeof
(
Byte
));
...
...
@@ -966,8 +1048,8 @@ int ZEXPORT deflateCopy (dest, source)
}
/* following zmemcpy do not work for 16-bit MSDOS */
zmemcpy
(
ds
->
window
,
ss
->
window
,
ds
->
w_size
*
2
*
sizeof
(
Byte
));
zmemcpy
(
ds
->
prev
,
ss
->
prev
,
ds
->
w_size
*
sizeof
(
Pos
));
zmemcpy
(
ds
->
head
,
ss
->
head
,
ds
->
hash_size
*
sizeof
(
Pos
));
zmemcpy
(
(
voidpf
)
ds
->
prev
,
(
voidpf
)
ss
->
prev
,
ds
->
w_size
*
sizeof
(
Pos
));
zmemcpy
(
(
voidpf
)
ds
->
head
,
(
voidpf
)
ss
->
head
,
ds
->
hash_size
*
sizeof
(
Pos
));
zmemcpy
(
ds
->
pending_buf
,
ss
->
pending_buf
,
(
uInt
)
ds
->
pending_buf_size
);
ds
->
pending_out
=
ds
->
pending_buf
+
(
ss
->
pending_out
-
ss
->
pending_buf
);
...
...
@@ -1001,15 +1083,15 @@ local int read_buf(strm, buf, size)
strm
->
avail_in
-=
len
;
zmemcpy
(
buf
,
strm
->
next_in
,
len
);
if
(
strm
->
state
->
wrap
==
1
)
{
strm
->
adler
=
adler32
(
strm
->
adler
,
strm
->
next_in
,
len
);
strm
->
adler
=
adler32
(
strm
->
adler
,
buf
,
len
);
}
#ifdef GZIP
else
if
(
strm
->
state
->
wrap
==
2
)
{
strm
->
adler
=
crc32
(
strm
->
adler
,
strm
->
next_in
,
len
);
strm
->
adler
=
crc32
(
strm
->
adler
,
buf
,
len
);
}
#endif
zmemcpy
(
buf
,
strm
->
next_in
,
len
);
strm
->
next_in
+=
len
;
strm
->
total_in
+=
len
;
...
...
@@ -1036,6 +1118,7 @@ local void lm_init (s)
s
->
strstart
=
0
;
s
->
block_start
=
0L
;
s
->
lookahead
=
0
;
s
->
insert
=
0
;
s
->
match_length
=
s
->
prev_length
=
MIN_MATCH
-
1
;
s
->
match_available
=
0
;
s
->
ins_h
=
0
;
...
...
@@ -1310,6 +1393,8 @@ local void fill_window(s)
unsigned
more
;
/* Amount of free space at the end of the window. */
uInt
wsize
=
s
->
w_size
;
Assert
(
s
->
lookahead
<
MIN_LOOKAHEAD
,
"already enough lookahead"
);
do
{
more
=
(
unsigned
)(
s
->
window_size
-
(
ulg
)
s
->
lookahead
-
(
ulg
)
s
->
strstart
);
...
...
@@ -1362,7 +1447,7 @@ local void fill_window(s)
#endif
more
+=
wsize
;
}
if
(
s
->
strm
->
avail_in
==
0
)
return
;
if
(
s
->
strm
->
avail_in
==
0
)
break
;
/* If there was no sliding:
* strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
...
...
@@ -1381,12 +1466,24 @@ local void fill_window(s)
s
->
lookahead
+=
n
;
/* Initialize the hash value now that we have some input: */
if
(
s
->
lookahead
>=
MIN_MATCH
)
{
s
->
ins_h
=
s
->
window
[
s
->
strstart
];
UPDATE_HASH
(
s
,
s
->
ins_h
,
s
->
window
[
s
->
strstart
+
1
]);
if
(
s
->
lookahead
+
s
->
insert
>=
MIN_MATCH
)
{
uInt
str
=
s
->
strstart
-
s
->
insert
;
s
->
ins_h
=
s
->
window
[
str
];
UPDATE_HASH
(
s
,
s
->
ins_h
,
s
->
window
[
str
+
1
]);
#if MIN_MATCH != 3
Call
UPDATE_HASH
()
MIN_MATCH
-
3
more
times
#endif
while
(
s
->
insert
)
{
UPDATE_HASH
(
s
,
s
->
ins_h
,
s
->
window
[
str
+
MIN_MATCH
-
1
]);
#ifndef FASTEST
s
->
prev
[
str
&
s
->
w_mask
]
=
s
->
head
[
s
->
ins_h
];
#endif
s
->
head
[
s
->
ins_h
]
=
(
Pos
)
str
;
str
++
;
s
->
insert
--
;
if
(
s
->
lookahead
+
s
->
insert
<
MIN_MATCH
)
break
;
}
}
/* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
* but this is not important since only literal bytes will be emitted.
...
...
@@ -1427,6 +1524,9 @@ local void fill_window(s)
s
->
high_water
+=
init
;
}
}
Assert
((
ulg
)
s
->
strstart
<=
s
->
window_size
-
MIN_LOOKAHEAD
,
"not enough room for search"
);
}
/* ===========================================================================
...
...
@@ -1506,8 +1606,14 @@ local block_state deflate_stored(s, flush)
FLUSH_BLOCK
(
s
,
0
);
}
}
FLUSH_BLOCK
(
s
,
flush
==
Z_FINISH
);
return
flush
==
Z_FINISH
?
finish_done
:
block_done
;
s
->
insert
=
0
;
if
(
flush
==
Z_FINISH
)
{
FLUSH_BLOCK
(
s
,
1
);
return
finish_done
;
}
if
((
long
)
s
->
strstart
>
s
->
block_start
)
FLUSH_BLOCK
(
s
,
0
);
return
block_done
;
}
/* ===========================================================================
...
...
@@ -1603,8 +1709,14 @@ local block_state deflate_fast(s, flush)
}
if
(
bflush
)
FLUSH_BLOCK
(
s
,
0
);
}
FLUSH_BLOCK
(
s
,
flush
==
Z_FINISH
);
return
flush
==
Z_FINISH
?
finish_done
:
block_done
;
s
->
insert
=
s
->
strstart
<
MIN_MATCH
-
1
?
s
->
strstart
:
MIN_MATCH
-
1
;
if
(
flush
==
Z_FINISH
)
{
FLUSH_BLOCK
(
s
,
1
);
return
finish_done
;
}
if
(
s
->
last_lit
)
FLUSH_BLOCK
(
s
,
0
);
return
block_done
;
}
#ifndef FASTEST
...
...
@@ -1728,8 +1840,14 @@ local block_state deflate_slow(s, flush)
_tr_tally_lit
(
s
,
s
->
window
[
s
->
strstart
-
1
],
bflush
);
s
->
match_available
=
0
;
}
FLUSH_BLOCK
(
s
,
flush
==
Z_FINISH
);
return
flush
==
Z_FINISH
?
finish_done
:
block_done
;
s
->
insert
=
s
->
strstart
<
MIN_MATCH
-
1
?
s
->
strstart
:
MIN_MATCH
-
1
;
if
(
flush
==
Z_FINISH
)
{
FLUSH_BLOCK
(
s
,
1
);
return
finish_done
;
}
if
(
s
->
last_lit
)
FLUSH_BLOCK
(
s
,
0
);
return
block_done
;
}
#endif
/* FASTEST */
...
...
@@ -1749,11 +1867,11 @@ local block_state deflate_rle(s, flush)
for
(;;)
{
/* Make sure that we always have enough lookahead, except
* at the end of the input file. We need MAX_MATCH bytes
* for the longest
encodable run
.
* for the longest
run, plus one for the unrolled loop
.
*/
if
(
s
->
lookahead
<
MAX_MATCH
)
{
if
(
s
->
lookahead
<
=
MAX_MATCH
)
{
fill_window
(
s
);
if
(
s
->
lookahead
<
MAX_MATCH
&&
flush
==
Z_NO_FLUSH
)
{
if
(
s
->
lookahead
<
=
MAX_MATCH
&&
flush
==
Z_NO_FLUSH
)
{
return
need_more
;
}
if
(
s
->
lookahead
==
0
)
break
;
/* flush the current block */
...
...
@@ -1776,6 +1894,7 @@ local block_state deflate_rle(s, flush)
if
(
s
->
match_length
>
s
->
lookahead
)
s
->
match_length
=
s
->
lookahead
;
}
Assert
(
scan
<=
s
->
window
+
(
uInt
)(
s
->
window_size
-
1
),
"wild scan"
);
}
/* Emit match if have run of MIN_MATCH or longer, else emit literal */
...
...
@@ -1796,8 +1915,14 @@ local block_state deflate_rle(s, flush)
}
if
(
bflush
)
FLUSH_BLOCK
(
s
,
0
);
}
FLUSH_BLOCK
(
s
,
flush
==
Z_FINISH
);
return
flush
==
Z_FINISH
?
finish_done
:
block_done
;
s
->
insert
=
0
;
if
(
flush
==
Z_FINISH
)
{
FLUSH_BLOCK
(
s
,
1
);
return
finish_done
;
}
if
(
s
->
last_lit
)
FLUSH_BLOCK
(
s
,
0
);
return
block_done
;
}
/* ===========================================================================
...
...
@@ -1829,6 +1954,12 @@ local block_state deflate_huff(s, flush)
s
->
strstart
++
;
if
(
bflush
)
FLUSH_BLOCK
(
s
,
0
);
}
FLUSH_BLOCK
(
s
,
flush
==
Z_FINISH
);
return
flush
==
Z_FINISH
?
finish_done
:
block_done
;
s
->
insert
=
0
;
if
(
flush
==
Z_FINISH
)
{
FLUSH_BLOCK
(
s
,
1
);
return
finish_done
;
}
if
(
s
->
last_lit
)
FLUSH_BLOCK
(
s
,
0
);
return
block_done
;
}
3rdparty/zlib/deflate.h
View file @
19ce8c7f
/* deflate.h -- internal compression state
* Copyright (C) 1995-201
0
Jean-loup Gailly
* Copyright (C) 1995-201
2
Jean-loup Gailly
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -48,6 +48,9 @@
#define MAX_BITS 15
/* All codes must not exceed MAX_BITS bits */
#define Buf_size 16
/* size of bit buffer in bi_buf */
#define INIT_STATE 42
#define EXTRA_STATE 69
#define NAME_STATE 73
...
...
@@ -188,7 +191,7 @@ typedef struct internal_state {
int
nice_match
;
/* Stop searching when current match exceeds this */
/* used by trees.c: */
/* Didn't use ct_data typedef below to supress compiler warning */
/* Didn't use ct_data typedef below to sup
p
ress compiler warning */
struct
ct_data_s
dyn_ltree
[
HEAP_SIZE
];
/* literal and length tree */
struct
ct_data_s
dyn_dtree
[
2
*
D_CODES
+
1
];
/* distance tree */
struct
ct_data_s
bl_tree
[
2
*
BL_CODES
+
1
];
/* Huffman tree for bit lengths */
...
...
@@ -244,7 +247,7 @@ typedef struct internal_state {
ulg
opt_len
;
/* bit length of current block with optimal trees */
ulg
static_len
;
/* bit length of current block with static trees */
uInt
matches
;
/* number of string matches in current block */
int
last_eob_len
;
/* bit length of EOB code for last block
*/
uInt
insert
;
/* bytes at end of window left to insert
*/
#ifdef DEBUG
ulg
compressed_len
;
/* total bit length of compressed file mod 2^32 */
...
...
@@ -294,6 +297,7 @@ void ZLIB_INTERNAL _tr_init OF((deflate_state *s));
int
ZLIB_INTERNAL
_tr_tally
OF
((
deflate_state
*
s
,
unsigned
dist
,
unsigned
lc
));
void
ZLIB_INTERNAL
_tr_flush_block
OF
((
deflate_state
*
s
,
charf
*
buf
,
ulg
stored_len
,
int
last
));
void
ZLIB_INTERNAL
_tr_flush_bits
OF
((
deflate_state
*
s
));
void
ZLIB_INTERNAL
_tr_align
OF
((
deflate_state
*
s
));
void
ZLIB_INTERNAL
_tr_stored_block
OF
((
deflate_state
*
s
,
charf
*
buf
,
ulg
stored_len
,
int
last
));
...
...
3rdparty/zlib/gzguts.h
View file @
19ce8c7f
/* gzguts.h -- zlib internal header definitions for gz* operations
* Copyright (C) 2004, 2005, 2010 Mark Adler
* Copyright (C) 2004, 2005, 2010
, 2011, 2012
Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -19,7 +19,7 @@
#endif
#include <stdio.h>
#include "z
util
.h"
#include "z
lib
.h"
#ifdef STDC
# include <string.h>
# include <stdlib.h>
...
...
@@ -27,17 +27,62 @@
#endif
#include <fcntl.h>
#ifdef __TURBOC__
# include <io.h>
#endif
#ifdef NO_DEFLATE
/* for compatibility with old definition */
# define NO_GZCOMPRESS
#endif
#ifdef _MSC_VER
# include <io.h>
# define vsnprintf _vsnprintf
#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
# ifndef HAVE_VSNPRINTF
# define HAVE_VSNPRINTF
# endif
#endif
#ifdef __GNUC__
#include <unistd.h>
#if defined(__CYGWIN__)
# ifndef HAVE_VSNPRINTF
# define HAVE_VSNPRINTF
# endif
#endif
#if defined(MSDOS) && defined(__BORLANDC__) && (BORLANDC > 0x410)
# ifndef HAVE_VSNPRINTF
# define HAVE_VSNPRINTF
# endif
#endif
#ifndef HAVE_VSNPRINTF
# ifdef MSDOS
/* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
but for now we just assume it doesn't. */
# define NO_vsnprintf
# endif
# ifdef __TURBOC__
# define NO_vsnprintf
# endif
# ifdef WIN32
/* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
# if !defined(vsnprintf) && !defined(NO_vsnprintf)
# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 )
# include <io.h>
# define vsnprintf _vsnprintf
# endif
# endif
# endif
# ifdef __SASC
# define NO_vsnprintf
# endif
# ifdef VMS
# define NO_vsnprintf
# endif
# ifdef __OS400__
# define NO_vsnprintf
# endif
# ifdef __MVS__
# define NO_vsnprintf
# endif
#endif
#ifndef local
...
...
@@ -72,6 +117,13 @@
ZEXTERN
z_off64_t
ZEXPORT
gzoffset64
OF
((
gzFile
));
#endif
/* default memLevel */
#if MAX_MEM_LEVEL >= 8
# define DEF_MEM_LEVEL 8
#else
# define DEF_MEM_LEVEL MAX_MEM_LEVEL
#endif
/* default i/o buffer size -- double this for output when reading */
#define GZBUFSIZE 8192
...
...
@@ -88,23 +140,25 @@
/* internal gzip file state data structure */
typedef
struct
{
/* exposed contents for gzgetc() macro */
struct
gzFile_s
x
;
/* "x" for exposed */
/* x.have: number of bytes available at x.next */
/* x.next: next output data to deliver or write */
/* x.pos: current position in uncompressed data */
/* used for both reading and writing */
int
mode
;
/* see gzip modes above */
int
fd
;
/* file descriptor */
char
*
path
;
/* path or fd for error messages */
z_off64_t
pos
;
/* current position in uncompressed data */
unsigned
size
;
/* buffer size, zero if not allocated yet */
unsigned
want
;
/* requested buffer size, default is GZBUFSIZE */
unsigned
char
*
in
;
/* input buffer */
unsigned
char
*
out
;
/* output buffer (double-sized when reading) */
unsigned
char
*
next
;
/* next output data to deliver or write
*/
int
direct
;
/* 0 if processing gzip, 1 if transparent
*/
/* just for reading */
unsigned
have
;
/* amount of output data unused at next */
int
eof
;
/* true if end of input file reached */
z_off64_t
start
;
/* where the gzip data started, for rewinding */
z_off64_t
raw
;
/* where the raw data started, for seeking */
int
how
;
/* 0: get header, 1: copy, 2: decompress */
int
direct
;
/* true if last read direct, false if gzip */
z_off64_t
start
;
/* where the gzip data started, for rewinding */
int
eof
;
/* true if end of input file reached */
int
past
;
/* true if read requested past end */
/* just for writing */
int
level
;
/* compression level */
int
strategy
;
/* compression strategy */
...
...
3rdparty/zlib/gzlib.c
View file @
19ce8c7f
/* gzlib.c -- zlib functions common to reading and writing gzip files
* Copyright (C) 2004, 2010 Mark Adler
* Copyright (C) 2004, 2010
, 2011
Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "gzguts.h"
#if defined(_WIN32) && !defined(__BORLANDC__)
# define LSEEK _lseeki64
#else
#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
# define LSEEK lseek64
#else
# define LSEEK lseek
#endif
#endif
/* Local functions */
local
void
gz_reset
OF
((
gz_statep
));
...
...
@@ -71,15 +75,15 @@ char ZLIB_INTERNAL *gz_strwinerror (error)
local
void
gz_reset
(
state
)
gz_statep
state
;
{
state
->
x
.
have
=
0
;
/* no output data available */
if
(
state
->
mode
==
GZ_READ
)
{
/* for reading ... */
state
->
have
=
0
;
/* no output data available */
state
->
eof
=
0
;
/* not at end of file */
state
->
past
=
0
;
/* have not read past end yet */
state
->
how
=
LOOK
;
/* look for gzip header */
state
->
direct
=
1
;
/* default for empty file */
}
state
->
seek
=
0
;
/* no seek request pending */
gz_error
(
state
,
Z_OK
,
NULL
);
/* clear error */
state
->
pos
=
0
;
/* no uncompressed data yet */
state
->
x
.
pos
=
0
;
/* no uncompressed data yet */
state
->
strm
.
avail_in
=
0
;
/* no input data yet */
}
...
...
@@ -91,6 +95,10 @@ local gzFile gz_open(path, fd, mode)
{
gz_statep
state
;
/* check input */
if
(
path
==
NULL
)
return
NULL
;
/* allocate gzFile structure to return */
state
=
malloc
(
sizeof
(
gz_state
));
if
(
state
==
NULL
)
...
...
@@ -103,6 +111,7 @@ local gzFile gz_open(path, fd, mode)
state
->
mode
=
GZ_NONE
;
state
->
level
=
Z_DEFAULT_COMPRESSION
;
state
->
strategy
=
Z_DEFAULT_STRATEGY
;
state
->
direct
=
0
;
while
(
*
mode
)
{
if
(
*
mode
>=
'0'
&&
*
mode
<=
'9'
)
state
->
level
=
*
mode
-
'0'
;
...
...
@@ -135,6 +144,8 @@ local gzFile gz_open(path, fd, mode)
break
;
case
'F'
:
state
->
strategy
=
Z_FIXED
;
case
'T'
:
state
->
direct
=
1
;
default:
/* could consider as an error, but just ignore */
;
}
...
...
@@ -147,6 +158,15 @@ local gzFile gz_open(path, fd, mode)
return
NULL
;
}
/* can't force transparent read */
if
(
state
->
mode
==
GZ_READ
)
{
if
(
state
->
direct
)
{
free
(
state
);
return
NULL
;
}
state
->
direct
=
1
;
/* for empty file */
}
/* save the path name for error messages */
state
->
path
=
malloc
(
strlen
(
path
)
+
1
);
if
(
state
->
path
==
NULL
)
{
...
...
@@ -243,8 +263,8 @@ int ZEXPORT gzbuffer(file, size)
return
-
1
;
/* check and set requested size */
if
(
size
==
0
)
return
-
1
;
if
(
size
<
2
)
size
=
2
;
/* need two bytes to check magic header */
state
->
want
=
size
;
return
0
;
}
...
...
@@ -261,7 +281,8 @@ int ZEXPORT gzrewind(file)
state
=
(
gz_statep
)
file
;
/* check that we're reading and that there's no error */
if
(
state
->
mode
!=
GZ_READ
||
state
->
err
!=
Z_OK
)
if
(
state
->
mode
!=
GZ_READ
||
(
state
->
err
!=
Z_OK
&&
state
->
err
!=
Z_BUF_ERROR
))
return
-
1
;
/* back up and start over */
...
...
@@ -289,7 +310,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
return
-
1
;
/* check that there's no error */
if
(
state
->
err
!=
Z_OK
)
if
(
state
->
err
!=
Z_OK
&&
state
->
err
!=
Z_BUF_ERROR
)
return
-
1
;
/* can only seek from start or relative to current position */
...
...
@@ -298,31 +319,32 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
/* normalize offset to a SEEK_CUR specification */
if
(
whence
==
SEEK_SET
)
offset
-=
state
->
pos
;
offset
-=
state
->
x
.
pos
;
else
if
(
state
->
seek
)
offset
+=
state
->
skip
;
state
->
seek
=
0
;
/* if within raw area while reading, just go there */
if
(
state
->
mode
==
GZ_READ
&&
state
->
how
==
COPY
&&
state
->
pos
+
offset
>=
state
->
raw
)
{
ret
=
LSEEK
(
state
->
fd
,
offset
-
state
->
have
,
SEEK_CUR
);
state
->
x
.
pos
+
offset
>=
0
)
{
ret
=
LSEEK
(
state
->
fd
,
offset
-
state
->
x
.
have
,
SEEK_CUR
);
if
(
ret
==
-
1
)
return
-
1
;
state
->
have
=
0
;
state
->
x
.
have
=
0
;
state
->
eof
=
0
;
state
->
past
=
0
;
state
->
seek
=
0
;
gz_error
(
state
,
Z_OK
,
NULL
);
state
->
strm
.
avail_in
=
0
;
state
->
pos
+=
offset
;
return
state
->
pos
;
state
->
x
.
pos
+=
offset
;
return
state
->
x
.
pos
;
}
/* calculate skip amount, rewinding if needed for back seek when reading */
if
(
offset
<
0
)
{
if
(
state
->
mode
!=
GZ_READ
)
/* writing -- can't go backwards */
return
-
1
;
offset
+=
state
->
pos
;
offset
+=
state
->
x
.
pos
;
if
(
offset
<
0
)
/* before start of file! */
return
-
1
;
if
(
gzrewind
(
file
)
==
-
1
)
/* rewind, then skip to offset */
...
...
@@ -331,11 +353,11 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
/* if reading, skip what's in output buffer (one less gzgetc() check) */
if
(
state
->
mode
==
GZ_READ
)
{
n
=
GT_OFF
(
state
->
have
)
||
(
z_off64_t
)
state
->
have
>
offset
?
(
unsigned
)
offset
:
state
->
have
;
state
->
have
-=
n
;
state
->
next
+=
n
;
state
->
pos
+=
n
;
n
=
GT_OFF
(
state
->
x
.
have
)
||
(
z_off64_t
)
state
->
x
.
have
>
offset
?
(
unsigned
)
offset
:
state
->
x
.
have
;
state
->
x
.
have
-=
n
;
state
->
x
.
next
+=
n
;
state
->
x
.
pos
+=
n
;
offset
-=
n
;
}
...
...
@@ -344,7 +366,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
state
->
seek
=
1
;
state
->
skip
=
offset
;
}
return
state
->
pos
+
offset
;
return
state
->
x
.
pos
+
offset
;
}
/* -- see zlib.h -- */
...
...
@@ -373,7 +395,7 @@ z_off64_t ZEXPORT gztell64(file)
return
-
1
;
/* return position */
return
state
->
pos
+
(
state
->
seek
?
state
->
skip
:
0
);
return
state
->
x
.
pos
+
(
state
->
seek
?
state
->
skip
:
0
);
}
/* -- see zlib.h -- */
...
...
@@ -433,8 +455,7 @@ int ZEXPORT gzeof(file)
return
0
;
/* return end-of-file state */
return
state
->
mode
==
GZ_READ
?
(
state
->
eof
&&
state
->
strm
.
avail_in
==
0
&&
state
->
have
==
0
)
:
0
;
return
state
->
mode
==
GZ_READ
?
state
->
past
:
0
;
}
/* -- see zlib.h -- */
...
...
@@ -471,8 +492,10 @@ void ZEXPORT gzclearerr(file)
return
;
/* clear error and end-of-file */
if
(
state
->
mode
==
GZ_READ
)
if
(
state
->
mode
==
GZ_READ
)
{
state
->
eof
=
0
;
state
->
past
=
0
;
}
gz_error
(
state
,
Z_OK
,
NULL
);
}
...
...
@@ -494,6 +517,10 @@ void ZLIB_INTERNAL gz_error(state, err, msg)
state
->
msg
=
NULL
;
}
/* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */
if
(
err
!=
Z_OK
&&
err
!=
Z_BUF_ERROR
)
state
->
x
.
have
=
0
;
/* set error code, and if no message, then done */
state
->
err
=
err
;
if
(
msg
==
NULL
)
...
...
3rdparty/zlib/gzread.c
View file @
19ce8c7f
/* gzread.c -- zlib functions for reading gzip files
* Copyright (C) 2004, 2005, 2010 Mark Adler
* Copyright (C) 2004, 2005, 2010
, 2011
Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -8,10 +8,9 @@
/* Local functions */
local
int
gz_load
OF
((
gz_statep
,
unsigned
char
*
,
unsigned
,
unsigned
*
));
local
int
gz_avail
OF
((
gz_statep
));
local
int
gz_next4
OF
((
gz_statep
,
unsigned
long
*
));
local
int
gz_head
OF
((
gz_statep
));
local
int
gz_look
OF
((
gz_statep
));
local
int
gz_decomp
OF
((
gz_statep
));
local
int
gz_
make
OF
((
gz_statep
));
local
int
gz_
fetch
OF
((
gz_statep
));
local
int
gz_skip
OF
((
gz_statep
,
z_off64_t
));
/* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from
...
...
@@ -46,67 +45,42 @@ local int gz_load(state, buf, len, have)
error, 0 otherwise. Note that the eof flag is set when the end of the input
file is reached, even though there may be unused data in the buffer. Once
that data has been used, no more attempts will be made to read the file.
gz_avail() assumes that strm->avail_in == 0. */
If strm->avail_in != 0, then the current data is moved to the beginning of
the input buffer, and then the remainder of the buffer is loaded with the
available data from the input file. */
local
int
gz_avail
(
state
)
gz_statep
state
;
{
unsigned
got
;
z_streamp
strm
=
&
(
state
->
strm
);
if
(
state
->
err
!=
Z_OK
)
if
(
state
->
err
!=
Z_OK
&&
state
->
err
!=
Z_BUF_ERROR
)
return
-
1
;
if
(
state
->
eof
==
0
)
{
if
(
gz_load
(
state
,
state
->
in
,
state
->
size
,
(
unsigned
*
)
&
(
strm
->
avail_in
))
==
-
1
)
if
(
strm
->
avail_in
)
memmove
(
state
->
in
,
strm
->
next_in
,
strm
->
avail_in
);
if
(
gz_load
(
state
,
state
->
in
+
strm
->
avail_in
,
state
->
size
-
strm
->
avail_in
,
&
got
)
==
-
1
)
return
-
1
;
strm
->
avail_in
+=
got
;
strm
->
next_in
=
state
->
in
;
}
return
0
;
}
/* Get next byte from input, or -1 if end or error. */
#define NEXT() ((strm->avail_in == 0 && gz_avail(state) == -1) ? -1 : \
(strm->avail_in == 0 ? -1 : \
(strm->avail_in--, *(strm->next_in)++)))
/* Get a four-byte little-endian integer and return 0 on success and the value
in *ret. Otherwise -1 is returned and *ret is not modified. */
local
int
gz_next4
(
state
,
ret
)
gz_statep
state
;
unsigned
long
*
ret
;
{
int
ch
;
unsigned
long
val
;
z_streamp
strm
=
&
(
state
->
strm
);
val
=
NEXT
();
val
+=
(
unsigned
)
NEXT
()
<<
8
;
val
+=
(
unsigned
long
)
NEXT
()
<<
16
;
ch
=
NEXT
();
if
(
ch
==
-
1
)
return
-
1
;
val
+=
(
unsigned
long
)
ch
<<
24
;
*
ret
=
val
;
return
0
;
}
/* Look for gzip header, set up for inflate or copy. state->have must be zero.
/* Look for gzip header, set up for inflate or copy. state->x.have must be 0.
If this is the first time in, allocate required memory. state->how will be
left unchanged if there is no more input data available, will be set to COPY
if there is no gzip header and direct copying will be performed, or it will
be set to GZIP for decompression, and the gzip header will be skipped so
that the next available input data is the raw deflate stream. If direct
copying, then leftover input data from the input buffer will be copied to
the output buffer. In that case, all further file reads will be directly to
either the output buffer or a user buffer. If decompressing, the inflate
state and the check value will be initialized. gz_head() will return 0 on
success or -1 on failure. Failures may include read errors or gzip header
errors. */
local
int
gz_head
(
state
)
be set to GZIP for decompression. If direct copying, then leftover input
data from the input buffer will be copied to the output buffer. In that
case, all further file reads will be directly to either the output buffer or
a user buffer. If decompressing, the inflate state will be initialized.
gz_look() will return 0 on success or -1 on failure. */
local
int
gz_look
(
state
)
gz_statep
state
;
{
z_streamp
strm
=
&
(
state
->
strm
);
int
flags
;
unsigned
len
;
/* allocate read buffers and inflate memory */
if
(
state
->
size
==
0
)
{
...
...
@@ -129,7 +103,7 @@ local int gz_head(state)
state
->
strm
.
opaque
=
Z_NULL
;
state
->
strm
.
avail_in
=
0
;
state
->
strm
.
next_in
=
Z_NULL
;
if
(
inflateInit2
(
&
(
state
->
strm
),
-
15
)
!=
Z_OK
)
{
/* raw inflate
*/
if
(
inflateInit2
(
&
(
state
->
strm
),
15
+
16
)
!=
Z_OK
)
{
/* gunzip
*/
free
(
state
->
out
);
free
(
state
->
in
);
state
->
size
=
0
;
...
...
@@ -138,83 +112,45 @@ local int gz_head(state)
}
}
/* get
some data
in the input buffer */
if
(
strm
->
avail_in
==
0
)
{
/* get
at least the magic bytes
in the input buffer */
if
(
strm
->
avail_in
<
2
)
{
if
(
gz_avail
(
state
)
==
-
1
)
return
-
1
;
if
(
strm
->
avail_in
==
0
)
return
0
;
}
/* look for the gzip magic header bytes 31 and 139 */
if
(
strm
->
next_in
[
0
]
==
31
)
{
strm
->
avail_in
--
;
strm
->
next_in
++
;
if
(
strm
->
avail_in
==
0
&&
gz_avail
(
state
)
==
-
1
)
return
-
1
;
if
(
strm
->
avail_in
&&
strm
->
next_in
[
0
]
==
139
)
{
/* we have a gzip header, woo hoo! */
strm
->
avail_in
--
;
strm
->
next_in
++
;
/* skip rest of header */
if
(
NEXT
()
!=
8
)
{
/* compression method */
gz_error
(
state
,
Z_DATA_ERROR
,
"unknown compression method"
);
return
-
1
;
}
flags
=
NEXT
();
if
(
flags
&
0xe0
)
{
/* reserved flag bits */
gz_error
(
state
,
Z_DATA_ERROR
,
"unknown header flags set"
);
return
-
1
;
}
NEXT
();
/* modification time */
NEXT
();
NEXT
();
NEXT
();
NEXT
();
/* extra flags */
NEXT
();
/* operating system */
if
(
flags
&
4
)
{
/* extra field */
len
=
(
unsigned
)
NEXT
();
len
+=
(
unsigned
)
NEXT
()
<<
8
;
while
(
len
--
)
if
(
NEXT
()
<
0
)
break
;
}
if
(
flags
&
8
)
/* file name */
while
(
NEXT
()
>
0
)
;
if
(
flags
&
16
)
/* comment */
while
(
NEXT
()
>
0
)
;
if
(
flags
&
2
)
{
/* header crc */
NEXT
();
NEXT
();
}
/* an unexpected end of file is not checked for here -- it will be
noticed on the first request for uncompressed data */
/* set up for decompression */
/* look for gzip magic bytes -- if there, do gzip decoding (note: there is
a logical dilemma here when considering the case of a partially written
gzip file, to wit, if a single 31 byte is written, then we cannot tell
whether this is a single-byte file, or just a partially written gzip
file -- for here we assume that if a gzip file is being written, then
the header will be written in a single operation, so that reading a
single byte is sufficient indication that it is not a gzip file) */
if
(
strm
->
avail_in
>
1
&&
strm
->
next_in
[
0
]
==
31
&&
strm
->
next_in
[
1
]
==
139
)
{
inflateReset
(
strm
);
strm
->
adler
=
crc32
(
0L
,
Z_NULL
,
0
);
state
->
how
=
GZIP
;
state
->
direct
=
0
;
return
0
;
}
else
{
/* not a gzip file -- save first byte (31) and fall to raw i/o */
state
->
out
[
0
]
=
31
;
state
->
have
=
1
;
}
/* no gzip header -- if we were decoding gzip before, then this is trailing
garbage. Ignore the trailing garbage and finish. */
if
(
state
->
direct
==
0
)
{
strm
->
avail_in
=
0
;
state
->
eof
=
1
;
state
->
x
.
have
=
0
;
return
0
;
}
/* doing raw i/o, save start of raw data for seeking, copy any leftover
input to output -- this assumes that the output buffer is larger than
the input buffer, which also assures space for gzungetc() */
state
->
raw
=
state
->
pos
;
state
->
next
=
state
->
out
;
/* doing raw i/o, copy any leftover input to output -- this assumes that
the output buffer is larger than the input buffer, which also assures
space for gzungetc() */
state
->
x
.
next
=
state
->
out
;
if
(
strm
->
avail_in
)
{
memcpy
(
state
->
next
+
state
->
have
,
strm
->
next_in
,
strm
->
avail_in
);
state
->
have
+
=
strm
->
avail_in
;
memcpy
(
state
->
x
.
next
,
strm
->
next_in
,
strm
->
avail_in
);
state
->
x
.
have
=
strm
->
avail_in
;
strm
->
avail_in
=
0
;
}
state
->
how
=
COPY
;
...
...
@@ -223,19 +159,15 @@ local int gz_head(state)
}
/* Decompress from input to the provided next_out and avail_out in the state.
If the end of the compressed data is reached, then verify the gzip trailer
check value and length (modulo 2^32). state->have and state->next are set
to point to the just decompressed data, and the crc is updated. If the
trailer is verified, state->how is reset to LOOK to look for the next gzip
stream or raw data, once state->have is depleted. Returns 0 on success, -1
on failure. Failures may include invalid compressed data or a failed gzip
trailer verification. */
On return, state->x.have and state->x.next point to the just decompressed
data. If the gzip stream completes, state->how is reset to LOOK to look for
the next gzip stream or raw data, once state->x.have is depleted. Returns 0
on success, -1 on failure. */
local
int
gz_decomp
(
state
)
gz_statep
state
;
{
int
ret
;
int
ret
=
Z_OK
;
unsigned
had
;
unsigned
long
crc
,
len
;
z_streamp
strm
=
&
(
state
->
strm
);
/* fill output buffer up to end of deflate stream */
...
...
@@ -245,8 +177,8 @@ local int gz_decomp(state)
if
(
strm
->
avail_in
==
0
&&
gz_avail
(
state
)
==
-
1
)
return
-
1
;
if
(
strm
->
avail_in
==
0
)
{
gz_error
(
state
,
Z_
DATA
_ERROR
,
"unexpected end of file"
);
return
-
1
;
gz_error
(
state
,
Z_
BUF
_ERROR
,
"unexpected end of file"
);
break
;
}
/* decompress and handle errors */
...
...
@@ -267,62 +199,50 @@ local int gz_decomp(state)
}
}
while
(
strm
->
avail_out
&&
ret
!=
Z_STREAM_END
);
/* update available output and crc check value */
state
->
have
=
had
-
strm
->
avail_out
;
state
->
next
=
strm
->
next_out
-
state
->
have
;
strm
->
adler
=
crc32
(
strm
->
adler
,
state
->
next
,
state
->
have
);
/* update available output */
state
->
x
.
have
=
had
-
strm
->
avail_out
;
state
->
x
.
next
=
strm
->
next_out
-
state
->
x
.
have
;
/* check gzip trailer if at end of deflate stream */
if
(
ret
==
Z_STREAM_END
)
{
if
(
gz_next4
(
state
,
&
crc
)
==
-
1
||
gz_next4
(
state
,
&
len
)
==
-
1
)
{
gz_error
(
state
,
Z_DATA_ERROR
,
"unexpected end of file"
);
return
-
1
;
}
if
(
crc
!=
strm
->
adler
)
{
gz_error
(
state
,
Z_DATA_ERROR
,
"incorrect data check"
);
return
-
1
;
}
if
(
len
!=
(
strm
->
total_out
&
0xffffffffL
))
{
gz_error
(
state
,
Z_DATA_ERROR
,
"incorrect length check"
);
return
-
1
;
}
state
->
how
=
LOOK
;
/* ready for next stream, once have is 0 (leave
state->direct unchanged to remember how) */
}
/* if the gzip stream completed successfully, look for another */
if
(
ret
==
Z_STREAM_END
)
state
->
how
=
LOOK
;
/* good decompression */
return
0
;
}
/*
Make data and put in the output buffer. Assumes that state->have ==
0.
/*
Fetch data and put it in the output buffer. Assumes state->x.have is
0.
Data is either copied from the input file or decompressed from the input
file depending on state->how. If state->how is LOOK, then a gzip header is
looked for (and skipped if found) to determine wither to copy or decompress.
Returns -1 on error, otherwise 0. gz_make() will leave state->have as COPY
or GZIP unless the end of the input file has been reached and all data has
been processed. */
local
int
gz_make
(
state
)
looked for to determine whether to copy or decompress. Returns -1 on error,
otherwise 0. gz_fetch() will leave state->how as COPY or GZIP unless the
end of the input file has been reached and all data has been processed. */
local
int
gz_fetch
(
state
)
gz_statep
state
;
{
z_streamp
strm
=
&
(
state
->
strm
);
if
(
state
->
how
==
LOOK
)
{
/* look for gzip header */
if
(
gz_head
(
state
)
==
-
1
)
do
{
switch
(
state
->
how
)
{
case
LOOK
:
/* -> LOOK, COPY (only if never GZIP), or GZIP */
if
(
gz_look
(
state
)
==
-
1
)
return
-
1
;
if
(
state
->
have
)
/* got some data from gz_head() */
if
(
state
->
how
==
LOOK
)
return
0
;
}
if
(
state
->
how
==
COPY
)
{
/* straight copy */
if
(
gz_load
(
state
,
state
->
out
,
state
->
size
<<
1
,
&
(
state
->
have
))
==
-
1
)
break
;
case
COPY
:
/* -> COPY */
if
(
gz_load
(
state
,
state
->
out
,
state
->
size
<<
1
,
&
(
state
->
x
.
have
))
==
-
1
)
return
-
1
;
state
->
next
=
state
->
out
;
}
else
if
(
state
->
how
==
GZIP
)
{
/* decompress
*/
state
->
x
.
next
=
state
->
out
;
return
0
;
case
GZIP
:
/* -> GZIP or LOOK (if end of gzip stream)
*/
strm
->
avail_out
=
state
->
size
<<
1
;
strm
->
next_out
=
state
->
out
;
if
(
gz_decomp
(
state
)
==
-
1
)
return
-
1
;
}
}
while
(
state
->
x
.
have
==
0
&&
(
!
state
->
eof
||
strm
->
avail_in
));
return
0
;
}
...
...
@@ -336,12 +256,12 @@ local int gz_skip(state, len)
/* skip over len bytes or reach end-of-file, whichever comes first */
while
(
len
)
/* skip over whatever is in output buffer */
if
(
state
->
have
)
{
n
=
GT_OFF
(
state
->
have
)
||
(
z_off64_t
)
state
->
have
>
len
?
(
unsigned
)
len
:
state
->
have
;
state
->
have
-=
n
;
state
->
next
+=
n
;
state
->
pos
+=
n
;
if
(
state
->
x
.
have
)
{
n
=
GT_OFF
(
state
->
x
.
have
)
||
(
z_off64_t
)
state
->
x
.
have
>
len
?
(
unsigned
)
len
:
state
->
x
.
have
;
state
->
x
.
have
-=
n
;
state
->
x
.
next
+=
n
;
state
->
x
.
pos
+=
n
;
len
-=
n
;
}
...
...
@@ -352,7 +272,7 @@ local int gz_skip(state, len)
/* need more data to skip -- load up output buffer */
else
{
/* get more output, looking for header if required */
if
(
gz_
make
(
state
)
==
-
1
)
if
(
gz_
fetch
(
state
)
==
-
1
)
return
-
1
;
}
return
0
;
...
...
@@ -374,14 +294,15 @@ int ZEXPORT gzread(file, buf, len)
state
=
(
gz_statep
)
file
;
strm
=
&
(
state
->
strm
);
/* check that we're reading and that there's no error */
if
(
state
->
mode
!=
GZ_READ
||
state
->
err
!=
Z_OK
)
/* check that we're reading and that there's no (serious) error */
if
(
state
->
mode
!=
GZ_READ
||
(
state
->
err
!=
Z_OK
&&
state
->
err
!=
Z_BUF_ERROR
))
return
-
1
;
/* since an int is returned, make sure len fits in one, otherwise return
with an error (this avoids the flaw in the interface) */
if
((
int
)
len
<
0
)
{
gz_error
(
state
,
Z_
BUF
_ERROR
,
"requested length does not fit in int"
);
gz_error
(
state
,
Z_
DATA
_ERROR
,
"requested length does not fit in int"
);
return
-
1
;
}
...
...
@@ -400,22 +321,24 @@ int ZEXPORT gzread(file, buf, len)
got
=
0
;
do
{
/* first just try copying data from the output buffer */
if
(
state
->
have
)
{
n
=
state
->
have
>
len
?
len
:
state
->
have
;
memcpy
(
buf
,
state
->
next
,
n
);
state
->
next
+=
n
;
state
->
have
-=
n
;
if
(
state
->
x
.
have
)
{
n
=
state
->
x
.
have
>
len
?
len
:
state
->
x
.
have
;
memcpy
(
buf
,
state
->
x
.
next
,
n
);
state
->
x
.
next
+=
n
;
state
->
x
.
have
-=
n
;
}
/* output buffer empty -- return if we're at the end of the input */
else
if
(
state
->
eof
&&
strm
->
avail_in
==
0
)
else
if
(
state
->
eof
&&
strm
->
avail_in
==
0
)
{
state
->
past
=
1
;
/* tried to read past end */
break
;
}
/* need output data -- for small len or new stream load up our output
buffer */
else
if
(
state
->
how
==
LOOK
||
len
<
(
state
->
size
<<
1
))
{
/* get more output, looking for header if required */
if
(
gz_
make
(
state
)
==
-
1
)
if
(
gz_
fetch
(
state
)
==
-
1
)
return
-
1
;
continue
;
/* no progress yet -- go back to memcpy() above */
/* the copy above assures that we will leave with space in the
...
...
@@ -434,15 +357,15 @@ int ZEXPORT gzread(file, buf, len)
strm
->
next_out
=
buf
;
if
(
gz_decomp
(
state
)
==
-
1
)
return
-
1
;
n
=
state
->
have
;
state
->
have
=
0
;
n
=
state
->
x
.
have
;
state
->
x
.
have
=
0
;
}
/* update progress */
len
-=
n
;
buf
=
(
char
*
)
buf
+
n
;
got
+=
n
;
state
->
pos
+=
n
;
state
->
x
.
pos
+=
n
;
}
while
(
len
);
/* return number of bytes read into user buffer (will fit in int) */
...
...
@@ -450,7 +373,7 @@ int ZEXPORT gzread(file, buf, len)
}
/* -- see zlib.h -- */
int
ZEXPORT
gzgetc
(
file
)
int
ZEXPORT
gzgetc
_
(
file
)
gzFile
file
;
{
int
ret
;
...
...
@@ -462,15 +385,16 @@ int ZEXPORT gzgetc(file)
return
-
1
;
state
=
(
gz_statep
)
file
;
/* check that we're reading and that there's no error */
if
(
state
->
mode
!=
GZ_READ
||
state
->
err
!=
Z_OK
)
/* check that we're reading and that there's no (serious) error */
if
(
state
->
mode
!=
GZ_READ
||
(
state
->
err
!=
Z_OK
&&
state
->
err
!=
Z_BUF_ERROR
))
return
-
1
;
/* try output buffer (no need to check for skip request) */
if
(
state
->
have
)
{
state
->
have
--
;
state
->
pos
++
;
return
*
(
state
->
next
)
++
;
if
(
state
->
x
.
have
)
{
state
->
x
.
have
--
;
state
->
x
.
pos
++
;
return
*
(
state
->
x
.
next
)
++
;
}
/* nothing there -- try gzread() */
...
...
@@ -478,6 +402,13 @@ int ZEXPORT gzgetc(file)
return
ret
<
1
?
-
1
:
buf
[
0
];
}
#undef gzgetc
int
ZEXPORT
gzgetc
(
file
)
gzFile
file
;
{
return
gzgetc_
(
file
);
}
/* -- see zlib.h -- */
int
ZEXPORT
gzungetc
(
c
,
file
)
int
c
;
...
...
@@ -490,8 +421,9 @@ int ZEXPORT gzungetc(c, file)
return
-
1
;
state
=
(
gz_statep
)
file
;
/* check that we're reading and that there's no error */
if
(
state
->
mode
!=
GZ_READ
||
state
->
err
!=
Z_OK
)
/* check that we're reading and that there's no (serious) error */
if
(
state
->
mode
!=
GZ_READ
||
(
state
->
err
!=
Z_OK
&&
state
->
err
!=
Z_BUF_ERROR
))
return
-
1
;
/* process a skip request */
...
...
@@ -506,32 +438,34 @@ int ZEXPORT gzungetc(c, file)
return
-
1
;
/* if output buffer empty, put byte at end (allows more pushing) */
if
(
state
->
have
==
0
)
{
state
->
have
=
1
;
state
->
next
=
state
->
out
+
(
state
->
size
<<
1
)
-
1
;
state
->
next
[
0
]
=
c
;
state
->
pos
--
;
if
(
state
->
x
.
have
==
0
)
{
state
->
x
.
have
=
1
;
state
->
x
.
next
=
state
->
out
+
(
state
->
size
<<
1
)
-
1
;
state
->
x
.
next
[
0
]
=
c
;
state
->
x
.
pos
--
;
state
->
past
=
0
;
return
c
;
}
/* if no room, give up (must have already done a gzungetc()) */
if
(
state
->
have
==
(
state
->
size
<<
1
))
{
gz_error
(
state
,
Z_
BUF
_ERROR
,
"out of room to push characters"
);
if
(
state
->
x
.
have
==
(
state
->
size
<<
1
))
{
gz_error
(
state
,
Z_
DATA
_ERROR
,
"out of room to push characters"
);
return
-
1
;
}
/* slide output data if needed and insert byte before existing data */
if
(
state
->
next
==
state
->
out
)
{
unsigned
char
*
src
=
state
->
out
+
state
->
have
;
if
(
state
->
x
.
next
==
state
->
out
)
{
unsigned
char
*
src
=
state
->
out
+
state
->
x
.
have
;
unsigned
char
*
dest
=
state
->
out
+
(
state
->
size
<<
1
);
while
(
src
>
state
->
out
)
*--
dest
=
*--
src
;
state
->
next
=
dest
;
state
->
x
.
next
=
dest
;
}
state
->
have
++
;
state
->
next
--
;
state
->
next
[
0
]
=
c
;
state
->
pos
--
;
state
->
x
.
have
++
;
state
->
x
.
next
--
;
state
->
x
.
next
[
0
]
=
c
;
state
->
x
.
pos
--
;
state
->
past
=
0
;
return
c
;
}
...
...
@@ -551,8 +485,9 @@ char * ZEXPORT gzgets(file, buf, len)
return
NULL
;
state
=
(
gz_statep
)
file
;
/* check that we're reading and that there's no error */
if
(
state
->
mode
!=
GZ_READ
||
state
->
err
!=
Z_OK
)
/* check that we're reading and that there's no (serious) error */
if
(
state
->
mode
!=
GZ_READ
||
(
state
->
err
!=
Z_OK
&&
state
->
err
!=
Z_BUF_ERROR
))
return
NULL
;
/* process a skip request */
...
...
@@ -569,32 +504,31 @@ char * ZEXPORT gzgets(file, buf, len)
left
=
(
unsigned
)
len
-
1
;
if
(
left
)
do
{
/* assure that something is in the output buffer */
if
(
state
->
have
==
0
)
{
if
(
gz_make
(
state
)
==
-
1
)
if
(
state
->
x
.
have
==
0
&&
gz_fetch
(
state
)
==
-
1
)
return
NULL
;
/* error */
if
(
state
->
have
==
0
)
{
/* end of file */
if
(
buf
==
str
)
/* got bupkus */
return
NULL
;
break
;
/* got something -- return it */
}
if
(
state
->
x
.
have
==
0
)
{
/* end of file */
state
->
past
=
1
;
/* read past end */
break
;
/* return what we have */
}
/* look for end-of-line in current output buffer */
n
=
state
->
have
>
left
?
left
:
state
->
have
;
eol
=
memchr
(
state
->
next
,
'\n'
,
n
);
n
=
state
->
x
.
have
>
left
?
left
:
state
->
x
.
have
;
eol
=
memchr
(
state
->
x
.
next
,
'\n'
,
n
);
if
(
eol
!=
NULL
)
n
=
(
unsigned
)(
eol
-
state
->
next
)
+
1
;
n
=
(
unsigned
)(
eol
-
state
->
x
.
next
)
+
1
;
/* copy through end-of-line, or remainder if not found */
memcpy
(
buf
,
state
->
next
,
n
);
state
->
have
-=
n
;
state
->
next
+=
n
;
state
->
pos
+=
n
;
memcpy
(
buf
,
state
->
x
.
next
,
n
);
state
->
x
.
have
-=
n
;
state
->
x
.
next
+=
n
;
state
->
x
.
pos
+=
n
;
left
-=
n
;
buf
+=
n
;
}
while
(
left
&&
eol
==
NULL
);
/* found end-of-line or out of space -- terminate string and return it */
/* return terminated string, or if nothing, end of file */
if
(
buf
==
str
)
return
NULL
;
buf
[
0
]
=
0
;
return
str
;
}
...
...
@@ -610,16 +544,12 @@ int ZEXPORT gzdirect(file)
return
0
;
state
=
(
gz_statep
)
file
;
/* check that we're reading */
if
(
state
->
mode
!=
GZ_READ
)
return
0
;
/* if the state is not known, but we can find out, then do so (this is
mainly for right after a gzopen() or gzdopen()) */
if
(
state
->
how
==
LOOK
&&
state
->
have
==
0
)
(
void
)
gz_
head
(
state
);
if
(
state
->
mode
==
GZ_READ
&&
state
->
how
==
LOOK
&&
state
->
x
.
have
==
0
)
(
void
)
gz_
look
(
state
);
/* return 1 if
reading direct, 0 if decompr
essing a gzip stream */
/* return 1 if
transparent, 0 if proc
essing a gzip stream */
return
state
->
direct
;
}
...
...
@@ -627,7 +557,7 @@ int ZEXPORT gzdirect(file)
int
ZEXPORT
gzclose_r
(
file
)
gzFile
file
;
{
int
ret
;
int
ret
,
err
;
gz_statep
state
;
/* get internal structure */
...
...
@@ -645,9 +575,10 @@ int ZEXPORT gzclose_r(file)
free
(
state
->
out
);
free
(
state
->
in
);
}
err
=
state
->
err
==
Z_BUF_ERROR
?
Z_BUF_ERROR
:
Z_OK
;
gz_error
(
state
,
Z_OK
,
NULL
);
free
(
state
->
path
);
ret
=
close
(
state
->
fd
);
free
(
state
);
return
ret
?
Z_ERRNO
:
Z_OK
;
return
ret
?
Z_ERRNO
:
err
;
}
3rdparty/zlib/gzwrite.c
View file @
19ce8c7f
/* gzwrite.c -- zlib functions for writing gzip files
* Copyright (C) 2004, 2005, 2010 Mark Adler
* Copyright (C) 2004, 2005, 2010
, 2011, 2012
Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -18,13 +18,18 @@ local int gz_init(state)
int
ret
;
z_streamp
strm
=
&
(
state
->
strm
);
/* allocate input
and output buffers
*/
/* allocate input
buffer
*/
state
->
in
=
malloc
(
state
->
want
);
if
(
state
->
in
==
NULL
)
{
gz_error
(
state
,
Z_MEM_ERROR
,
"out of memory"
);
return
-
1
;
}
/* only need output buffer and deflate state if compressing */
if
(
!
state
->
direct
)
{
/* allocate output buffer */
state
->
out
=
malloc
(
state
->
want
);
if
(
state
->
in
==
NULL
||
state
->
out
==
NULL
)
{
if
(
state
->
out
!=
NULL
)
free
(
state
->
out
);
if
(
state
->
in
!=
NULL
)
if
(
state
->
out
==
NULL
)
{
free
(
state
->
in
);
gz_error
(
state
,
Z_MEM_ERROR
,
"out of memory"
);
return
-
1
;
...
...
@@ -35,27 +40,33 @@ local int gz_init(state)
strm
->
zfree
=
Z_NULL
;
strm
->
opaque
=
Z_NULL
;
ret
=
deflateInit2
(
strm
,
state
->
level
,
Z_DEFLATED
,
15
+
16
,
8
,
state
->
strategy
);
MAX_WBITS
+
16
,
DEF_MEM_LEVEL
,
state
->
strategy
);
if
(
ret
!=
Z_OK
)
{
free
(
state
->
out
);
free
(
state
->
in
);
gz_error
(
state
,
Z_MEM_ERROR
,
"out of memory"
);
return
-
1
;
}
}
/* mark state as initialized */
state
->
size
=
state
->
want
;
/* initialize write buffer */
/* initialize write buffer if compressing */
if
(
!
state
->
direct
)
{
strm
->
avail_out
=
state
->
size
;
strm
->
next_out
=
state
->
out
;
state
->
next
=
strm
->
next_out
;
state
->
x
.
next
=
strm
->
next_out
;
}
return
0
;
}
/* Compress whatever is at avail_in and next_in and write to the output file.
Return -1 if there is an error writing to the output file, otherwise 0.
flush is assumed to be a valid deflate() flush value. If flush is Z_FINISH,
then the deflate() state is reset to start a new gzip stream. */
then the deflate() state is reset to start a new gzip stream. If gz->direct
is true, then simply write to the output file without compressing, and
ignore flush. */
local
int
gz_comp
(
state
,
flush
)
gz_statep
state
;
int
flush
;
...
...
@@ -68,6 +79,17 @@ local int gz_comp(state, flush)
if
(
state
->
size
==
0
&&
gz_init
(
state
)
==
-
1
)
return
-
1
;
/* write directly if requested */
if
(
state
->
direct
)
{
got
=
write
(
state
->
fd
,
strm
->
next_in
,
strm
->
avail_in
);
if
(
got
<
0
||
(
unsigned
)
got
!=
strm
->
avail_in
)
{
gz_error
(
state
,
Z_ERRNO
,
zstrerror
());
return
-
1
;
}
strm
->
avail_in
=
0
;
return
0
;
}
/* run deflate() on provided input until it produces no more output */
ret
=
Z_OK
;
do
{
...
...
@@ -75,8 +97,8 @@ local int gz_comp(state, flush)
doing Z_FINISH then don't write until we get to Z_STREAM_END */
if
(
strm
->
avail_out
==
0
||
(
flush
!=
Z_NO_FLUSH
&&
(
flush
!=
Z_FINISH
||
ret
==
Z_STREAM_END
)))
{
have
=
(
unsigned
)(
strm
->
next_out
-
state
->
next
);
if
(
have
&&
((
got
=
write
(
state
->
fd
,
state
->
next
,
have
))
<
0
||
have
=
(
unsigned
)(
strm
->
next_out
-
state
->
x
.
next
);
if
(
have
&&
((
got
=
write
(
state
->
fd
,
state
->
x
.
next
,
have
))
<
0
||
(
unsigned
)
got
!=
have
))
{
gz_error
(
state
,
Z_ERRNO
,
zstrerror
());
return
-
1
;
...
...
@@ -85,7 +107,7 @@ local int gz_comp(state, flush)
strm
->
avail_out
=
state
->
size
;
strm
->
next_out
=
state
->
out
;
}
state
->
next
=
strm
->
next_out
;
state
->
x
.
next
=
strm
->
next_out
;
}
/* compress */
...
...
@@ -131,7 +153,7 @@ local int gz_zero(state, len)
}
strm
->
avail_in
=
n
;
strm
->
next_in
=
state
->
in
;
state
->
pos
+=
n
;
state
->
x
.
pos
+=
n
;
if
(
gz_comp
(
state
,
Z_NO_FLUSH
)
==
-
1
)
return
-
1
;
len
-=
n
;
...
...
@@ -163,7 +185,7 @@ int ZEXPORT gzwrite(file, buf, len)
/* since an int is returned, make sure len fits in one, otherwise return
with an error (this avoids the flaw in the interface) */
if
((
int
)
len
<
0
)
{
gz_error
(
state
,
Z_
BUF
_ERROR
,
"requested length does not fit in int"
);
gz_error
(
state
,
Z_
DATA
_ERROR
,
"requested length does not fit in int"
);
return
0
;
}
...
...
@@ -193,7 +215,7 @@ int ZEXPORT gzwrite(file, buf, len)
n
=
len
;
memcpy
(
strm
->
next_in
+
strm
->
avail_in
,
buf
,
n
);
strm
->
avail_in
+=
n
;
state
->
pos
+=
n
;
state
->
x
.
pos
+=
n
;
buf
=
(
char
*
)
buf
+
n
;
len
-=
n
;
if
(
len
&&
gz_comp
(
state
,
Z_NO_FLUSH
)
==
-
1
)
...
...
@@ -208,7 +230,7 @@ int ZEXPORT gzwrite(file, buf, len)
/* directly compress user buffer to file */
strm
->
avail_in
=
len
;
strm
->
next_in
=
(
voidp
)
buf
;
state
->
pos
+=
len
;
state
->
x
.
pos
+=
len
;
if
(
gz_comp
(
state
,
Z_NO_FLUSH
)
==
-
1
)
return
0
;
}
...
...
@@ -249,15 +271,15 @@ int ZEXPORT gzputc(file, c)
if
(
strm
->
avail_in
==
0
)
strm
->
next_in
=
state
->
in
;
strm
->
next_in
[
strm
->
avail_in
++
]
=
c
;
state
->
pos
++
;
return
c
;
state
->
x
.
pos
++
;
return
c
&
0xff
;
}
/* no room in buffer or not initialized, use gz_write() */
buf
[
0
]
=
c
;
if
(
gzwrite
(
file
,
buf
,
1
)
!=
1
)
return
-
1
;
return
c
;
return
c
&
0xff
;
}
/* -- see zlib.h -- */
...
...
@@ -274,7 +296,7 @@ int ZEXPORT gzputs(file, str)
return
ret
==
0
&&
len
!=
0
?
-
1
:
ret
;
}
#if
def STDC
#if
defined(STDC) || defined(Z_HAVE_STDARG_H)
#include <stdarg.h>
/* -- see zlib.h -- */
...
...
@@ -342,11 +364,11 @@ int ZEXPORTVA gzprintf (gzFile file, const char *format, ...)
/* update buffer and position, defer compression until needed */
strm
->
avail_in
=
(
unsigned
)
len
;
strm
->
next_in
=
state
->
in
;
state
->
pos
+=
len
;
state
->
x
.
pos
+=
len
;
return
len
;
}
#else
/* !STDC */
#else
/* !STDC
&& !Z_HAVE_STDARG_H
*/
/* -- see zlib.h -- */
int
ZEXPORTVA
gzprintf
(
file
,
format
,
a1
,
a2
,
a3
,
a4
,
a5
,
a6
,
a7
,
a8
,
a9
,
a10
,
...
...
@@ -366,6 +388,10 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
state
=
(
gz_statep
)
file
;
strm
=
&
(
state
->
strm
);
/* check that can really pass pointer in ints */
if
(
sizeof
(
int
)
!=
sizeof
(
void
*
))
return
0
;
/* check that we're writing and that there's no error */
if
(
state
->
mode
!=
GZ_WRITE
||
state
->
err
!=
Z_OK
)
return
0
;
...
...
@@ -416,7 +442,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
/* update buffer and position, defer compression until needed */
strm
->
avail_in
=
(
unsigned
)
len
;
strm
->
next_in
=
state
->
in
;
state
->
pos
+=
len
;
state
->
x
.
pos
+=
len
;
return
len
;
}
...
...
@@ -500,7 +526,7 @@ int ZEXPORT gzsetparams(file, level, strategy)
int
ZEXPORT
gzclose_w
(
file
)
gzFile
file
;
{
int
ret
=
0
;
int
ret
=
Z_OK
;
gz_statep
state
;
/* get internal structure */
...
...
@@ -515,17 +541,53 @@ int ZEXPORT gzclose_w(file)
/* check for seek request */
if
(
state
->
seek
)
{
state
->
seek
=
0
;
ret
+=
gz_zero
(
state
,
state
->
skip
);
if
(
gz_zero
(
state
,
state
->
skip
)
==
-
1
)
ret
=
state
->
err
;
}
/* flush, free memory, and close file */
ret
+=
gz_comp
(
state
,
Z_FINISH
);
if
(
gz_comp
(
state
,
Z_FINISH
)
==
-
1
)
ret
=
state
->
err
;
if
(
!
state
->
direct
)
{
(
void
)
deflateEnd
(
&
(
state
->
strm
));
free
(
state
->
out
);
}
free
(
state
->
in
);
gz_error
(
state
,
Z_OK
,
NULL
);
free
(
state
->
path
);
ret
+=
close
(
state
->
fd
);
if
(
close
(
state
->
fd
)
==
-
1
)
ret
=
Z_ERRNO
;
free
(
state
);
return
ret
?
Z_ERRNO
:
Z_OK
;
return
ret
;
}
/* used by zlibVersion() to get the vsnprintf story from the horse's mouth */
unsigned
long
ZEXPORT
gzflags
()
{
unsigned
long
flags
=
0
;
#if defined(STDC) || defined(Z_HAVE_STDARG_H)
# ifdef NO_vsnprintf
flags
+=
1L
<<
25
;
# ifdef HAS_vsprintf_void
flags
+=
1L
<<
26
;
# endif
# else
# ifdef HAS_vsnprintf_void
flags
+=
1L
<<
26
;
# endif
# endif
#else
flags
+=
1L
<<
24
;
# ifdef NO_snprintf
flags
+=
1L
<<
25
;
# ifdef HAS_sprintf_void
flags
+=
1L
<<
26
;
# endif
# else
# ifdef HAS_snprintf_void
flags
+=
1L
<<
26
;
# endif
# endif
#endif
return
flags
;
}
3rdparty/zlib/infback.c
View file @
19ce8c7f
/* infback.c -- inflate using a call-back interface
* Copyright (C) 1995-20
09
Mark Adler
* Copyright (C) 1995-20
11
Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -42,10 +42,19 @@ int stream_size;
return
Z_STREAM_ERROR
;
strm
->
msg
=
Z_NULL
;
/* in case we return an error */
if
(
strm
->
zalloc
==
(
alloc_func
)
0
)
{
#ifdef Z_SOLO
return
Z_STREAM_ERROR
;
#else
strm
->
zalloc
=
zcalloc
;
strm
->
opaque
=
(
voidpf
)
0
;
#endif
}
if
(
strm
->
zfree
==
(
free_func
)
0
)
strm
->
zfree
=
zcfree
;
if
(
strm
->
zfree
==
(
free_func
)
0
)
#ifdef Z_SOLO
return
Z_STREAM_ERROR
;
#else
strm
->
zfree
=
zcfree
;
#endif
state
=
(
struct
inflate_state
FAR
*
)
ZALLOC
(
strm
,
1
,
sizeof
(
struct
inflate_state
));
if
(
state
==
Z_NULL
)
return
Z_MEM_ERROR
;
...
...
@@ -394,7 +403,6 @@ void FAR *out_desc;
PULLBYTE
();
}
if
(
here
.
val
<
16
)
{
NEEDBITS
(
here
.
bits
);
DROPBITS
(
here
.
bits
);
state
->
lens
[
state
->
have
++
]
=
here
.
val
;
}
...
...
3rdparty/zlib/inffixed.h
View file @
19ce8c7f
...
...
@@ -2,9 +2,9 @@
* Generated automatically by makefixed().
*/
/* WARNING: this file should *not* be used by applications.
It
is part of the implementation of the compression library and
is
subject to change. Applications should only use zlib.h.
/* WARNING: this file should *not* be used by applications.
It is part of the implementation of this library and is
subject to change. Applications should only use zlib.h.
*/
static
const
code
lenfix
[
512
]
=
{
...
...
3rdparty/zlib/inflate.c
View file @
19ce8c7f
/* inflate.c -- zlib decompression
* Copyright (C) 1995-201
0
Mark Adler
* Copyright (C) 1995-201
1
Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -100,7 +100,7 @@ local int updatewindow OF((z_streamp strm, unsigned out));
local
unsigned
syncsearch
OF
((
unsigned
FAR
*
have
,
unsigned
char
FAR
*
buf
,
unsigned
len
));
int
ZEXPORT
inflateReset
(
strm
)
int
ZEXPORT
inflateReset
Keep
(
strm
)
z_streamp
strm
;
{
struct
inflate_state
FAR
*
state
;
...
...
@@ -109,15 +109,13 @@ z_streamp strm;
state
=
(
struct
inflate_state
FAR
*
)
strm
->
state
;
strm
->
total_in
=
strm
->
total_out
=
state
->
total
=
0
;
strm
->
msg
=
Z_NULL
;
strm
->
adler
=
1
;
/* to support ill-conceived Java test suite */
if
(
state
->
wrap
)
/* to support ill-conceived Java test suite */
strm
->
adler
=
state
->
wrap
&
1
;
state
->
mode
=
HEAD
;
state
->
last
=
0
;
state
->
havedict
=
0
;
state
->
dmax
=
32768U
;
state
->
head
=
Z_NULL
;
state
->
wsize
=
0
;
state
->
whave
=
0
;
state
->
wnext
=
0
;
state
->
hold
=
0
;
state
->
bits
=
0
;
state
->
lencode
=
state
->
distcode
=
state
->
next
=
state
->
codes
;
...
...
@@ -127,6 +125,19 @@ z_streamp strm;
return
Z_OK
;
}
int
ZEXPORT
inflateReset
(
strm
)
z_streamp
strm
;
{
struct
inflate_state
FAR
*
state
;
if
(
strm
==
Z_NULL
||
strm
->
state
==
Z_NULL
)
return
Z_STREAM_ERROR
;
state
=
(
struct
inflate_state
FAR
*
)
strm
->
state
;
state
->
wsize
=
0
;
state
->
whave
=
0
;
state
->
wnext
=
0
;
return
inflateResetKeep
(
strm
);
}
int
ZEXPORT
inflateReset2
(
strm
,
windowBits
)
z_streamp
strm
;
int
windowBits
;
...
...
@@ -180,10 +191,19 @@ int stream_size;
if
(
strm
==
Z_NULL
)
return
Z_STREAM_ERROR
;
strm
->
msg
=
Z_NULL
;
/* in case we return an error */
if
(
strm
->
zalloc
==
(
alloc_func
)
0
)
{
#ifdef Z_SOLO
return
Z_STREAM_ERROR
;
#else
strm
->
zalloc
=
zcalloc
;
strm
->
opaque
=
(
voidpf
)
0
;
#endif
}
if
(
strm
->
zfree
==
(
free_func
)
0
)
strm
->
zfree
=
zcfree
;
if
(
strm
->
zfree
==
(
free_func
)
0
)
#ifdef Z_SOLO
return
Z_STREAM_ERROR
;
#else
strm
->
zfree
=
zcfree
;
#endif
state
=
(
struct
inflate_state
FAR
*
)
ZALLOC
(
strm
,
1
,
sizeof
(
struct
inflate_state
));
if
(
state
==
Z_NULL
)
return
Z_MEM_ERROR
;
...
...
@@ -321,8 +341,8 @@ void makefixed()
low
=
0
;
for
(;;)
{
if
((
low
%
7
)
==
0
)
printf
(
"
\n
"
);
printf
(
"{%u,%u,%d}"
,
state
.
lencode
[
low
].
op
,
state
.
lencode
[
low
].
bits
,
state
.
lencode
[
low
].
val
);
printf
(
"{%u,%u,%d}"
,
(
low
&
127
)
==
99
?
64
:
state
.
lencode
[
low
].
op
,
state
.
lencode
[
low
].
bits
,
state
.
lencode
[
low
].
val
);
if
(
++
low
==
size
)
break
;
putchar
(
','
);
}
...
...
@@ -925,7 +945,6 @@ int flush;
PULLBYTE
();
}
if
(
here
.
val
<
16
)
{
NEEDBITS
(
here
.
bits
);
DROPBITS
(
here
.
bits
);
state
->
lens
[
state
->
have
++
]
=
here
.
val
;
}
...
...
@@ -1214,7 +1233,8 @@ int flush;
*/
inf_leave
:
RESTORE
();
if
(
state
->
wsize
||
(
state
->
mode
<
CHECK
&&
out
!=
strm
->
avail_out
))
if
(
state
->
wsize
||
(
out
!=
strm
->
avail_out
&&
state
->
mode
<
BAD
&&
(
state
->
mode
<
CHECK
||
flush
!=
Z_FINISH
)))
if
(
updatewindow
(
strm
,
out
))
{
state
->
mode
=
MEM
;
return
Z_MEM_ERROR
;
...
...
@@ -1256,6 +1276,9 @@ uInt dictLength;
{
struct
inflate_state
FAR
*
state
;
unsigned
long
id
;
unsigned
char
*
next
;
unsigned
avail
;
int
ret
;
/* check state */
if
(
strm
==
Z_NULL
||
strm
->
state
==
Z_NULL
)
return
Z_STREAM_ERROR
;
...
...
@@ -1271,21 +1294,19 @@ uInt dictLength;
return
Z_DATA_ERROR
;
}
/* copy dictionary to window */
if
(
updatewindow
(
strm
,
strm
->
avail_out
))
{
/* copy dictionary to window using updatewindow(), which will amend the
existing dictionary if appropriate */
next
=
strm
->
next_out
;
avail
=
strm
->
avail_out
;
strm
->
next_out
=
(
Bytef
*
)
dictionary
+
dictLength
;
strm
->
avail_out
=
0
;
ret
=
updatewindow
(
strm
,
dictLength
);
strm
->
avail_out
=
avail
;
strm
->
next_out
=
next
;
if
(
ret
)
{
state
->
mode
=
MEM
;
return
Z_MEM_ERROR
;
}
if
(
dictLength
>
state
->
wsize
)
{
zmemcpy
(
state
->
window
,
dictionary
+
dictLength
-
state
->
wsize
,
state
->
wsize
);
state
->
whave
=
state
->
wsize
;
}
else
{
zmemcpy
(
state
->
window
+
state
->
wsize
-
dictLength
,
dictionary
,
dictLength
);
state
->
whave
=
dictLength
;
}
state
->
havedict
=
1
;
Tracev
((
stderr
,
"inflate: dictionary set
\n
"
));
return
Z_OK
;
...
...
@@ -1433,8 +1454,8 @@ z_streamp source;
}
/* copy state */
zmemcpy
(
dest
,
source
,
sizeof
(
z_stream
));
zmemcpy
(
copy
,
state
,
sizeof
(
struct
inflate_state
));
zmemcpy
(
(
voidpf
)
dest
,
(
voidpf
)
source
,
sizeof
(
z_stream
));
zmemcpy
(
(
voidpf
)
copy
,
(
voidpf
)
state
,
sizeof
(
struct
inflate_state
));
if
(
state
->
lencode
>=
state
->
codes
&&
state
->
lencode
<=
state
->
codes
+
ENOUGH
-
1
)
{
copy
->
lencode
=
copy
->
codes
+
(
state
->
lencode
-
state
->
codes
);
...
...
3rdparty/zlib/inftrees.c
View file @
19ce8c7f
/* inftrees.c -- generate Huffman trees for efficient decoding
* Copyright (C) 1995-201
0
Mark Adler
* Copyright (C) 1995-201
2
Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -9,7 +9,7 @@
#define MAXBITS 15
const
char
inflate_copyright
[]
=
" inflate 1.2.
5 Copyright 1995-2010
Mark Adler "
;
" inflate 1.2.
6 Copyright 1995-2012
Mark Adler "
;
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
...
...
@@ -62,7 +62,7 @@ unsigned short FAR *work;
35
,
43
,
51
,
59
,
67
,
83
,
99
,
115
,
131
,
163
,
195
,
227
,
258
,
0
,
0
};
static
const
unsigned
short
lext
[
31
]
=
{
/* Length codes 257..285 extra */
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
17
,
17
,
17
,
17
,
18
,
18
,
18
,
18
,
19
,
19
,
19
,
19
,
20
,
20
,
20
,
20
,
21
,
21
,
21
,
21
,
16
,
73
,
195
};
19
,
19
,
19
,
19
,
20
,
20
,
20
,
20
,
21
,
21
,
21
,
21
,
16
,
203
,
69
};
static
const
unsigned
short
dbase
[
32
]
=
{
/* Distance codes 0..29 base */
1
,
2
,
3
,
4
,
5
,
7
,
9
,
13
,
17
,
25
,
33
,
49
,
65
,
97
,
129
,
193
,
257
,
385
,
513
,
769
,
1025
,
1537
,
2049
,
3073
,
4097
,
6145
,
...
...
@@ -289,38 +289,14 @@ unsigned short FAR *work;
}
}
/*
Fill in rest of table for incomplete codes. This loop is similar to the
loop above in incrementing huff for table indices. It is assumed that
len is equal to curr + drop, so there is no loop needed to increment
through high index bits. When the current sub-table is filled, the loop
drops back to the root table to fill in any remaining entries there.
*/
/* fill in remaining table entry if code is incomplete (guaranteed to have
at most one remaining entry, since if the code is incomplete, the
maximum code length that was allowed to get this far is one bit) */
if
(
huff
!=
0
)
{
here
.
op
=
(
unsigned
char
)
64
;
/* invalid code marker */
here
.
bits
=
(
unsigned
char
)(
len
-
drop
);
here
.
val
=
(
unsigned
short
)
0
;
while
(
huff
!=
0
)
{
/* when done with sub-table, drop back to root table */
if
(
drop
!=
0
&&
(
huff
&
mask
)
!=
low
)
{
drop
=
0
;
len
=
root
;
next
=
*
table
;
here
.
bits
=
(
unsigned
char
)
len
;
}
/* put invalid code marker in table */
next
[
huff
>>
drop
]
=
here
;
/* backwards increment the len-bit code huff */
incr
=
1U
<<
(
len
-
1
);
while
(
huff
&
incr
)
incr
>>=
1
;
if
(
incr
!=
0
)
{
huff
&=
incr
-
1
;
huff
+=
incr
;
}
else
huff
=
0
;
next
[
huff
]
=
here
;
}
/* set return parameters */
...
...
3rdparty/zlib/trees.c
View file @
19ce8c7f
/* trees.c -- output deflated data using Huffman coding
* Copyright (C) 1995-201
0
Jean-loup Gailly
* Copyright (C) 1995-201
2
Jean-loup Gailly
* detect_data_type() function provided freely by Cosmin Truta, 2006
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -74,11 +74,6 @@ local const uch bl_order[BL_CODES]
* probability, to avoid transmitting the lengths for unused bit length codes.
*/
#define Buf_size (8 * 2*sizeof(char))
/* Number of bits used within bi_buf. (bi_buf might be implemented on
* more than 16 bits on some systems.)
*/
/* ===========================================================================
* Local data. These are initialized only once.
*/
...
...
@@ -399,7 +394,6 @@ void ZLIB_INTERNAL _tr_init(s)
s
->
bi_buf
=
0
;
s
->
bi_valid
=
0
;
s
->
last_eob_len
=
8
;
/* enough lookahead for inflate */
#ifdef DEBUG
s
->
compressed_len
=
0L
;
s
->
bits_sent
=
0L
;
...
...
@@ -882,16 +876,18 @@ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
copy_block
(
s
,
buf
,
(
unsigned
)
stored_len
,
1
);
/* with header */
}
/* ===========================================================================
* Flush the bits in the bit buffer to pending output (leaves at most 7 bits)
*/
void
ZLIB_INTERNAL
_tr_flush_bits
(
s
)
deflate_state
*
s
;
{
bi_flush
(
s
);
}
/* ===========================================================================
* Send one empty static block to give enough lookahead for inflate.
* This takes 10 bits, of which 7 may remain in the bit buffer.
* The current inflate code requires 9 bits of lookahead. If the
* last two codes for the previous block (real code plus EOB) were coded
* on 5 bits or less, inflate may have only 5+3 bits of lookahead to decode
* the last real code. In this case we send two empty static blocks instead
* of one. (There are no problems if the previous block is stored or fixed.)
* To simplify the code, we assume the worst case of last real code encoded
* on one bit only.
*/
void
ZLIB_INTERNAL
_tr_align
(
s
)
deflate_state
*
s
;
...
...
@@ -902,20 +898,6 @@ void ZLIB_INTERNAL _tr_align(s)
s
->
compressed_len
+=
10L
;
/* 3 for block type, 7 for EOB */
#endif
bi_flush
(
s
);
/* Of the 10 bits for the empty block, we have already sent
* (10 - bi_valid) bits. The lookahead for the last real code (before
* the EOB of the previous block) was thus at least one plus the length
* of the EOB plus what we have just sent of the empty static block.
*/
if
(
1
+
s
->
last_eob_len
+
10
-
s
->
bi_valid
<
9
)
{
send_bits
(
s
,
STATIC_TREES
<<
1
,
3
);
send_code
(
s
,
END_BLOCK
,
static_ltree
);
#ifdef DEBUG
s
->
compressed_len
+=
10L
;
#endif
bi_flush
(
s
);
}
s
->
last_eob_len
=
7
;
}
/* ===========================================================================
...
...
@@ -1118,7 +1100,6 @@ local void compress_block(s, ltree, dtree)
}
while
(
lx
<
s
->
last_lit
);
send_code
(
s
,
END_BLOCK
,
ltree
);
s
->
last_eob_len
=
ltree
[
END_BLOCK
].
Len
;
}
/* ===========================================================================
...
...
@@ -1226,7 +1207,6 @@ local void copy_block(s, buf, len, header)
int
header
;
/* true if block header must be written */
{
bi_windup
(
s
);
/* align on byte boundary */
s
->
last_eob_len
=
8
;
/* enough lookahead for inflate */
if
(
header
)
{
put_short
(
s
,
(
ush
)
len
);
...
...
3rdparty/zlib/zconf.h
→
3rdparty/zlib/zconf.h
.cmakein
View file @
19ce8c7f
/* zconf.h -- configuration of the zlib compression library
* Copyright (C) 1995-201
0
Jean-loup Gailly.
* Copyright (C) 1995-201
1
Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -7,6 +7,8 @@
#ifndef ZCONF_H
#define ZCONF_H
#cmakedefine Z_PREFIX
#cmakedefine Z_HAVE_UNISTD_H
/*
* If you *really* need a unique prefix for all types and library functions,
...
...
@@ -15,6 +17,7 @@
* 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 */
# define _dist_code z__dist_code
...
...
@@ -27,9 +30,11 @@
# define adler32 z_adler32
# define adler32_combine z_adler32_combine
# define adler32_combine64 z_adler32_combine64
# 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
...
...
@@ -40,13 +45,16 @@
# 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
...
...
@@ -59,8 +67,10 @@
# define gzdopen z_gzdopen
# define gzeof z_gzeof
# define gzerror z_gzerror
# define gzflags z_gzflags
# define gzflush z_gzflush
# define gzgetc z_gzgetc
# define gzgetc_ z_gzgetc_
# define gzgets z_gzgets
# define gzoffset z_gzoffset
# define gzoffset64 z_gzoffset64
...
...
@@ -78,6 +88,7 @@
# define gztell64 z_gztell64
# define gzungetc z_gzungetc
# define gzwrite z_gzwrite
# endif
# define inflate z_inflate
# define inflateBack z_inflateBack
# define inflateBackEnd z_inflateBackEnd
...
...
@@ -95,13 +106,18 @@
# define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint
# define inflateUndermine z_inflateUndermine
# define inflateResetKeep z_inflateResetKeep
# 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
# 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
...
...
@@ -111,9 +127,11 @@
# define alloc_func z_alloc_func
# define charf z_charf
# define free_func z_free_func
# ifndef Z_SOLO
# define gzFile z_gzFile
# define gz_header z_gz_header
# define gz_headerp z_gz_headerp
# endif
# define in_func z_in_func
# define intf z_intf
# define out_func z_out_func
...
...
@@ -126,7 +144,9 @@
# define voidpf z_voidpf
/* all zlib structs in zlib.h and zconf.h */
# ifndef Z_SOLO
# define gz_header_s z_gz_header_s
# endif
# define internal_state z_internal_state
#endif
...
...
@@ -197,6 +217,12 @@
# endif
#endif
#if defined(ZLIB_CONST) && !defined(z_const)
# define z_const const
#else
# define z_const
#endif
/* Some Mac compilers merge all .h files incorrectly: */
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
# define NO_DUMMY_DECL
...
...
@@ -243,6 +269,14 @@
# endif
#endif
#ifndef Z_ARG /* function prototypes for stdarg */
# if defined(STDC) || defined(Z_HAVE_STDARG_H)
# define Z_ARG(args) args
# else
# define Z_ARG(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
...
...
@@ -360,8 +394,14 @@ typedef uLong FAR uLongf;
# 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 <sys/types.h> /* for off_t */
# endif
#endif
/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
...
...
@@ -374,7 +414,11 @@ typedef uLong FAR uLongf;
# undef _LARGEFILE64_SOURCE
#endif
#if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
# define Z_LARGE
#endif
#if (defined(Z_HAVE_UNISTD_H) || defined(Z_LARGE)) && !defined(Z_SOLO)
# include <unistd.h> /* for SEEK_* and off_t */
# ifdef VMS
# include <unixio.h> /* for off_t */
...
...
@@ -384,7 +428,7 @@ typedef uLong FAR uLongf;
# endif
#endif
#if
ndef SEEK_SET
#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" */
...
...
@@ -394,18 +438,14 @@ typedef uLong FAR uLongf;
# define z_off_t long
#endif
#if
defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
#if
!defined(_WIN32) && (defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0)
# define z_off64_t off64_t
#else
# if defined(_WIN32)
# define z_off64_t __int64
# else
# define z_off64_t z_off_t
#endif
#if defined(__OS400__)
# define NO_vsnprintf
#endif
#if defined(__MVS__)
# define NO_vsnprintf
#endif
/* MVS linker does not support external names larger than 8 bytes */
...
...
3rdparty/zlib/zlib.h
View file @
19ce8c7f
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.2.
5, April 19th, 2010
version 1.2.
6, January 29th, 2012
Copyright (C) 1995-201
0
Jean-loup Gailly and Mark Adler
Copyright (C) 1995-201
2
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
...
...
@@ -24,8 +24,8 @@
The data format used by the zlib library is described by RFCs (Request for
Comments) 1950 to 1952 in the files http://
www.ietf.org/rfc/rfc1950.txt
(zlib format), rfc1951
.txt (deflate format) and rfc1952.txt
(gzip format).
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
...
...
@@ -37,11 +37,11 @@
extern
"C"
{
#endif
#define ZLIB_VERSION "1.2.
5
"
#define ZLIB_VERNUM 0x12
5
0
#define ZLIB_VERSION "1.2.
6
"
#define ZLIB_VERNUM 0x12
6
0
#define ZLIB_VER_MAJOR 1
#define ZLIB_VER_MINOR 2
#define ZLIB_VER_REVISION
5
#define ZLIB_VER_REVISION
6
#define ZLIB_VER_SUBREVISION 0
/*
...
...
@@ -83,15 +83,15 @@ typedef void (*free_func) OF((voidpf opaque, voidpf address));
struct
internal_state
;
typedef
struct
z_stream_s
{
Bytef
*
next_in
;
/* next input byte */
z_const
Bytef
*
next_in
;
/* next input byte */
uInt
avail_in
;
/* number of bytes available at next_in */
uLong
total_in
;
/* total n
b
of input bytes read so far */
uLong
total_in
;
/* total n
umber
of input bytes read so far */
Bytef
*
next_out
;
/* next output byte should be put there */
uInt
avail_out
;
/* remaining free space at next_out */
uLong
total_out
;
/* total n
b
of bytes output so far */
uLong
total_out
;
/* total n
umber
of bytes output so far */
char
*
msg
;
/* last error message, NULL if no error */
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 */
...
...
@@ -327,8 +327,9 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
Z_FINISH can be used immediately after deflateInit if all the compression
is to be done in a single step. In this case, avail_out must be at least the
value returned by deflateBound (see below). If deflate does not return
Z_STREAM_END, then it must be called again as described above.
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 adler32 checksum of all input read
so far (that is, total_in bytes).
...
...
@@ -454,20 +455,23 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
avail_out must be large enough to hold all the uncompressed data. (The size
of the uncompressed data may have been saved by the compressor for this
purpose.) The next operation on this stream must be inflateEnd to deallocate
the decompression state. The use of Z_FINISH is never required, but can be
used to inform inflate that a faster approach may be used for the single
inflate() call.
the decompression state. 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.
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 only effect of the flush parameter in this implementation
is on the return value of inflate(), as noted below, or when it returns early
because Z_BLOCK or Z_TREES is used.
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
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,
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 adler32
checksum is equal to that saved by the compressor and returns Z_STREAM_END
...
...
@@ -478,7 +482,9 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
initializing with inflateInit2(). Any information contained in the gzip
header is not retained, so applications that need that information should
instead use raw inflate, see inflateInit2() below, or inflateBack() and
perform their own processing of the gzip header and trailer.
perform their own processing of the gzip header and trailer. When processing
gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output
producted so far. The CRC-32 is checked against the gzip trailer.
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
...
...
@@ -580,10 +586,15 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
uInt
dictLength
));
/*
Initializes the compression dictionary from the given byte sequence
without producing any compressed output. This function must be called
immediately after deflateInit, deflateInit2 or deflateReset, before any call
of deflate. The compressor and decompressor must use exactly the same
dictionary (see inflateSetDictionary).
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
...
...
@@ -610,8 +621,8 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
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
the compression method is bsort). deflateSetDictionary does not
perform any compression: this will be done by deflate().
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
deflateCopy
OF
((
z_streamp
dest
,
...
...
@@ -688,8 +699,28 @@ ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
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().
*/
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
OF
((
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
OF
((
z_streamp
strm
,
int
bits
,
...
...
@@ -703,8 +734,9 @@ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
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, or Z_STREAM_ERROR if the source
stream state was inconsistent.
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
OF
((
z_streamp
strm
,
...
...
@@ -790,10 +822,11 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
can be determined from the adler32 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
immediately after inflateInit2() or inflateReset() and before any call of
inflate() to set the dictionary. The application must insure that the
dictionary that was used for compression is provided.
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
...
...
@@ -805,17 +838,21 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
ZEXTERN
int
ZEXPORT
inflateSync
OF
((
z_streamp
strm
));
/*
Skips invalid compressed data until a
full flush point (see above th
e
description of deflate with Z_FULL_FLUSH) can be found, or until all
Skips invalid compressed data until a
possible full flush point (see abov
e
for the
description of deflate with Z_FULL_FLUSH) can be found, or until all
available input is skipped. No output is provided.
inflateSync returns Z_OK if a 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 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.
inflateSync searches for a 00 00 FF FF pattern in the compressed data.
All full flush points have this pattern, but not all occurences 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 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
OF
((
z_streamp
dest
,
...
...
@@ -962,7 +999,7 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
See inflateBack() for the usage of these routines.
inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
the param
a
ters are invalid, Z_MEM_ERROR if the internal state could not be
the param
e
ters 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.
*/
...
...
@@ -1088,6 +1125,7 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
27-31: 0 (reserved)
*/
#ifndef Z_SOLO
/* utility functions */
...
...
@@ -1149,10 +1187,11 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
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.
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.
*/
/* gzip file access functions */
/*
...
...
@@ -1162,7 +1201,7 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
wrapper, documented in RFC 1952, wrapped around a deflate stream.
*/
typedef
voidp
gzFile
;
/*
opaque gzip file descriptor */
typedef
struct
gzFile_s
*
gzFile
;
/* semi-
opaque gzip file descriptor */
/*
ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
...
...
@@ -1172,13 +1211,25 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
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.) Also "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.
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.
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.
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
...
...
@@ -1197,7 +1248,11 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
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.
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
...
...
@@ -1235,14 +1290,26 @@ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
ZEXTERN
int
ZEXPORT
gzread
OF
((
gzFile
file
,
voidp
buf
,
unsigned
len
));
/*
Reads the given number of uncompressed bytes from the compressed file. If
the input file
wa
s not in gzip format, gzread copies the given number of
bytes into the buffer.
the input file
i
s 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, or failing that, reading the rest
of the input file directly without decompression. The entire input file
will be read if gzread is called until it returns less than the requested
len.
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.
...
...
@@ -1256,7 +1323,7 @@ ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
error.
*/
ZEXTERN
int
ZEXPORTVA
gzprintf
OF
((
gzFile
file
,
const
char
*
format
,
...));
ZEXTERN
int
ZEXPORTVA
gzprintf
Z_ARG
((
gzFile
file
,
const
char
*
format
,
...));
/*
Converts, formats, and writes the arguments to the compressed file under
control of the format string, as in fprintf. gzprintf returns the number of
...
...
@@ -1301,7 +1368,10 @@ ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
ZEXTERN
int
ZEXPORT
gzgetc
OF
((
gzFile
file
));
/*
Reads one byte from the compressed file. gzgetc returns this byte or -1
in case of end of file or error.
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
OF
((
int
c
,
gzFile
file
));
...
...
@@ -1397,9 +1467,7 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file));
ZEXTERN
int
ZEXPORT
gzdirect
OF
((
gzFile
file
));
/*
Returns true (1) if file is being copied directly while reading, or false
(0) if file is a gzip stream being decompressed. This state can change from
false to true while reading the input file if the end of a gzip stream is
reached, but is followed by data that is not another gzip stream.
(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.
...
...
@@ -1408,6 +1476,13 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
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
OF
((
gzFile
file
));
...
...
@@ -1419,7 +1494,8 @@ ZEXTERN int ZEXPORT gzclose OF((gzFile file));
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, or Z_OK on success.
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
OF
((
gzFile
file
));
...
...
@@ -1457,6 +1533,7 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
file that is being written concurrently.
*/
#endif
/* !Z_SOLO */
/* checksum functions */
...
...
@@ -1492,7 +1569,9 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
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.
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
OF
((
uLong
crc
,
const
Bytef
*
buf
,
uInt
len
));
...
...
@@ -1544,17 +1623,36 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
const
char
*
version
,
int
stream_size
));
#define deflateInit(strm, level) \
deflateInit_((strm), (level),
ZLIB_VERSION,
sizeof(z_stream))
deflateInit_((strm), (level),
ZLIB_VERSION, (int)
sizeof(z_stream))
#define inflateInit(strm) \
inflateInit_((strm),
ZLIB_VERSION,
sizeof(z_stream))
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,
sizeof(z_stream))
(strategy),
ZLIB_VERSION, (int)
sizeof(z_stream))
#define inflateInit2(strm, windowBits) \
inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
(int)sizeof(z_stream))
#define inflateBackInit(strm, windowBits, window) \
inflateBackInit_((strm), (windowBits), (window), \
ZLIB_VERSION, sizeof(z_stream))
ZLIB_VERSION, (int)sizeof(z_stream))
#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_
OF
((
gzFile
file
));
#define gzgetc(g) \
((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc_(g))
/* 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
...
...
@@ -1572,13 +1670,22 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
#endif
#if !defined(ZLIB_INTERNAL) && _FILE_OFFSET_BITS-0 == 64 && _LFS64_LARGEFILE-0
# 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
# else
# define gzopen gzopen64
# define gzseek gzseek64
# define gztell gztell64
# define gzoffset gzoffset64
# define adler32_combine adler32_combine64
# define crc32_combine crc32_combine64
# ifdef _LARGEFILE64_SOURCE
# endif
# ifndef _LARGEFILE64_SOURCE
ZEXTERN
gzFile
ZEXPORT
gzopen64
OF
((
const
char
*
,
const
char
*
));
ZEXTERN
z_off_t
ZEXPORT
gzseek64
OF
((
gzFile
,
z_off_t
,
int
));
ZEXTERN
z_off_t
ZEXPORT
gztell64
OF
((
gzFile
));
...
...
@@ -1595,6 +1702,13 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
ZEXTERN
uLong
ZEXPORT
crc32_combine
OF
((
uLong
,
uLong
,
z_off_t
));
#endif
#else
/* Z_SOLO */
ZEXTERN
uLong
ZEXPORT
adler32_combine
OF
((
uLong
,
uLong
,
z_off_t
));
ZEXTERN
uLong
ZEXPORT
crc32_combine
OF
((
uLong
,
uLong
,
z_off_t
));
#endif
/* !Z_SOLO */
/* hack for buggy compilers */
#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
struct
internal_state
{
int
dummy
;};
...
...
@@ -1605,6 +1719,11 @@ ZEXTERN const char * ZEXPORT zError OF((int));
ZEXTERN
int
ZEXPORT
inflateSyncPoint
OF
((
z_streamp
));
ZEXTERN
const
uLongf
*
ZEXPORT
get_crc_table
OF
((
void
));
ZEXTERN
int
ZEXPORT
inflateUndermine
OF
((
z_streamp
,
int
));
ZEXTERN
int
ZEXPORT
inflateResetKeep
OF
((
z_streamp
));
ZEXTERN
int
ZEXPORT
deflateResetKeep
OF
((
z_streamp
));
#ifndef Z_SOLO
ZEXTERN
unsigned
long
ZEXPORT
gzflags
OF
((
void
));
#endif
#ifdef __cplusplus
}
...
...
3rdparty/zlib/zutil.c
View file @
19ce8c7f
/* zutil.c -- target dependent utility functions for the compression library
* Copyright (C) 1995-2005, 2010 Jean-loup Gailly.
* Copyright (C) 1995-2005, 2010
, 2011
Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -85,37 +85,17 @@ uLong ZEXPORT zlibCompileFlags()
#ifdef FASTEST
flags
+=
1L
<<
21
;
#endif
#ifdef STDC
# ifdef NO_vsnprintf
flags
+=
1L
<<
25
;
# ifdef HAS_vsprintf_void
flags
+=
1L
<<
26
;
# endif
# else
# ifdef HAS_vsnprintf_void
flags
+=
1L
<<
26
;
# endif
# endif
#ifdef Z_SOLO
return
flags
;
#else
flags
+=
1L
<<
24
;
# ifdef NO_snprintf
flags
+=
1L
<<
25
;
# ifdef HAS_sprintf_void
flags
+=
1L
<<
26
;
# endif
# else
# ifdef HAS_snprintf_void
flags
+=
1L
<<
26
;
# endif
# endif
return
flags
+
gzflags
();
#endif
return
flags
;
}
#ifdef DEBUG
# ifndef verbose
# define verbose
-1
# define verbose
0
# endif
int
ZLIB_INTERNAL
z_verbose
=
verbose
;
...
...
@@ -181,6 +161,7 @@ void ZLIB_INTERNAL zmemzero(dest, len)
}
#endif
#ifndef Z_SOLO
#ifdef SYS16BIT
...
...
@@ -316,3 +297,5 @@ void ZLIB_INTERNAL zcfree (opaque, ptr)
}
#endif
/* MY_ZCALLOC */
#endif
/* !Z_SOLO */
3rdparty/zlib/zutil.h
View file @
19ce8c7f
/* zutil.h -- internal interface and configuration of the compression library
* Copyright (C) 1995-201
0
Jean-loup Gailly.
* Copyright (C) 1995-201
1
Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -21,14 +21,7 @@
#include "zlib.h"
#ifdef __arm__
# define z_off64_t z_off_t
#endif
#ifndef Z_TREES
#define Z_TREES 6
#endif
#ifdef STDC
#if defined(STDC) && !defined(Z_SOLO)
# if !(defined(_WIN32_WCE) && defined(_MSC_VER))
# include <stddef.h>
# endif
...
...
@@ -36,6 +29,10 @@
# include <stdlib.h>
#endif
#ifdef Z_SOLO
typedef
long
ptrdiff_t
;
/* guess -- will be caught if guess is wrong */
#endif
#ifndef local
# define local static
#endif
...
...
@@ -85,6 +82,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))
# define OS_CODE 0x00
# ifndef Z_SOLO
# if defined(__TURBOC__) || defined(__BORLANDC__)
# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
/* Allow compilation with ANSI keywords only enabled */
...
...
@@ -96,6 +94,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
# else
/* MSC or DJGPP */
# include <malloc.h>
# endif
# endif
#endif
#ifdef AMIGA
...
...
@@ -114,13 +113,14 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
#ifdef OS2
# define OS_CODE 0x06
# if
def M_I86
# if
defined(M_I86) && !defined(Z_SOLO)
# include <malloc.h>
# endif
#endif
#if defined(MACOS) || defined(TARGET_OS_MAC)
# define OS_CODE 0x07
# ifndef Z_SOLO
# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
# include <unix.h>
/* for fdopen */
# else
...
...
@@ -128,6 +128,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
# define fdopen(fd,mode) NULL
/* No fdopen() */
# endif
# endif
# endif
#endif
#ifdef TOPS20
...
...
@@ -160,14 +161,14 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
# endif
#endif
#if defined(__BORLANDC__)
#if defined(__BORLANDC__)
&& !defined(MSDOS)
#pragma warn -8004
#pragma warn -8008
#pragma warn -8066
#endif
/* provide prototypes for these when building zlib without LFS */
#if !defined(_
LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0
#if !defined(_
WIN32) && (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
ZEXTERN
uLong
ZEXPORT
adler32_combine64
OF
((
uLong
,
uLong
,
z_off_t
));
ZEXTERN
uLong
ZEXPORT
crc32_combine64
OF
((
uLong
,
uLong
,
z_off_t
));
#endif
...
...
@@ -184,42 +185,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
/* functions */
#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
# ifndef HAVE_VSNPRINTF
# define HAVE_VSNPRINTF
# endif
#endif
#if defined(__CYGWIN__)
# ifndef HAVE_VSNPRINTF
# define HAVE_VSNPRINTF
# endif
#endif
#ifndef HAVE_VSNPRINTF
# ifdef MSDOS
/* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
but for now we just assume it doesn't. */
# define NO_vsnprintf
# endif
# ifdef __TURBOC__
# define NO_vsnprintf
# endif
# ifdef WIN32
/* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
# if !defined(vsnprintf) && !defined(NO_vsnprintf)
# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 )
# define vsnprintf _vsnprintf
# endif
# endif
# endif
# ifdef __SASC
# define NO_vsnprintf
# endif
#endif
#ifdef VMS
# define NO_vsnprintf
#endif
#if defined(pyr)
#if defined(pyr) || defined(Z_SOLO)
# define NO_MEMCPY
#endif
#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
...
...
@@ -268,10 +234,11 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
# define Tracecv(c,x)
#endif
voidpf
ZLIB_INTERNAL
zcalloc
OF
((
voidpf
opaque
,
unsigned
items
,
#ifndef Z_SOLO
voidpf
ZLIB_INTERNAL
zcalloc
OF
((
voidpf
opaque
,
unsigned
items
,
unsigned
size
));
void
ZLIB_INTERNAL
zcfree
OF
((
voidpf
opaque
,
voidpf
ptr
));
void
ZLIB_INTERNAL
zcfree
OF
((
voidpf
opaque
,
voidpf
ptr
));
#endif
#define ZALLOC(strm, items, size) \
(*((strm)->zalloc))((strm)->opaque, (items), (size))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment