Compare commits
183 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
30a1c7065d | ||
|
|
1b09651f89 | ||
|
|
dee3d4ae36 | ||
|
|
4373bac37e | ||
|
|
816e34e1b5 | ||
|
|
dbcdbf8c41 | ||
|
|
6c9bd474aa | ||
|
|
1be1179083 | ||
|
|
cc538ebf79 | ||
|
|
6635b78987 | ||
|
|
3fb77ac08b | ||
|
|
ba04838a74 | ||
|
|
11f4065ea9 | ||
|
|
a5d803b7ef | ||
|
|
04afd39fcc | ||
|
|
2bd5bd78a6 | ||
|
|
8e16df2c3f | ||
|
|
a1af6e96e3 | ||
|
|
2c42538c2e | ||
|
|
49b5d79a3b | ||
|
|
dbe0bed739 | ||
|
|
a3881cc745 | ||
|
|
da32fd2892 | ||
|
|
50a1738fcb | ||
|
|
b18595d4c6 | ||
|
|
cb1c1a363e | ||
|
|
8dc21b17a6 | ||
|
|
9c08a82246 | ||
|
|
142f051fb2 | ||
|
|
39c7ed14ac | ||
|
|
c1e84b258c | ||
|
|
cd71ef3021 | ||
|
|
ca6e7a0d55 | ||
|
|
f8867924c1 | ||
|
|
5d5befa4c3 | ||
|
|
e076ca8e62 | ||
|
|
e2abd78a98 | ||
|
|
9f4d9052dc | ||
|
|
2cd90d2bf5 | ||
|
|
2e04ce0915 | ||
|
|
e3ba2a10ca | ||
|
|
41a18e1d7e | ||
|
|
755c41dc4b | ||
|
|
53bfe01cea | ||
|
|
dab7531ecc | ||
|
|
2547c6c81f | ||
|
|
513dfcc00e | ||
|
|
05de38d11e | ||
|
|
80f3e39eb8 | ||
|
|
3f4339b61b | ||
|
|
e6d2a8471b | ||
|
|
8435052a6b | ||
|
|
d63c888039 | ||
|
|
10fca844b1 | ||
|
|
a75d6ea070 | ||
|
|
660103339f | ||
|
|
d81e7213b7 | ||
|
|
6838df9246 | ||
|
|
d1714a57c5 | ||
|
|
455adc3029 | ||
|
|
eee7b9e576 | ||
|
|
5bbdc122ad | ||
|
|
72e2c8f088 | ||
|
|
94acb3c1a0 | ||
|
|
75143f819f | ||
|
|
7d45cf5a1d | ||
|
|
1a4ba8cd91 | ||
|
|
9894494537 | ||
|
|
fc68b60086 | ||
|
|
2dadd2fab4 | ||
|
|
f9e4edc996 | ||
|
|
55b8b5fec1 | ||
|
|
a8d23bb675 | ||
|
|
98e5787e1b | ||
|
|
3fb727c34d | ||
|
|
5dac2aa007 | ||
|
|
7b3f71ba5f | ||
|
|
e75de023b6 | ||
|
|
68a02240a6 | ||
|
|
5461db945c | ||
|
|
22eb01184f | ||
|
|
8fbd9f1340 | ||
|
|
520561c577 | ||
|
|
32d8a5379e | ||
|
|
f0cff24214 | ||
|
|
81015585d2 | ||
|
|
ad88c19baa | ||
|
|
17741efa02 | ||
|
|
de6cb6fe5c | ||
|
|
601b542a9d | ||
|
|
0458bbf2c0 | ||
|
|
06c0e754ce | ||
|
|
9cdb49c96e | ||
|
|
09bbe4c7f0 | ||
|
|
b9a778a2b8 | ||
|
|
4a9e4dff0d | ||
|
|
5c312df969 | ||
|
|
e1f45fed54 | ||
|
|
509c1d2860 | ||
|
|
2d55657c03 | ||
|
|
5a5dd2c793 | ||
|
|
eb33abcc55 | ||
|
|
ce0ca940c2 | ||
|
|
c3799a2480 | ||
|
|
0ddfbd2346 | ||
|
|
defd366a41 | ||
|
|
68f64498c2 | ||
|
|
4f5779a8e7 | ||
|
|
0b828b4aa6 | ||
|
|
8f5eceefe8 | ||
|
|
263b1a05b0 | ||
|
|
19761b8506 | ||
|
|
9d55abc969 | ||
|
|
f1ebdd6a9c | ||
|
|
bafcad9028 | ||
|
|
b745a48f41 | ||
|
|
a8bd629c4e | ||
|
|
7de4b03b38 | ||
|
|
e7289ed5f7 | ||
|
|
3d85f02a09 | ||
|
|
df60b50769 | ||
|
|
fe61dfb8a2 | ||
|
|
4ab814df83 | ||
|
|
2556706d67 | ||
|
|
850a198ff1 | ||
|
|
377173b57e | ||
|
|
98f5779f42 | ||
|
|
70e3b1ca56 | ||
|
|
421c7a61f0 | ||
|
|
fb00fda903 | ||
|
|
afe7cf78d5 | ||
|
|
fbac04f666 | ||
|
|
014967ace3 | ||
|
|
de32a2d749 | ||
|
|
383d2cdab7 | ||
|
|
1b57de3aef | ||
|
|
0cbad869b0 | ||
|
|
15b5671b78 | ||
|
|
6715208bdb | ||
|
|
d169dd7300 | ||
|
|
9e50ed8ef1 | ||
|
|
e8576790be | ||
|
|
6dbf1d1026 | ||
|
|
5ab9f47745 | ||
|
|
5b48d061c8 | ||
|
|
d66a307941 | ||
|
|
1bd2fa1b24 | ||
|
|
77b47d55f1 | ||
|
|
f442c1e89e | ||
|
|
518ad0177a | ||
|
|
af030e4273 | ||
|
|
26a99cd895 | ||
|
|
3c9d261809 | ||
|
|
be959acf80 | ||
|
|
00c836e325 | ||
|
|
0956bd23dd | ||
|
|
34538d8a93 | ||
|
|
64eccafa78 | ||
|
|
7142fcfeed | ||
|
|
a4f7c65374 | ||
|
|
8768ba98af | ||
|
|
acfc85772a | ||
|
|
8e0d212910 | ||
|
|
50e440f081 | ||
|
|
5ad116abda | ||
|
|
a9ae24b653 | ||
|
|
8824da8f01 | ||
|
|
0a81dc026c | ||
|
|
f32370e542 | ||
|
|
1f5827155d | ||
|
|
1250ac745d | ||
|
|
5cf0930ba5 | ||
|
|
faa03d5141 | ||
|
|
ae1de165d7 | ||
|
|
06223a362e | ||
|
|
d07d852bb4 | ||
|
|
d6cbbd5c64 | ||
|
|
10daf0d4d7 | ||
|
|
9712272c78 | ||
|
|
7301420248 | ||
|
|
a7d70663cf | ||
|
|
f4498bea28 | ||
|
|
7147f24cd7 |
23
.gitignore
vendored
Normal file
23
.gitignore
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
*.diff
|
||||||
|
*.patch
|
||||||
|
*.orig
|
||||||
|
*.rej
|
||||||
|
|
||||||
|
*~
|
||||||
|
*.a
|
||||||
|
*.lo
|
||||||
|
*.o
|
||||||
|
*.dylib
|
||||||
|
|
||||||
|
*.gcda
|
||||||
|
*.gcno
|
||||||
|
*.gcov
|
||||||
|
|
||||||
|
/example
|
||||||
|
/example64
|
||||||
|
/examplesh
|
||||||
|
/libz.so*
|
||||||
|
/minigzip
|
||||||
|
/minigzip64
|
||||||
|
/minigzipsh
|
||||||
|
/zlib.pc
|
||||||
@@ -3,9 +3,13 @@ set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
|
|||||||
|
|
||||||
project(zlib C)
|
project(zlib C)
|
||||||
|
|
||||||
if(NOT DEFINED BUILD_SHARED_LIBS)
|
set(VERSION "1.2.7")
|
||||||
option(BUILD_SHARED_LIBS "Build a shared library form of zlib" ON)
|
|
||||||
endif()
|
set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
|
||||||
|
set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
|
||||||
|
set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
|
||||||
|
set(INSTALL_MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Installation directory for manual pages")
|
||||||
|
set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
|
||||||
|
|
||||||
include(CheckTypeSize)
|
include(CheckTypeSize)
|
||||||
include(CheckFunctionExists)
|
include(CheckFunctionExists)
|
||||||
@@ -56,23 +60,27 @@ if(MSVC)
|
|||||||
set(CMAKE_DEBUG_POSTFIX "d")
|
set(CMAKE_DEBUG_POSTFIX "d")
|
||||||
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
|
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
|
||||||
add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
|
add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
|
||||||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
|
if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
|
||||||
# If we're doing an out of source build and the user has a zconf.h
|
# If we're doing an out of source build and the user has a zconf.h
|
||||||
# in their source tree...
|
# in their source tree...
|
||||||
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h)
|
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h)
|
||||||
message(FATAL_ERROR
|
message(STATUS "Renaming")
|
||||||
"You must remove ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h "
|
message(STATUS " ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h")
|
||||||
"from the source tree. This file is included with zlib "
|
message(STATUS "to 'zconf.h.included' because this file is included with zlib")
|
||||||
"but CMake generates this file for you automatically "
|
message(STATUS "but CMake generates it automatically in the build directory.")
|
||||||
"in the build directory.")
|
file(RENAME ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.included)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
|
set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc)
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
|
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
${ZLIB_PC} @ONLY)
|
||||||
|
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
|
||||||
|
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
|
||||||
#============================================================================
|
#============================================================================
|
||||||
@@ -110,18 +118,27 @@ set(ZLIB_SRCS
|
|||||||
trees.c
|
trees.c
|
||||||
uncompr.c
|
uncompr.c
|
||||||
zutil.c
|
zutil.c
|
||||||
win32/zlib1.rc
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(NOT MINGW)
|
||||||
|
set(ZLIB_SRCS ${ZLIB_SRCS}
|
||||||
|
win32/zlib1.rc # If present will override custom build rule below.
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
|
# parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
|
||||||
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents)
|
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents)
|
||||||
string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([0-9A-Za-z.]+)\".*"
|
string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*"
|
||||||
"\\1" ZLIB_FULL_VERSION ${_zlib_h_contents})
|
"\\1" ZLIB_FULL_VERSION ${_zlib_h_contents})
|
||||||
|
|
||||||
if(MINGW)
|
if(MINGW)
|
||||||
# This gets us DLL resource information when compiling on MinGW.
|
# This gets us DLL resource information when compiling on MinGW.
|
||||||
|
if(NOT CMAKE_RC_COMPILER)
|
||||||
|
SET(CMAKE_RC_COMPILER windres.exe)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
|
||||||
COMMAND windres.exe
|
COMMAND ${CMAKE_RC_COMPILER}
|
||||||
-D GCC_WINDRES
|
-D GCC_WINDRES
|
||||||
-I ${CMAKE_CURRENT_SOURCE_DIR}
|
-I ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
-I ${CMAKE_CURRENT_BINARY_DIR}
|
-I ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
@@ -130,9 +147,9 @@ if(MINGW)
|
|||||||
set(ZLIB_SRCS ${ZLIB_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
|
set(ZLIB_SRCS ${ZLIB_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
|
||||||
endif(MINGW)
|
endif(MINGW)
|
||||||
|
|
||||||
add_library(zlib ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
|
add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
|
||||||
|
add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
|
||||||
set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
|
set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
|
||||||
|
|
||||||
set_target_properties(zlib PROPERTIES SOVERSION 1)
|
set_target_properties(zlib PROPERTIES SOVERSION 1)
|
||||||
|
|
||||||
if(NOT CYGWIN)
|
if(NOT CYGWIN)
|
||||||
@@ -148,43 +165,47 @@ endif()
|
|||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
# On unix-like platforms the library is almost always called libz
|
# On unix-like platforms the library is almost always called libz
|
||||||
set_target_properties(zlib PROPERTIES OUTPUT_NAME z)
|
set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z)
|
||||||
|
set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,${CMAKE_CURRENT_SOURCE_DIR}/zlib.map")
|
||||||
elseif(BUILD_SHARED_LIBS AND WIN32)
|
elseif(BUILD_SHARED_LIBS AND WIN32)
|
||||||
# Creates zlib1.dll when building shared library version
|
# Creates zlib1.dll when building shared library version
|
||||||
set_target_properties(zlib PROPERTIES SUFFIX "1.dll")
|
set_target_properties(zlib PROPERTIES SUFFIX "1.dll")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
|
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
|
||||||
install(TARGETS zlib
|
install(TARGETS zlib zlibstatic
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
|
||||||
ARCHIVE DESTINATION lib
|
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
|
||||||
LIBRARY DESTINATION lib )
|
LIBRARY DESTINATION "${INSTALL_LIB_DIR}" )
|
||||||
endif()
|
endif()
|
||||||
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
|
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
|
||||||
install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION include)
|
install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}")
|
||||||
endif()
|
endif()
|
||||||
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
|
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
|
||||||
install(FILES zlib.3 DESTINATION share/man/man3)
|
install(FILES zlib.3 DESTINATION "${INSTALL_MAN_DIR}/man3")
|
||||||
|
endif()
|
||||||
|
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
|
||||||
|
install(FILES ${ZLIB_PC} DESTINATION "${INSTALL_PKGCONFIG_DIR}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#============================================================================
|
#============================================================================
|
||||||
# Example binaries
|
# Example binaries
|
||||||
#============================================================================
|
#============================================================================
|
||||||
|
|
||||||
add_executable(example example.c)
|
add_executable(example test/example.c)
|
||||||
target_link_libraries(example zlib)
|
target_link_libraries(example zlib)
|
||||||
add_test(example example)
|
add_test(example example)
|
||||||
|
|
||||||
add_executable(minigzip minigzip.c)
|
add_executable(minigzip test/minigzip.c)
|
||||||
target_link_libraries(minigzip zlib)
|
target_link_libraries(minigzip zlib)
|
||||||
|
|
||||||
if(HAVE_OFF64_T)
|
if(HAVE_OFF64_T)
|
||||||
add_executable(example64 example.c)
|
add_executable(example64 test/example.c)
|
||||||
target_link_libraries(example64 zlib)
|
target_link_libraries(example64 zlib)
|
||||||
set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
|
set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
|
||||||
add_test(example64 example64)
|
add_test(example64 example64)
|
||||||
|
|
||||||
add_executable(minigzip64 minigzip.c)
|
add_executable(minigzip64 test/minigzip.c)
|
||||||
target_link_libraries(minigzip64 zlib)
|
target_link_libraries(minigzip64 zlib)
|
||||||
set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
|
set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
259
ChangeLog
259
ChangeLog
@@ -1,6 +1,261 @@
|
|||||||
|
|
||||||
ChangeLog file for zlib
|
ChangeLog file for zlib
|
||||||
|
|
||||||
|
Changes in 1.2.7 (2 May 2012)
|
||||||
|
- Replace use of memmove() with a simple copy for portability
|
||||||
|
- Test for existence of strerror
|
||||||
|
- Restore gzgetc_ for backward compatibility with 1.2.6
|
||||||
|
- Fix build with non-GNU make on Solaris
|
||||||
|
- Require gcc 4.0 or later on Mac OS X to use the hidden attribute
|
||||||
|
- Include unistd.h for Watcom C
|
||||||
|
- Use __WATCOMC__ instead of __WATCOM__
|
||||||
|
- Do not use the visibility attribute if NO_VIZ defined
|
||||||
|
- Improve the detection of no hidden visibility attribute
|
||||||
|
- Avoid using __int64 for gcc or solo compilation
|
||||||
|
- Cast to char * in gzprintf to avoid warnings [Zinser]
|
||||||
|
- Fix make_vms.com for VAX [Zinser]
|
||||||
|
- Don't use library or built-in byte swaps
|
||||||
|
- Simplify test and use of gcc hidden attribute
|
||||||
|
- Fix bug in gzclose_w() when gzwrite() fails to allocate memory
|
||||||
|
- Add "x" (O_EXCL) and "e" (O_CLOEXEC) modes support to gzopen()
|
||||||
|
- Fix bug in test/minigzip.c for configure --solo
|
||||||
|
- Fix contrib/vstudio project link errors [Mohanathas]
|
||||||
|
- Add ability to choose the builder in make_vms.com [Schweda]
|
||||||
|
- Add DESTDIR support to mingw32 win32/Makefile.gcc
|
||||||
|
- Fix comments in win32/Makefile.gcc for proper usage
|
||||||
|
- Allow overriding the default install locations for cmake
|
||||||
|
- Generate and install the pkg-config file with cmake
|
||||||
|
- Build both a static and a shared version of zlib with cmake
|
||||||
|
- Include version symbols for cmake builds
|
||||||
|
- If using cmake with MSVC, add the source directory to the includes
|
||||||
|
- Remove unneeded EXTRA_CFLAGS from win32/Makefile.gcc [Truta]
|
||||||
|
- Move obsolete emx makefile to old [Truta]
|
||||||
|
- Allow the use of -Wundef when compiling or using zlib
|
||||||
|
- Avoid the use of the -u option with mktemp
|
||||||
|
- Improve inflate() documentation on the use of Z_FINISH
|
||||||
|
- Recognize clang as gcc
|
||||||
|
- Add gzopen_w() in Windows for wide character path names
|
||||||
|
- Rename zconf.h in CMakeLists.txt to move it out of the way
|
||||||
|
- Add source directory in CMakeLists.txt for building examples
|
||||||
|
- Look in build directory for zlib.pc in CMakeLists.txt
|
||||||
|
- Remove gzflags from zlibvc.def in vc9 and vc10
|
||||||
|
- Fix contrib/minizip compilation in the MinGW environment
|
||||||
|
- Update ./configure for Solaris, support --64 [Mooney]
|
||||||
|
- Remove -R. from Solaris shared build (possible security issue)
|
||||||
|
- Avoid race condition for parallel make (-j) running example
|
||||||
|
- Fix type mismatch between get_crc_table() and crc_table
|
||||||
|
- Fix parsing of version with "-" in CMakeLists.txt [Snider, Ziegler]
|
||||||
|
- Fix the path to zlib.map in CMakeLists.txt
|
||||||
|
- Force the native libtool in Mac OS X to avoid GNU libtool [Beebe]
|
||||||
|
- Add instructions to win32/Makefile.gcc for shared install [Torri]
|
||||||
|
|
||||||
|
Changes in 1.2.6.1 (12 Feb 2012)
|
||||||
|
- Avoid the use of the Objective-C reserved name "id"
|
||||||
|
- Include io.h in gzguts.h for Microsoft compilers
|
||||||
|
- Fix problem with ./configure --prefix and gzgetc macro
|
||||||
|
- Include gz_header definition when compiling zlib solo
|
||||||
|
- Put gzflags() functionality back in zutil.c
|
||||||
|
- Avoid library header include in crc32.c for Z_SOLO
|
||||||
|
- Use name in GCC_CLASSIC as C compiler for coverage testing, if set
|
||||||
|
- Minor cleanup in contrib/minizip/zip.c [Vollant]
|
||||||
|
- Update make_vms.com [Zinser]
|
||||||
|
- Remove unnecessary gzgetc_ function
|
||||||
|
- Use optimized byte swap operations for Microsoft and GNU [Snyder]
|
||||||
|
- Fix minor typo in zlib.h comments [Rzesniowiecki]
|
||||||
|
|
||||||
|
Changes in 1.2.6 (29 Jan 2012)
|
||||||
|
- Update the Pascal interface in contrib/pascal
|
||||||
|
- Fix function numbers for gzgetc_ in zlibvc.def files
|
||||||
|
- Fix configure.ac for contrib/minizip [Schiffer]
|
||||||
|
- Fix large-entry detection in minizip on 64-bit systems [Schiffer]
|
||||||
|
- Have ./configure use the compiler return code for error indication
|
||||||
|
- Fix CMakeLists.txt for cross compilation [McClure]
|
||||||
|
- Fix contrib/minizip/zip.c for 64-bit architectures [Dalsnes]
|
||||||
|
- Fix compilation of contrib/minizip on FreeBSD [Marquez]
|
||||||
|
- Correct suggested usages in win32/Makefile.msc [Shachar, Horvath]
|
||||||
|
- Include io.h for Turbo C / Borland C on all platforms [Truta]
|
||||||
|
- Make version explicit in contrib/minizip/configure.ac [Bosmans]
|
||||||
|
- Avoid warning for no encryption in contrib/minizip/zip.c [Vollant]
|
||||||
|
- Minor cleanup up contrib/minizip/unzip.c [Vollant]
|
||||||
|
- Fix bug when compiling minizip with C++ [Vollant]
|
||||||
|
- Protect for long name and extra fields in contrib/minizip [Vollant]
|
||||||
|
- Avoid some warnings in contrib/minizip [Vollant]
|
||||||
|
- Add -I../.. -L../.. to CFLAGS for minizip and miniunzip
|
||||||
|
- Add missing libs to minizip linker command
|
||||||
|
- Add support for VPATH builds in contrib/minizip
|
||||||
|
- Add an --enable-demos option to contrib/minizip/configure
|
||||||
|
- Add the generation of configure.log by ./configure
|
||||||
|
- Exit when required parameters not provided to win32/Makefile.gcc
|
||||||
|
- Have gzputc return the character written instead of the argument
|
||||||
|
- Use the -m option on ldconfig for BSD systems [Tobias]
|
||||||
|
- Correct in zlib.map when deflateResetKeep was added
|
||||||
|
|
||||||
|
Changes in 1.2.5.3 (15 Jan 2012)
|
||||||
|
- Restore gzgetc function for binary compatibility
|
||||||
|
- Do not use _lseeki64 under Borland C++ [Truta]
|
||||||
|
- Update win32/Makefile.msc to build test/*.c [Truta]
|
||||||
|
- Remove old/visualc6 given CMakefile and other alternatives
|
||||||
|
- Update AS400 build files and documentation [Monnerat]
|
||||||
|
- Update win32/Makefile.gcc to build test/*.c [Truta]
|
||||||
|
- Permit stronger flushes after Z_BLOCK flushes
|
||||||
|
- Avoid extraneous empty blocks when doing empty flushes
|
||||||
|
- Permit Z_NULL arguments to deflatePending
|
||||||
|
- Allow deflatePrime() to insert bits in the middle of a stream
|
||||||
|
- Remove second empty static block for Z_PARTIAL_FLUSH
|
||||||
|
- Write out all of the available bits when using Z_BLOCK
|
||||||
|
- Insert the first two strings in the hash table after a flush
|
||||||
|
|
||||||
|
Changes in 1.2.5.2 (17 Dec 2011)
|
||||||
|
- fix ld error: unable to find version dependency 'ZLIB_1.2.5'
|
||||||
|
- use relative symlinks for shared libs
|
||||||
|
- Avoid searching past window for Z_RLE strategy
|
||||||
|
- Assure that high-water mark initialization is always applied in deflate
|
||||||
|
- Add assertions to fill_window() in deflate.c to match comments
|
||||||
|
- Update python link in README
|
||||||
|
- Correct spelling error in gzread.c
|
||||||
|
- Fix bug in gzgets() for a concatenated empty gzip stream
|
||||||
|
- Correct error in comment for gz_make()
|
||||||
|
- Change gzread() and related to ignore junk after gzip streams
|
||||||
|
- Allow gzread() and related to continue after gzclearerr()
|
||||||
|
- Allow gzrewind() and gzseek() after a premature end-of-file
|
||||||
|
- Simplify gzseek() now that raw after gzip is ignored
|
||||||
|
- Change gzgetc() to a macro for speed (~40% speedup in testing)
|
||||||
|
- Fix gzclose() to return the actual error last encountered
|
||||||
|
- Always add large file support for windows
|
||||||
|
- Include zconf.h for windows large file support
|
||||||
|
- Include zconf.h.cmakein for windows large file support
|
||||||
|
- Update zconf.h.cmakein on make distclean
|
||||||
|
- Merge vestigial vsnprintf determination from zutil.h to gzguts.h
|
||||||
|
- Clarify how gzopen() appends in zlib.h comments
|
||||||
|
- Correct documentation of gzdirect() since junk at end now ignored
|
||||||
|
- Add a transparent write mode to gzopen() when 'T' is in the mode
|
||||||
|
- Update python link in zlib man page
|
||||||
|
- Get inffixed.h and MAKEFIXED result to match
|
||||||
|
- Add a ./config --solo option to make zlib subset with no libary use
|
||||||
|
- Add undocumented inflateResetKeep() function for CAB file decoding
|
||||||
|
- Add --cover option to ./configure for gcc coverage testing
|
||||||
|
- Add #define ZLIB_CONST option to use const in the z_stream interface
|
||||||
|
- Add comment to gzdopen() in zlib.h to use dup() when using fileno()
|
||||||
|
- Note behavior of uncompress() to provide as much data as it can
|
||||||
|
- Add files in contrib/minizip to aid in building libminizip
|
||||||
|
- Split off AR options in Makefile.in and configure
|
||||||
|
- Change ON macro to Z_ARG to avoid application conflicts
|
||||||
|
- Facilitate compilation with Borland C++ for pragmas and vsnprintf
|
||||||
|
- Include io.h for Turbo C / Borland C++
|
||||||
|
- Move example.c and minigzip.c to test/
|
||||||
|
- Simplify incomplete code table filling in inflate_table()
|
||||||
|
- Remove code from inflate.c and infback.c that is impossible to execute
|
||||||
|
- Test the inflate code with full coverage
|
||||||
|
- Allow deflateSetDictionary, inflateSetDictionary at any time (in raw)
|
||||||
|
- Add deflateResetKeep and fix inflateResetKeep to retain dictionary
|
||||||
|
- Fix gzwrite.c to accommodate reduced memory zlib compilation
|
||||||
|
- Have inflate() with Z_FINISH avoid the allocation of a window
|
||||||
|
- Do not set strm->adler when doing raw inflate
|
||||||
|
- Fix gzeof() to behave just like feof() when read is not past end of file
|
||||||
|
- Fix bug in gzread.c when end-of-file is reached
|
||||||
|
- Avoid use of Z_BUF_ERROR in gz* functions except for premature EOF
|
||||||
|
- Document gzread() capability to read concurrently written files
|
||||||
|
- Remove hard-coding of resource compiler in CMakeLists.txt [Blammo]
|
||||||
|
|
||||||
|
Changes in 1.2.5.1 (10 Sep 2011)
|
||||||
|
- Update FAQ entry on shared builds (#13)
|
||||||
|
- Avoid symbolic argument to chmod in Makefile.in
|
||||||
|
- Fix bug and add consts in contrib/puff [Oberhumer]
|
||||||
|
- Update contrib/puff/zeros.raw test file to have all block types
|
||||||
|
- Add full coverage test for puff in contrib/puff/Makefile
|
||||||
|
- Fix static-only-build install in Makefile.in
|
||||||
|
- Fix bug in unzGetCurrentFileInfo() in contrib/minizip [Kuno]
|
||||||
|
- Add libz.a dependency to shared in Makefile.in for parallel builds
|
||||||
|
- Spell out "number" (instead of "nb") in zlib.h for total_in, total_out
|
||||||
|
- Replace $(...) with `...` in configure for non-bash sh [Bowler]
|
||||||
|
- Add darwin* to Darwin* and solaris* to SunOS\ 5* in configure [Groffen]
|
||||||
|
- Add solaris* to Linux* in configure to allow gcc use [Groffen]
|
||||||
|
- Add *bsd* to Linux* case in configure [Bar-Lev]
|
||||||
|
- Add inffast.obj to dependencies in win32/Makefile.msc
|
||||||
|
- Correct spelling error in deflate.h [Kohler]
|
||||||
|
- Change libzdll.a again to libz.dll.a (!) in win32/Makefile.gcc
|
||||||
|
- Add test to configure for GNU C looking for gcc in output of $cc -v
|
||||||
|
- Add zlib.pc generation to win32/Makefile.gcc [Weigelt]
|
||||||
|
- Fix bug in zlib.h for _FILE_OFFSET_BITS set and _LARGEFILE64_SOURCE not
|
||||||
|
- Add comment in zlib.h that adler32_combine with len2 < 0 makes no sense
|
||||||
|
- Make NO_DIVIDE option in adler32.c much faster (thanks to John Reiser)
|
||||||
|
- Make stronger test in zconf.h to include unistd.h for LFS
|
||||||
|
- Apply Darwin patches for 64-bit file offsets to contrib/minizip [Slack]
|
||||||
|
- Fix zlib.h LFS support when Z_PREFIX used
|
||||||
|
- Add updated as400 support (removed from old) [Monnerat]
|
||||||
|
- Avoid deflate sensitivity to volatile input data
|
||||||
|
- Avoid division in adler32_combine for NO_DIVIDE
|
||||||
|
- Clarify the use of Z_FINISH with deflateBound() amount of space
|
||||||
|
- Set binary for output file in puff.c
|
||||||
|
- Use u4 type for crc_table to avoid conversion warnings
|
||||||
|
- Apply casts in zlib.h to avoid conversion warnings
|
||||||
|
- Add OF to prototypes for adler32_combine_ and crc32_combine_ [Miller]
|
||||||
|
- Improve inflateSync() documentation to note indeterminancy
|
||||||
|
- Add deflatePending() function to return the amount of pending output
|
||||||
|
- Correct the spelling of "specification" in FAQ [Randers-Pehrson]
|
||||||
|
- Add a check in configure for stdarg.h, use for gzprintf()
|
||||||
|
- Check that pointers fit in ints when gzprint() compiled old style
|
||||||
|
- Add dummy name before $(SHAREDLIBV) in Makefile [Bar-Lev, Bowler]
|
||||||
|
- Delete line in configure that adds -L. libz.a to LDFLAGS [Weigelt]
|
||||||
|
- Add debug records in assmebler code [Londer]
|
||||||
|
- Update RFC references to use http://tools.ietf.org/html/... [Li]
|
||||||
|
- Add --archs option, use of libtool to configure for Mac OS X [Borstel]
|
||||||
|
|
||||||
|
Changes in 1.2.5 (19 Apr 2010)
|
||||||
|
- Disable visibility attribute in win32/Makefile.gcc [Bar-Lev]
|
||||||
|
- Default to libdir as sharedlibdir in configure [Nieder]
|
||||||
|
- Update copyright dates on modified source files
|
||||||
|
- Update trees.c to be able to generate modified trees.h
|
||||||
|
- Exit configure for MinGW, suggesting win32/Makefile.gcc
|
||||||
|
- Check for NULL path in gz_open [Homurlu]
|
||||||
|
|
||||||
|
Changes in 1.2.4.5 (18 Apr 2010)
|
||||||
|
- Set sharedlibdir in configure [Torok]
|
||||||
|
- Set LDFLAGS in Makefile.in [Bar-Lev]
|
||||||
|
- Avoid mkdir objs race condition in Makefile.in [Bowler]
|
||||||
|
- Add ZLIB_INTERNAL in front of internal inter-module functions and arrays
|
||||||
|
- Define ZLIB_INTERNAL to hide internal functions and arrays for GNU C
|
||||||
|
- Don't use hidden attribute when it is a warning generator (e.g. Solaris)
|
||||||
|
|
||||||
|
Changes in 1.2.4.4 (18 Apr 2010)
|
||||||
|
- Fix CROSS_PREFIX executable testing, CHOST extract, mingw* [Torok]
|
||||||
|
- Undefine _LARGEFILE64_SOURCE in zconf.h if it is zero, but not if empty
|
||||||
|
- Try to use bash or ksh regardless of functionality of /bin/sh
|
||||||
|
- Fix configure incompatibility with NetBSD sh
|
||||||
|
- Remove attempt to run under bash or ksh since have better NetBSD fix
|
||||||
|
- Fix win32/Makefile.gcc for MinGW [Bar-Lev]
|
||||||
|
- Add diagnostic messages when using CROSS_PREFIX in configure
|
||||||
|
- Added --sharedlibdir option to configure [Weigelt]
|
||||||
|
- Use hidden visibility attribute when available [Frysinger]
|
||||||
|
|
||||||
|
Changes in 1.2.4.3 (10 Apr 2010)
|
||||||
|
- Only use CROSS_PREFIX in configure for ar and ranlib if they exist
|
||||||
|
- Use CROSS_PREFIX for nm [Bar-Lev]
|
||||||
|
- Assume _LARGEFILE64_SOURCE defined is equivalent to true
|
||||||
|
- Avoid use of undefined symbols in #if with && and ||
|
||||||
|
- Make *64 prototypes in gzguts.h consistent with functions
|
||||||
|
- Add -shared load option for MinGW in configure [Bowler]
|
||||||
|
- Move z_off64_t to public interface, use instead of off64_t
|
||||||
|
- Remove ! from shell test in configure (not portable to Solaris)
|
||||||
|
- Change +0 macro tests to -0 for possibly increased portability
|
||||||
|
|
||||||
|
Changes in 1.2.4.2 (9 Apr 2010)
|
||||||
|
- Add consistent carriage returns to readme.txt's in masmx86 and masmx64
|
||||||
|
- Really provide prototypes for *64 functions when building without LFS
|
||||||
|
- Only define unlink() in minigzip.c if unistd.h not included
|
||||||
|
- Update README to point to contrib/vstudio project files
|
||||||
|
- Move projects/vc6 to old/ and remove projects/
|
||||||
|
- Include stdlib.h in minigzip.c for setmode() definition under WinCE
|
||||||
|
- Clean up assembler builds in win32/Makefile.msc [Rowe]
|
||||||
|
- Include sys/types.h for Microsoft for off_t definition
|
||||||
|
- Fix memory leak on error in gz_open()
|
||||||
|
- Symbolize nm as $NM in configure [Weigelt]
|
||||||
|
- Use TEST_LDSHARED instead of LDSHARED to link test programs [Weigelt]
|
||||||
|
- Add +0 to _FILE_OFFSET_BITS and _LFS64_LARGEFILE in case not defined
|
||||||
|
- Fix bug in gzeof() to take into account unused input data
|
||||||
|
- Avoid initialization of structures with variables in puff.c
|
||||||
|
- Updated win32/README-WIN32.txt [Rowe]
|
||||||
|
|
||||||
Changes in 1.2.4.1 (28 Mar 2010)
|
Changes in 1.2.4.1 (28 Mar 2010)
|
||||||
- Remove the use of [a-z] constructs for sed in configure [gentoo 310225]
|
- Remove the use of [a-z] constructs for sed in configure [gentoo 310225]
|
||||||
- Remove $(SHAREDLIB) from LIBS in Makefile.in [Creech]
|
- Remove $(SHAREDLIB) from LIBS in Makefile.in [Creech]
|
||||||
@@ -123,7 +378,7 @@ Changes in 1.2.3.6 (17 Jan 2010)
|
|||||||
- Correct email address in configure for system options
|
- Correct email address in configure for system options
|
||||||
- Update make_vms.com and add make_vms.com to contrib/minizip [Zinser]
|
- Update make_vms.com and add make_vms.com to contrib/minizip [Zinser]
|
||||||
- Update zlib.map [Brown]
|
- Update zlib.map [Brown]
|
||||||
- Fix Makefile.in for Solaris 10 make of example64 and minizip64 [T<EFBFBD>r<EFBFBD>k]
|
- Fix Makefile.in for Solaris 10 make of example64 and minizip64 [Torok]
|
||||||
- Apply various fixes to CMakeLists.txt [Lowman]
|
- Apply various fixes to CMakeLists.txt [Lowman]
|
||||||
- Add checks on len in gzread() and gzwrite()
|
- Add checks on len in gzread() and gzwrite()
|
||||||
- Add error message for no more room for gzungetc()
|
- Add error message for no more room for gzungetc()
|
||||||
@@ -207,7 +462,7 @@ Changes in 1.2.3.4 (21 Dec 2009)
|
|||||||
- Clear bytes after deflate lookahead to avoid use of uninitialized data
|
- Clear bytes after deflate lookahead to avoid use of uninitialized data
|
||||||
- Change a limit in inftrees.c to be more transparent to Coverity Prevent
|
- Change a limit in inftrees.c to be more transparent to Coverity Prevent
|
||||||
- Update win32/zlib.def with exported symbols from zlib.h
|
- Update win32/zlib.def with exported symbols from zlib.h
|
||||||
- Correct spelling error in zlib.h [Willem]
|
- Correct spelling errors in zlib.h [Willem, Sobrado]
|
||||||
- Allow Z_BLOCK for deflate() to force a new block
|
- Allow Z_BLOCK for deflate() to force a new block
|
||||||
- Allow negative bits in inflatePrime() to delete existing bit buffer
|
- Allow negative bits in inflatePrime() to delete existing bit buffer
|
||||||
- Add Z_TREES flush option to inflate() to return at end of trees
|
- Add Z_TREES flush option to inflate() to return at end of trees
|
||||||
|
|||||||
12
FAQ
12
FAQ
@@ -44,8 +44,8 @@ The lastest zlib FAQ is at http://zlib.net/zlib_faq.html
|
|||||||
|
|
||||||
6. Where's the zlib documentation (man pages, etc.)?
|
6. Where's the zlib documentation (man pages, etc.)?
|
||||||
|
|
||||||
It's in zlib.h . Examples of zlib usage are in the files example.c and
|
It's in zlib.h . Examples of zlib usage are in the files test/example.c
|
||||||
minigzip.c, with more in examples/ .
|
and test/minigzip.c, with more in examples/ .
|
||||||
|
|
||||||
7. Why don't you use GNU autoconf or libtool or ...?
|
7. Why don't you use GNU autoconf or libtool or ...?
|
||||||
|
|
||||||
@@ -84,8 +84,10 @@ The lastest zlib FAQ is at http://zlib.net/zlib_faq.html
|
|||||||
|
|
||||||
13. How can I make a Unix shared library?
|
13. How can I make a Unix shared library?
|
||||||
|
|
||||||
make clean
|
By default a shared (and a static) library is built for Unix. So:
|
||||||
./configure -s
|
|
||||||
|
make distclean
|
||||||
|
./configure
|
||||||
make
|
make
|
||||||
|
|
||||||
14. How do I install a shared zlib library on Unix?
|
14. How do I install a shared zlib library on Unix?
|
||||||
@@ -325,7 +327,7 @@ The lastest zlib FAQ is at http://zlib.net/zlib_faq.html
|
|||||||
correctly points to the zlib specification in RFC 1950 for the "deflate"
|
correctly points to the zlib specification in RFC 1950 for the "deflate"
|
||||||
transfer encoding, there have been reports of servers and browsers that
|
transfer encoding, there have been reports of servers and browsers that
|
||||||
incorrectly produce or expect raw deflate data per the deflate
|
incorrectly produce or expect raw deflate data per the deflate
|
||||||
specficiation in RFC 1951, most notably Microsoft. So even though the
|
specification in RFC 1951, most notably Microsoft. So even though the
|
||||||
"deflate" transfer encoding using the zlib format would be the more
|
"deflate" transfer encoding using the zlib format would be the more
|
||||||
efficient approach (and in fact exactly what the zlib format was designed
|
efficient approach (and in fact exactly what the zlib format was designed
|
||||||
for), using the "gzip" transfer encoding is probably more reliable due to
|
for), using the "gzip" transfer encoding is probably more reliable due to
|
||||||
|
|||||||
14
INDEX
14
INDEX
@@ -7,6 +7,9 @@ Makefile.in template for Unix Makefile
|
|||||||
README guess what
|
README guess what
|
||||||
configure configure script for Unix
|
configure configure script for Unix
|
||||||
make_vms.com makefile for VMS
|
make_vms.com makefile for VMS
|
||||||
|
test/example.c zlib usages examples for build testing
|
||||||
|
test/minigzip.c minimal gzip-like functionality for build testing
|
||||||
|
test/infcover.c inf*.c code coverage for build coverage testing
|
||||||
treebuild.xml XML description of source file dependencies
|
treebuild.xml XML description of source file dependencies
|
||||||
zconf.h.cmakein zconf.h template for cmake
|
zconf.h.cmakein zconf.h template for cmake
|
||||||
zconf.h.in zconf.h template for configure
|
zconf.h.in zconf.h template for configure
|
||||||
@@ -14,15 +17,16 @@ zlib.3 Man page for zlib
|
|||||||
zlib.3.pdf Man page in PDF format
|
zlib.3.pdf Man page in PDF format
|
||||||
zlib.map Linux symbol information
|
zlib.map Linux symbol information
|
||||||
zlib.pc.in Template for pkg-config descriptor
|
zlib.pc.in Template for pkg-config descriptor
|
||||||
|
zlib.pc.cmakein zlib.pc template for cmake
|
||||||
zlib2ansi perl script to convert source files for C++ compilation
|
zlib2ansi perl script to convert source files for C++ compilation
|
||||||
|
|
||||||
amiga/ makefiles for Amiga SAS C
|
amiga/ makefiles for Amiga SAS C
|
||||||
|
as400/ makefiles for AS/400
|
||||||
doc/ documentation for formats and algorithms
|
doc/ documentation for formats and algorithms
|
||||||
msdos/ makefiles for MSDOS
|
msdos/ makefiles for MSDOS
|
||||||
nintendods/ makefile for Nintendo DS
|
nintendods/ makefile for Nintendo DS
|
||||||
old/ makefiles for various architectures and zlib documentation
|
old/ makefiles for various architectures and zlib documentation
|
||||||
files that have not yet been updated for zlib 1.2.x
|
files that have not yet been updated for zlib 1.2.x
|
||||||
projects/ projects for various Integrated Development Environments
|
|
||||||
qnx/ makefiles for QNX
|
qnx/ makefiles for QNX
|
||||||
watcom/ makefiles for OpenWatcom
|
watcom/ makefiles for OpenWatcom
|
||||||
win32/ makefiles for Windows
|
win32/ makefiles for Windows
|
||||||
@@ -57,10 +61,8 @@ uncompr.c
|
|||||||
zutil.c
|
zutil.c
|
||||||
zutil.h
|
zutil.h
|
||||||
|
|
||||||
source files for sample programs:
|
source files for sample programs
|
||||||
example.c
|
See examples/README.examples
|
||||||
minigzip.c
|
|
||||||
See examples/README.examples for more
|
|
||||||
|
|
||||||
unsupported contribution by third parties
|
unsupported contributions by third parties
|
||||||
See contrib/README.contrib
|
See contrib/README.contrib
|
||||||
|
|||||||
122
Makefile.in
122
Makefile.in
@@ -1,5 +1,5 @@
|
|||||||
# Makefile for zlib
|
# Makefile for zlib
|
||||||
# Copyright (C) 1995-2010 Jean-loup Gailly.
|
# Copyright (C) 1995-2011 Jean-loup Gailly.
|
||||||
# For conditions of distribution and use, see copyright notice in zlib.h
|
# For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
|
|
||||||
# To compile and test, type:
|
# To compile and test, type:
|
||||||
@@ -25,18 +25,19 @@ CFLAGS=-O
|
|||||||
# -Wstrict-prototypes -Wmissing-prototypes
|
# -Wstrict-prototypes -Wmissing-prototypes
|
||||||
|
|
||||||
SFLAGS=-O
|
SFLAGS=-O
|
||||||
|
LDFLAGS=
|
||||||
LDFLAGS=-L. libz.a
|
TEST_LDFLAGS=-L. libz.a
|
||||||
LDSHARED=$(CC)
|
LDSHARED=$(CC)
|
||||||
CPP=$(CC) -E
|
CPP=$(CC) -E
|
||||||
|
|
||||||
STATICLIB=libz.a
|
STATICLIB=libz.a
|
||||||
SHAREDLIB=libz.so
|
SHAREDLIB=libz.so
|
||||||
SHAREDLIBV=libz.so.1.2.4.1
|
SHAREDLIBV=libz.so.1.2.7
|
||||||
SHAREDLIBM=libz.so.1
|
SHAREDLIBM=libz.so.1
|
||||||
LIBS=$(STATICLIB) $(SHAREDLIBV)
|
LIBS=$(STATICLIB) $(SHAREDLIBV)
|
||||||
|
|
||||||
AR=ar rc
|
AR=ar
|
||||||
|
ARFLAGS=rc
|
||||||
RANLIB=ranlib
|
RANLIB=ranlib
|
||||||
LDCONFIG=ldconfig
|
LDCONFIG=ldconfig
|
||||||
LDSHAREDLIBC=-lc
|
LDSHAREDLIBC=-lc
|
||||||
@@ -47,16 +48,19 @@ EXE=
|
|||||||
prefix = /usr/local
|
prefix = /usr/local
|
||||||
exec_prefix = ${prefix}
|
exec_prefix = ${prefix}
|
||||||
libdir = ${exec_prefix}/lib
|
libdir = ${exec_prefix}/lib
|
||||||
|
sharedlibdir = ${libdir}
|
||||||
includedir = ${prefix}/include
|
includedir = ${prefix}/include
|
||||||
mandir = ${prefix}/share/man
|
mandir = ${prefix}/share/man
|
||||||
man3dir = ${mandir}/man3
|
man3dir = ${mandir}/man3
|
||||||
pkgconfigdir = ${libdir}/pkgconfig
|
pkgconfigdir = ${libdir}/pkgconfig
|
||||||
|
|
||||||
OBJC = adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o \
|
OBJZ = adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o
|
||||||
gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o
|
OBJG = compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o
|
||||||
|
OBJC = $(OBJZ) $(OBJG)
|
||||||
|
|
||||||
PIC_OBJC = adler32.lo compress.lo crc32.lo deflate.lo gzclose.lo gzlib.lo gzread.lo \
|
PIC_OBJZ = adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo
|
||||||
gzwrite.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo uncompr.lo zutil.lo
|
PIC_OBJG = compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo
|
||||||
|
PIC_OBJC = $(PIC_OBJZ) $(PIC_OBJG)
|
||||||
|
|
||||||
# to use the asm code: make OBJA=match.o, PIC_OBJA=match.lo
|
# to use the asm code: make OBJA=match.o, PIC_OBJA=match.lo
|
||||||
OBJA =
|
OBJA =
|
||||||
@@ -79,35 +83,49 @@ check: test
|
|||||||
test: all teststatic testshared
|
test: all teststatic testshared
|
||||||
|
|
||||||
teststatic: static
|
teststatic: static
|
||||||
@if echo hello world | ./minigzip | ./minigzip -d && ./example; then \
|
@TMPST=`mktemp fooXXXXXX`; \
|
||||||
|
if echo hello world | ./minigzip | ./minigzip -d && ./example $$TMPST ; then \
|
||||||
echo ' *** zlib test OK ***'; \
|
echo ' *** zlib test OK ***'; \
|
||||||
else \
|
else \
|
||||||
echo ' *** zlib test FAILED ***'; false; \
|
echo ' *** zlib test FAILED ***'; false; \
|
||||||
fi
|
fi; \
|
||||||
-@rm -f foo.gz
|
rm -f $$TMPST
|
||||||
|
|
||||||
testshared: shared
|
testshared: shared
|
||||||
@LD_LIBRARY_PATH=`pwd`:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \
|
@LD_LIBRARY_PATH=`pwd`:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \
|
||||||
LD_LIBRARYN32_PATH=`pwd`:$(LD_LIBRARYN32_PATH) ; export LD_LIBRARYN32_PATH; \
|
LD_LIBRARYN32_PATH=`pwd`:$(LD_LIBRARYN32_PATH) ; export LD_LIBRARYN32_PATH; \
|
||||||
DYLD_LIBRARY_PATH=`pwd`:$(DYLD_LIBRARY_PATH) ; export DYLD_LIBRARY_PATH; \
|
DYLD_LIBRARY_PATH=`pwd`:$(DYLD_LIBRARY_PATH) ; export DYLD_LIBRARY_PATH; \
|
||||||
SHLIB_PATH=`pwd`:$(SHLIB_PATH) ; export SHLIB_PATH; \
|
SHLIB_PATH=`pwd`:$(SHLIB_PATH) ; export SHLIB_PATH; \
|
||||||
if echo hello world | ./minigzipsh | ./minigzipsh -d && ./examplesh; then \
|
TMPSH=`mktemp fooXXXXXX`; \
|
||||||
|
if echo hello world | ./minigzipsh | ./minigzipsh -d && ./examplesh $$TMPSH; then \
|
||||||
echo ' *** zlib shared test OK ***'; \
|
echo ' *** zlib shared test OK ***'; \
|
||||||
else \
|
else \
|
||||||
echo ' *** zlib shared test FAILED ***'; false; \
|
echo ' *** zlib shared test FAILED ***'; false; \
|
||||||
fi
|
fi; \
|
||||||
-@rm -f foo.gz
|
rm -f $$TMPSH
|
||||||
|
|
||||||
test64: all64
|
test64: all64
|
||||||
@if echo hello world | ./minigzip64 | ./minigzip64 -d && ./example64; then \
|
@TMP64=`mktemp fooXXXXXX`; \
|
||||||
|
if echo hello world | ./minigzip64 | ./minigzip64 -d && ./example64 $$TMP64; then \
|
||||||
echo ' *** zlib 64-bit test OK ***'; \
|
echo ' *** zlib 64-bit test OK ***'; \
|
||||||
else \
|
else \
|
||||||
echo ' *** zlib 64-bit test FAILED ***'; false; \
|
echo ' *** zlib 64-bit test FAILED ***'; false; \
|
||||||
fi
|
fi; \
|
||||||
-@rm -f foo.gz
|
rm -f $$TMP64
|
||||||
|
|
||||||
|
infcover.o: test/infcover.c zlib.h zconf.h
|
||||||
|
$(CC) $(CFLAGS) -I. -c -o $@ test/infcover.c
|
||||||
|
|
||||||
|
infcover: infcover.o libz.a
|
||||||
|
$(CC) $(CFLAGS) -o $@ infcover.o libz.a
|
||||||
|
|
||||||
|
cover: infcover
|
||||||
|
rm -f *.gcda
|
||||||
|
./infcover
|
||||||
|
gcov inf*.c
|
||||||
|
|
||||||
libz.a: $(OBJS)
|
libz.a: $(OBJS)
|
||||||
$(AR) $@ $(OBJS)
|
$(AR) $(ARFLAGS) $@ $(OBJS)
|
||||||
-@ ($(RANLIB) $@ || true) >/dev/null 2>&1
|
-@ ($(RANLIB) $@ || true) >/dev/null 2>&1
|
||||||
|
|
||||||
match.o: match.S
|
match.o: match.S
|
||||||
@@ -122,31 +140,37 @@ match.lo: match.S
|
|||||||
mv _match.o match.lo
|
mv _match.o match.lo
|
||||||
rm -f _match.s
|
rm -f _match.s
|
||||||
|
|
||||||
example64.o: example.c zlib.h zconf.h
|
example.o: test/example.c zlib.h zconf.h
|
||||||
$(CC) $(CFLAGS) -D_FILE_OFFSET_BITS=64 -c -o $@ example.c
|
$(CC) $(CFLAGS) -I. -c -o $@ test/example.c
|
||||||
|
|
||||||
minigzip64.o: minigzip.c zlib.h zconf.h
|
minigzip.o: test/minigzip.c zlib.h zconf.h
|
||||||
$(CC) $(CFLAGS) -D_FILE_OFFSET_BITS=64 -c -o $@ minigzip.c
|
$(CC) $(CFLAGS) -I. -c -o $@ test/minigzip.c
|
||||||
|
|
||||||
|
example64.o: test/example.c zlib.h zconf.h
|
||||||
|
$(CC) $(CFLAGS) -I. -D_FILE_OFFSET_BITS=64 -c -o $@ test/example.c
|
||||||
|
|
||||||
|
minigzip64.o: test/minigzip.c zlib.h zconf.h
|
||||||
|
$(CC) $(CFLAGS) -I. -D_FILE_OFFSET_BITS=64 -c -o $@ test/minigzip.c
|
||||||
|
|
||||||
.SUFFIXES: .lo
|
.SUFFIXES: .lo
|
||||||
|
|
||||||
.c.lo:
|
.c.lo:
|
||||||
-@if [ ! -d objs ]; then mkdir objs; fi
|
-@mkdir objs 2>/dev/null || test -d objs
|
||||||
$(CC) $(SFLAGS) -DPIC -c -o objs/$*.o $<
|
$(CC) $(SFLAGS) -DPIC -c -o objs/$*.o $<
|
||||||
-@mv objs/$*.o $@
|
-@mv objs/$*.o $@
|
||||||
|
|
||||||
$(SHAREDLIBV): $(PIC_OBJS)
|
placebo $(SHAREDLIBV): $(PIC_OBJS) libz.a
|
||||||
$(LDSHARED) $(SFLAGS) -o $@ $(PIC_OBJS) $(LDSHAREDLIBC)
|
$(LDSHARED) $(SFLAGS) -o $@ $(PIC_OBJS) $(LDSHAREDLIBC) $(LDFLAGS)
|
||||||
rm -f $(SHAREDLIB) $(SHAREDLIBM)
|
rm -f $(SHAREDLIB) $(SHAREDLIBM)
|
||||||
ln -s $@ $(SHAREDLIB)
|
ln -s $@ $(SHAREDLIB)
|
||||||
ln -s $@ $(SHAREDLIBM)
|
ln -s $@ $(SHAREDLIBM)
|
||||||
-@rmdir objs
|
-@rmdir objs
|
||||||
|
|
||||||
example$(EXE): example.o $(STATICLIB)
|
example$(EXE): example.o $(STATICLIB)
|
||||||
$(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS)
|
$(CC) $(CFLAGS) -o $@ example.o $(TEST_LDFLAGS)
|
||||||
|
|
||||||
minigzip$(EXE): minigzip.o $(STATICLIB)
|
minigzip$(EXE): minigzip.o $(STATICLIB)
|
||||||
$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS)
|
$(CC) $(CFLAGS) -o $@ minigzip.o $(TEST_LDFLAGS)
|
||||||
|
|
||||||
examplesh$(EXE): example.o $(SHAREDLIBV)
|
examplesh$(EXE): example.o $(SHAREDLIBV)
|
||||||
$(CC) $(CFLAGS) -o $@ example.o -L. $(SHAREDLIBV)
|
$(CC) $(CFLAGS) -o $@ example.o -L. $(SHAREDLIBV)
|
||||||
@@ -155,24 +179,28 @@ minigzipsh$(EXE): minigzip.o $(SHAREDLIBV)
|
|||||||
$(CC) $(CFLAGS) -o $@ minigzip.o -L. $(SHAREDLIBV)
|
$(CC) $(CFLAGS) -o $@ minigzip.o -L. $(SHAREDLIBV)
|
||||||
|
|
||||||
example64$(EXE): example64.o $(STATICLIB)
|
example64$(EXE): example64.o $(STATICLIB)
|
||||||
$(CC) $(CFLAGS) -o $@ example64.o $(LDFLAGS)
|
$(CC) $(CFLAGS) -o $@ example64.o $(TEST_LDFLAGS)
|
||||||
|
|
||||||
minigzip64$(EXE): minigzip64.o $(STATICLIB)
|
minigzip64$(EXE): minigzip64.o $(STATICLIB)
|
||||||
$(CC) $(CFLAGS) -o $@ minigzip64.o $(LDFLAGS)
|
$(CC) $(CFLAGS) -o $@ minigzip64.o $(TEST_LDFLAGS)
|
||||||
|
|
||||||
install-libs: $(LIBS)
|
install-libs: $(LIBS)
|
||||||
-@if [ ! -d $(DESTDIR)$(exec_prefix) ]; then mkdir -p $(DESTDIR)$(exec_prefix); fi
|
-@if [ ! -d $(DESTDIR)$(exec_prefix) ]; then mkdir -p $(DESTDIR)$(exec_prefix); fi
|
||||||
-@if [ ! -d $(DESTDIR)$(libdir) ]; then mkdir -p $(DESTDIR)$(libdir); fi
|
-@if [ ! -d $(DESTDIR)$(libdir) ]; then mkdir -p $(DESTDIR)$(libdir); fi
|
||||||
|
-@if [ ! -d $(DESTDIR)$(sharedlibdir) ]; then mkdir -p $(DESTDIR)$(sharedlibdir); fi
|
||||||
-@if [ ! -d $(DESTDIR)$(man3dir) ]; then mkdir -p $(DESTDIR)$(man3dir); fi
|
-@if [ ! -d $(DESTDIR)$(man3dir) ]; then mkdir -p $(DESTDIR)$(man3dir); fi
|
||||||
-@if [ ! -d $(DESTDIR)$(pkgconfigdir) ]; then mkdir -p $(DESTDIR)$(pkgconfigdir); fi
|
-@if [ ! -d $(DESTDIR)$(pkgconfigdir) ]; then mkdir -p $(DESTDIR)$(pkgconfigdir); fi
|
||||||
cp $(LIBS) $(DESTDIR)$(libdir)
|
cp $(STATICLIB) $(DESTDIR)$(libdir)
|
||||||
cd $(DESTDIR)$(libdir); chmod u=rw,go=r $(STATICLIB)
|
chmod 644 $(DESTDIR)$(libdir)/$(STATICLIB)
|
||||||
-@(cd $(DESTDIR)$(libdir); $(RANLIB) libz.a || true) >/dev/null 2>&1
|
-@($(RANLIB) $(DESTDIR)$(libdir)/libz.a || true) >/dev/null 2>&1
|
||||||
-@cd $(DESTDIR)$(libdir); if test "$(SHAREDLIBV)" -a -f $(SHAREDLIBV); then \
|
-@if test -n "$(SHAREDLIBV)"; then \
|
||||||
chmod 755 $(SHAREDLIBV); \
|
cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir); \
|
||||||
rm -f $(SHAREDLIB) $(SHAREDLIBM); \
|
echo "cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)"; \
|
||||||
ln -s $(SHAREDLIBV) $(SHAREDLIB); \
|
chmod 755 $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV); \
|
||||||
ln -s $(SHAREDLIBV) $(SHAREDLIBM); \
|
echo "chmod 755 $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV)"; \
|
||||||
|
rm -f $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM); \
|
||||||
|
ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB); \
|
||||||
|
ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM); \
|
||||||
($(LDCONFIG) || true) >/dev/null 2>&1; \
|
($(LDCONFIG) || true) >/dev/null 2>&1; \
|
||||||
fi
|
fi
|
||||||
cp zlib.3 $(DESTDIR)$(man3dir)
|
cp zlib.3 $(DESTDIR)$(man3dir)
|
||||||
@@ -190,7 +218,7 @@ install: install-libs
|
|||||||
uninstall:
|
uninstall:
|
||||||
cd $(DESTDIR)$(includedir); rm -f zlib.h zconf.h
|
cd $(DESTDIR)$(includedir); rm -f zlib.h zconf.h
|
||||||
cd $(DESTDIR)$(libdir); rm -f libz.a; \
|
cd $(DESTDIR)$(libdir); rm -f libz.a; \
|
||||||
if test "$(SHAREDLIBV)" -a -f $(SHAREDLIBV); then \
|
if test -n "$(SHAREDLIBV)" -a -f $(SHAREDLIBV); then \
|
||||||
rm -f $(SHAREDLIBV) $(SHAREDLIB) $(SHAREDLIBM); \
|
rm -f $(SHAREDLIBV) $(SHAREDLIB) $(SHAREDLIBM); \
|
||||||
fi
|
fi
|
||||||
cd $(DESTDIR)$(man3dir); rm -f zlib.3
|
cd $(DESTDIR)$(man3dir); rm -f zlib.3
|
||||||
@@ -201,9 +229,12 @@ docs: zlib.3.pdf
|
|||||||
zlib.3.pdf: zlib.3
|
zlib.3.pdf: zlib.3
|
||||||
groff -mandoc -f H -T ps zlib.3 | ps2pdf - zlib.3.pdf
|
groff -mandoc -f H -T ps zlib.3 | ps2pdf - zlib.3.pdf
|
||||||
|
|
||||||
zconf.h.in: zconf.h.cmakein
|
zconf.h.cmakein: zconf.h.in
|
||||||
sed "/^#cmakedefine/D" < zconf.h.cmakein > zconf.h.in
|
-@ TEMPFILE=`mktemp __XXXXXX`; \
|
||||||
touch -r zconf.h.cmakein zconf.h.in
|
echo "/#define ZCONF_H/ a\\\\\n#cmakedefine Z_PREFIX\\\\\n#cmakedefine Z_HAVE_UNISTD_H\n" >> $$TEMPFILE &&\
|
||||||
|
sed -f $$TEMPFILE zconf.h.in > zconf.h.cmakein &&\
|
||||||
|
touch -r zconf.h.in zconf.h.cmakein &&\
|
||||||
|
rm $$TEMPFILE
|
||||||
|
|
||||||
zconf: zconf.h.in
|
zconf: zconf.h.in
|
||||||
cp -p zconf.h.in zconf.h
|
cp -p zconf.h.in zconf.h
|
||||||
@@ -213,13 +244,16 @@ clean:
|
|||||||
rm -f *.o *.lo *~ \
|
rm -f *.o *.lo *~ \
|
||||||
example$(EXE) minigzip$(EXE) examplesh$(EXE) minigzipsh$(EXE) \
|
example$(EXE) minigzip$(EXE) examplesh$(EXE) minigzipsh$(EXE) \
|
||||||
example64$(EXE) minigzip64$(EXE) \
|
example64$(EXE) minigzip64$(EXE) \
|
||||||
|
infcover \
|
||||||
libz.* foo.gz so_locations \
|
libz.* foo.gz so_locations \
|
||||||
_match.s maketree contrib/infback9/*.o
|
_match.s maketree contrib/infback9/*.o
|
||||||
rm -rf objs
|
rm -rf objs
|
||||||
|
rm -f *.gcda *.gcno *.gcov
|
||||||
|
rm -f contrib/infback9/*.gcda contrib/infback9/*.gcno contrib/infback9/*.gcov
|
||||||
|
|
||||||
maintainer-clean: distclean
|
maintainer-clean: distclean
|
||||||
distclean: clean zconf docs
|
distclean: clean zconf zconf.h.cmakein docs
|
||||||
rm -f Makefile zlib.pc
|
rm -f Makefile zlib.pc configure.log
|
||||||
-@rm -f .DS_Store
|
-@rm -f .DS_Store
|
||||||
-@printf 'all:\n\t-@echo "Please use ./configure first. Thank you."\n' > Makefile
|
-@printf 'all:\n\t-@echo "Please use ./configure first. Thank you."\n' > Makefile
|
||||||
-@printf '\ndistclean:\n\tmake -f Makefile.in distclean\n' >> Makefile
|
-@printf '\ndistclean:\n\tmake -f Makefile.in distclean\n' >> Makefile
|
||||||
|
|||||||
25
README
25
README
@@ -1,22 +1,23 @@
|
|||||||
ZLIB DATA COMPRESSION LIBRARY
|
ZLIB DATA COMPRESSION LIBRARY
|
||||||
|
|
||||||
zlib 1.2.4.1 is a general purpose data compression library. All the code is
|
zlib 1.2.7 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
|
thread safe. The data format used by the zlib library is described by RFCs
|
||||||
(Request for Comments) 1950 to 1952 in the files
|
(Request for Comments) 1950 to 1952 in the files
|
||||||
http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
|
http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
|
||||||
and rfc1952.txt (gzip format).
|
rfc1952 (gzip format).
|
||||||
|
|
||||||
All functions of the compression library are documented in the file zlib.h
|
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
|
(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
|
of the library is given in the file test/example.c which also tests that
|
||||||
is working correctly. Another example is given in the file minigzip.c. The
|
the library is working correctly. Another example is given in the file
|
||||||
compression library itself is composed of all source files except example.c and
|
test/minigzip.c. The compression library itself is composed of all source
|
||||||
minigzip.c.
|
files in the root directory.
|
||||||
|
|
||||||
To compile all files and run the test program, follow the instructions given at
|
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
|
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
|
well, "make install" should work for most flavors of Unix. For Windows, use
|
||||||
of the special makefiles in win32/ or projects/ . For VMS, use make_vms.com.
|
one of 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
|
Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant
|
||||||
<info@winimage.com> for the Windows DLL version. The zlib home page is
|
<info@winimage.com> for the Windows DLL version. The zlib home page is
|
||||||
@@ -30,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
|
issue of Dr. Dobb's Journal; a copy of the article is available at
|
||||||
http://marknelson.us/1997/01/01/zlib-engine/ .
|
http://marknelson.us/1997/01/01/zlib-engine/ .
|
||||||
|
|
||||||
The changes made in version 1.2.4.1 are documented in the file ChangeLog.
|
The changes made in version 1.2.7 are documented in the file ChangeLog.
|
||||||
|
|
||||||
Unsupported third party contributions are provided in directory contrib/ .
|
Unsupported third party contributions are provided in directory contrib/ .
|
||||||
|
|
||||||
@@ -43,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
|
A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is
|
||||||
available in Python 1.5 and later versions, see
|
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 .
|
zlib is built into tcl: http://wiki.tcl.tk/4610 .
|
||||||
|
|
||||||
@@ -83,7 +84,7 @@ Acknowledgments:
|
|||||||
|
|
||||||
Copyright notice:
|
Copyright notice:
|
||||||
|
|
||||||
(C) 1995-2010 Jean-loup Gailly and Mark Adler
|
(C) 1995-2012 Jean-loup Gailly and Mark Adler
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the authors be held liable for any damages
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
|||||||
68
adler32.c
68
adler32.c
@@ -1,5 +1,5 @@
|
|||||||
/* adler32.c -- compute the Adler-32 checksum of a data stream
|
/* adler32.c -- compute the Adler-32 checksum of a data stream
|
||||||
* Copyright (C) 1995-2007 Mark Adler
|
* Copyright (C) 1995-2011 Mark Adler
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
#define local static
|
#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 65521UL /* largest prime smaller than 65536 */
|
#define BASE 65521 /* largest prime smaller than 65536 */
|
||||||
#define NMAX 5552
|
#define NMAX 5552
|
||||||
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
|
/* 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 DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
|
||||||
#define DO16(buf) DO8(buf,0); DO8(buf,8);
|
#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
|
#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 { \
|
do { \
|
||||||
if (a >= (BASE << 16)) a -= (BASE << 16); \
|
unsigned long tmp = a >> 16; \
|
||||||
if (a >= (BASE << 15)) a -= (BASE << 15); \
|
a &= 0xffffUL; \
|
||||||
if (a >= (BASE << 14)) a -= (BASE << 14); \
|
a += (tmp << 4) - tmp; \
|
||||||
if (a >= (BASE << 13)) a -= (BASE << 13); \
|
} while (0)
|
||||||
if (a >= (BASE << 12)) a -= (BASE << 12); \
|
# define MOD28(a) \
|
||||||
if (a >= (BASE << 11)) a -= (BASE << 11); \
|
do { \
|
||||||
if (a >= (BASE << 10)) a -= (BASE << 10); \
|
CHOP(a); \
|
||||||
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); \
|
|
||||||
if (a >= BASE) a -= BASE; \
|
if (a >= BASE) a -= BASE; \
|
||||||
} while (0)
|
} while (0)
|
||||||
# define MOD4(a) \
|
# define MOD(a) \
|
||||||
do { \
|
do { \
|
||||||
if (a >= (BASE << 4)) a -= (BASE << 4); \
|
CHOP(a); \
|
||||||
if (a >= (BASE << 3)) a -= (BASE << 3); \
|
MOD28(a); \
|
||||||
if (a >= (BASE << 2)) a -= (BASE << 2); \
|
} while (0)
|
||||||
if (a >= (BASE << 1)) a -= (BASE << 1); \
|
# 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; \
|
if (a >= BASE) a -= BASE; \
|
||||||
} while (0)
|
} while (0)
|
||||||
#else
|
#else
|
||||||
# define MOD(a) a %= BASE
|
# define MOD(a) a %= BASE
|
||||||
# define MOD4(a) a %= BASE
|
# define MOD28(a) a %= BASE
|
||||||
|
# define MOD63(a) a %= BASE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
@@ -92,7 +97,7 @@ uLong ZEXPORT adler32(adler, buf, len)
|
|||||||
}
|
}
|
||||||
if (adler >= BASE)
|
if (adler >= BASE)
|
||||||
adler -= BASE;
|
adler -= BASE;
|
||||||
MOD4(sum2); /* only added so many BASE's */
|
MOD28(sum2); /* only added so many BASE's */
|
||||||
return adler | (sum2 << 16);
|
return adler | (sum2 << 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,8 +142,13 @@ local uLong adler32_combine_(adler1, adler2, len2)
|
|||||||
unsigned long sum2;
|
unsigned long sum2;
|
||||||
unsigned rem;
|
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 */
|
/* 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;
|
sum1 = adler1 & 0xffff;
|
||||||
sum2 = rem * sum1;
|
sum2 = rem * sum1;
|
||||||
MOD(sum2);
|
MOD(sum2);
|
||||||
|
|||||||
@@ -129,4 +129,77 @@ STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('ZLIB')
|
|||||||
|
|
||||||
EXPORT SYMBOL("zlibCompileFlags")
|
EXPORT SYMBOL("zlibCompileFlags")
|
||||||
|
|
||||||
|
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
|
||||||
|
/* Version 1.2.5 additional entry points. */
|
||||||
|
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
|
||||||
|
|
||||||
|
/********************************************************************/
|
||||||
|
/* *MODULE ADLER32 ZLIB 01/02/01 00:15:09 */
|
||||||
|
/********************************************************************/
|
||||||
|
|
||||||
|
EXPORT SYMBOL("adler32_combine")
|
||||||
|
EXPORT SYMBOL("adler32_combine64")
|
||||||
|
|
||||||
|
/********************************************************************/
|
||||||
|
/* *MODULE CRC32 ZLIB 01/02/01 00:15:09 */
|
||||||
|
/********************************************************************/
|
||||||
|
|
||||||
|
EXPORT SYMBOL("crc32_combine")
|
||||||
|
EXPORT SYMBOL("crc32_combine64")
|
||||||
|
|
||||||
|
/********************************************************************/
|
||||||
|
/* *MODULE GZLIB ZLIB 01/02/01 00:15:09 */
|
||||||
|
/********************************************************************/
|
||||||
|
|
||||||
|
EXPORT SYMBOL("gzbuffer")
|
||||||
|
EXPORT SYMBOL("gzoffset")
|
||||||
|
EXPORT SYMBOL("gzoffset64")
|
||||||
|
EXPORT SYMBOL("gzopen64")
|
||||||
|
EXPORT SYMBOL("gzseek64")
|
||||||
|
EXPORT SYMBOL("gztell64")
|
||||||
|
|
||||||
|
/********************************************************************/
|
||||||
|
/* *MODULE GZREAD ZLIB 01/02/01 00:15:09 */
|
||||||
|
/********************************************************************/
|
||||||
|
|
||||||
|
EXPORT SYMBOL("gzclose_r")
|
||||||
|
|
||||||
|
/********************************************************************/
|
||||||
|
/* *MODULE GZWRITE ZLIB 01/02/01 00:15:09 */
|
||||||
|
/********************************************************************/
|
||||||
|
|
||||||
|
EXPORT SYMBOL("gzclose_w")
|
||||||
|
|
||||||
|
/********************************************************************/
|
||||||
|
/* *MODULE INFLATE ZLIB 01/02/01 00:15:09 */
|
||||||
|
/********************************************************************/
|
||||||
|
|
||||||
|
EXPORT SYMBOL("inflateMark")
|
||||||
|
EXPORT SYMBOL("inflatePrime")
|
||||||
|
EXPORT SYMBOL("inflateReset2")
|
||||||
|
EXPORT SYMBOL("inflateUndermine")
|
||||||
|
|
||||||
|
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
|
||||||
|
/* Version 1.2.6 additional entry points. */
|
||||||
|
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
|
||||||
|
|
||||||
|
/********************************************************************/
|
||||||
|
/* *MODULE DEFLATE ZLIB 01/02/01 00:15:09 */
|
||||||
|
/********************************************************************/
|
||||||
|
|
||||||
|
EXPORT SYMBOL("deflateResetKeep")
|
||||||
|
EXPORT SYMBOL("deflatePending")
|
||||||
|
|
||||||
|
/********************************************************************/
|
||||||
|
/* *MODULE GZWRITE ZLIB 01/02/01 00:15:09 */
|
||||||
|
/********************************************************************/
|
||||||
|
|
||||||
|
EXPORT SYMBOL("gzgetc_")
|
||||||
|
|
||||||
|
/********************************************************************/
|
||||||
|
/* *MODULE INFLATE ZLIB 01/02/01 00:15:09 */
|
||||||
|
/********************************************************************/
|
||||||
|
|
||||||
|
EXPORT SYMBOL("inflateResetKeep")
|
||||||
|
|
||||||
ENDPGMEXP
|
ENDPGMEXP
|
||||||
110
as400/compile.clp
Normal file
110
as400/compile.clp
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
/******************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* ZLIB */
|
||||||
|
/* */
|
||||||
|
/* Compile sources into modules and link them into a service program. */
|
||||||
|
/* */
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
PGM
|
||||||
|
|
||||||
|
/* Configuration adjustable parameters. */
|
||||||
|
|
||||||
|
DCL VAR(&SRCLIB) TYPE(*CHAR) LEN(10) +
|
||||||
|
VALUE('ZLIB') /* Source library. */
|
||||||
|
DCL VAR(&SRCFILE) TYPE(*CHAR) LEN(10) +
|
||||||
|
VALUE('SOURCES') /* Source member file. */
|
||||||
|
DCL VAR(&CTLFILE) TYPE(*CHAR) LEN(10) +
|
||||||
|
VALUE('TOOLS') /* Control member file. */
|
||||||
|
|
||||||
|
DCL VAR(&MODLIB) TYPE(*CHAR) LEN(10) +
|
||||||
|
VALUE('ZLIB') /* Module library. */
|
||||||
|
|
||||||
|
DCL VAR(&SRVLIB) TYPE(*CHAR) LEN(10) +
|
||||||
|
VALUE('LGPL') /* Service program library. */
|
||||||
|
|
||||||
|
DCL VAR(&CFLAGS) TYPE(*CHAR) +
|
||||||
|
VALUE('OPTIMIZE(40)') /* Compile options. */
|
||||||
|
|
||||||
|
DCL VAR(&TGTRLS) TYPE(*CHAR) +
|
||||||
|
VALUE('V5R3M0') /* Target release. */
|
||||||
|
|
||||||
|
|
||||||
|
/* Working storage. */
|
||||||
|
|
||||||
|
DCL VAR(&CMDLEN) TYPE(*DEC) LEN(15 5) VALUE(300) /* Command length. */
|
||||||
|
DCL VAR(&CMD) TYPE(*CHAR) LEN(512)
|
||||||
|
DCL VAR(&FIXDCMD) TYPE(*CHAR) LEN(512)
|
||||||
|
|
||||||
|
|
||||||
|
/* Compile sources into modules. */
|
||||||
|
|
||||||
|
CHGVAR VAR(&FIXDCMD) VALUE('CRTCMOD' *BCAT &CFLAGS *BCAT +
|
||||||
|
'SYSIFCOPT(*IFS64IO)' *BCAT +
|
||||||
|
'DEFINE(''_LARGEFILE64_SOURCE''' *BCAT +
|
||||||
|
'''_LFS64_LARGEFILE=1'') TGTRLS(' *TCAT &TGTRLS *TCAT +
|
||||||
|
') SRCFILE(' *TCAT &SRCLIB *TCAT '/' *TCAT +
|
||||||
|
&SRCFILE *TCAT ') MODULE(' *TCAT &MODLIB *TCAT '/')
|
||||||
|
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'ADLER32)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'COMPRESS)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'CRC32)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'DEFLATE)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'GZCLOSE)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'GZLIB)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'GZREAD)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'GZWRITE)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'INFBACK)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'INFFAST)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'INFLATE)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'INFTREES)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'TREES)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'UNCOMPR)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
CHGVAR VAR(&CMD) VALUE(&FIXDCMD *TCAT 'ZUTIL)')
|
||||||
|
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
||||||
|
|
||||||
|
|
||||||
|
/* Link modules into a service program. */
|
||||||
|
|
||||||
|
CRTSRVPGM SRVPGM(&SRVLIB/ZLIB) +
|
||||||
|
MODULE(&MODLIB/ADLER32 &MODLIB/COMPRESS +
|
||||||
|
&MODLIB/CRC32 &MODLIB/DEFLATE +
|
||||||
|
&MODLIB/GZCLOSE &MODLIB/GZLIB +
|
||||||
|
&MODLIB/GZREAD &MODLIB/GZWRITE +
|
||||||
|
&MODLIB/INFBACK &MODLIB/INFFAST +
|
||||||
|
&MODLIB/INFLATE &MODLIB/INFTREES +
|
||||||
|
&MODLIB/TREES &MODLIB/UNCOMPR +
|
||||||
|
&MODLIB/ZUTIL) +
|
||||||
|
SRCFILE(&SRCLIB/&CTLFILE) SRCMBR(BNDSRC) +
|
||||||
|
TEXT('ZLIB 1.2.7') TGTRLS(&TGTRLS)
|
||||||
|
|
||||||
|
ENDPGM
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
ZLIB version 1.2.3 for AS400 installation instructions
|
ZLIB version 1.2.7 for AS400 installation instructions
|
||||||
|
|
||||||
I) From an AS400 *SAVF file:
|
I) From an AS400 *SAVF file:
|
||||||
|
|
||||||
@@ -8,7 +8,7 @@ On the AS400:
|
|||||||
|
|
||||||
_ Create the ZLIB AS400 library:
|
_ Create the ZLIB AS400 library:
|
||||||
|
|
||||||
CRTLIB LIB(ZLIB) TYPE(PROD) TEXT('ZLIB compression API library')
|
CRTLIB LIB(ZLIB) TYPE(*PROD) TEXT('ZLIB compression API library')
|
||||||
|
|
||||||
_ Create a work save file, for example:
|
_ Create a work save file, for example:
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ II) From the original source distribution:
|
|||||||
|
|
||||||
1) On the AS400, create the source library:
|
1) On the AS400, create the source library:
|
||||||
|
|
||||||
CRTLIB LIB(ZLIB) TYPE(PROD) TEXT('ZLIB compression API library')
|
CRTLIB LIB(ZLIB) TYPE(*PROD) TEXT('ZLIB compression API library')
|
||||||
|
|
||||||
2) Create the source files:
|
2) Create the source files:
|
||||||
|
|
||||||
@@ -70,7 +70,10 @@ II) From the original source distribution:
|
|||||||
compress.c COMPRESS C ZLIB - Compress a memory buffer
|
compress.c COMPRESS C ZLIB - Compress a memory buffer
|
||||||
crc32.c CRC32 C ZLIB - Compute the CRC-32 of a data stream
|
crc32.c CRC32 C ZLIB - Compute the CRC-32 of a data stream
|
||||||
deflate.c DEFLATE C ZLIB - Compress data using the deflation algorithm
|
deflate.c DEFLATE C ZLIB - Compress data using the deflation algorithm
|
||||||
gzio.c GZIO C ZLIB - IO on .gz files
|
gzclose.c GZCLOSE C ZLIB - Close .gz files
|
||||||
|
gzlib.c GZLIB C ZLIB - Miscellaneous .gz files IO support
|
||||||
|
gzread.c GZREAD C ZLIB - Read .gz files
|
||||||
|
gzwrite.c GZWRITE C ZLIB - Write .gz files
|
||||||
infback.c INFBACK C ZLIB - Inflate using a callback interface
|
infback.c INFBACK C ZLIB - Inflate using a callback interface
|
||||||
inffast.c INFFAST C ZLIB - Fast proc. literals & length/distance pairs
|
inffast.c INFFAST C ZLIB - Fast proc. literals & length/distance pairs
|
||||||
inflate.c INFLATE C ZLIB - Interface to inflate modules
|
inflate.c INFLATE C ZLIB - Interface to inflate modules
|
||||||
@@ -81,6 +84,7 @@ II) From the original source distribution:
|
|||||||
H Original ZLIB C and ILE/RPG include files
|
H Original ZLIB C and ILE/RPG include files
|
||||||
crc32.h CRC32 C ZLIB - CRC32 tables
|
crc32.h CRC32 C ZLIB - CRC32 tables
|
||||||
deflate.h DEFLATE C ZLIB - Internal compression state
|
deflate.h DEFLATE C ZLIB - Internal compression state
|
||||||
|
gzguts.h GZGUTS C ZLIB - Definitions for the gzclose module
|
||||||
inffast.h INFFAST C ZLIB - Header to use inffast.c
|
inffast.h INFFAST C ZLIB - Header to use inffast.c
|
||||||
inffixed.h INFFIXED C ZLIB - Table for decoding fixed codes
|
inffixed.h INFFIXED C ZLIB - Table for decoding fixed codes
|
||||||
inflate.h INFLATE C ZLIB - Internal inflate state definitions
|
inflate.h INFLATE C ZLIB - Internal inflate state definitions
|
||||||
@@ -108,4 +112,4 @@ Notes: For AS400 ILE RPG programmers, a /copy member defining the ZLIB
|
|||||||
implementation does not handle conversion from/to ASCII, so
|
implementation does not handle conversion from/to ASCII, so
|
||||||
text data code conversions must be done explicitely.
|
text data code conversions must be done explicitely.
|
||||||
|
|
||||||
Always open zipped files in binary mode.
|
Mainly for the reason above, always open zipped files in binary mode.
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
* ZLIB.INC - Interface to the general purpose compression library
|
* ZLIB.INC - Interface to the general purpose compression library
|
||||||
*
|
*
|
||||||
* ILE RPG400 version by Patrick Monnerat, DATASPHERE.
|
* ILE RPG400 version by Patrick Monnerat, DATASPHERE.
|
||||||
* Version 1.2.3.9
|
* Version 1.2.7
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* WARNING:
|
* WARNING:
|
||||||
@@ -22,16 +22,25 @@
|
|||||||
*
|
*
|
||||||
* Versioning information.
|
* Versioning information.
|
||||||
*
|
*
|
||||||
D ZLIB_VERSION C '1.2.3.9'
|
D ZLIB_VERSION C '1.2.7'
|
||||||
D ZLIB_VERNUM C X'1239'
|
D ZLIB_VERNUM C X'1270'
|
||||||
|
D ZLIB_VER_MAJOR C 1
|
||||||
|
D ZLIB_VER_MINOR C 2
|
||||||
|
D ZLIB_VER_REVISION...
|
||||||
|
D C 7
|
||||||
|
D ZLIB_VER_SUBREVISION...
|
||||||
|
D C 0
|
||||||
*
|
*
|
||||||
* Other equates.
|
* Other equates.
|
||||||
*
|
*
|
||||||
D Z_NO_FLUSH C 0
|
D Z_NO_FLUSH C 0
|
||||||
|
D Z_PARTIAL_FLUSH...
|
||||||
|
D C 1
|
||||||
D Z_SYNC_FLUSH C 2
|
D Z_SYNC_FLUSH C 2
|
||||||
D Z_FULL_FLUSH C 3
|
D Z_FULL_FLUSH C 3
|
||||||
D Z_FINISH C 4
|
D Z_FINISH C 4
|
||||||
D Z_BLOCK C 5
|
D Z_BLOCK C 5
|
||||||
|
D Z_TREES C 6
|
||||||
*
|
*
|
||||||
D Z_OK C 0
|
D Z_OK C 0
|
||||||
D Z_STREAM_END C 1
|
D Z_STREAM_END C 1
|
||||||
@@ -72,6 +81,7 @@
|
|||||||
D z_streamp S * Stream struct ptr
|
D z_streamp S * Stream struct ptr
|
||||||
D gzFile S * File pointer
|
D gzFile S * File pointer
|
||||||
D z_off_t S 10i 0 Stream offsets
|
D z_off_t S 10i 0 Stream offsets
|
||||||
|
D z_off64_t S 20i 0 Stream offsets
|
||||||
*
|
*
|
||||||
**************************************************************************
|
**************************************************************************
|
||||||
* Structures
|
* Structures
|
||||||
@@ -101,15 +111,15 @@
|
|||||||
**************************************************************************
|
**************************************************************************
|
||||||
*
|
*
|
||||||
D compress PR 10I 0 extproc('compress')
|
D compress PR 10I 0 extproc('compress')
|
||||||
D dest 32767 options(*varsize) Destination buffer
|
D dest 65535 options(*varsize) Destination buffer
|
||||||
D destLen 10U 0 Destination length
|
D destLen 10U 0 Destination length
|
||||||
D source 32767 const options(*varsize) Source buffer
|
D source 65535 const options(*varsize) Source buffer
|
||||||
D sourceLen 10u 0 value Source length
|
D sourceLen 10u 0 value Source length
|
||||||
*
|
*
|
||||||
D compress2 PR 10I 0 extproc('compress2')
|
D compress2 PR 10I 0 extproc('compress2')
|
||||||
D dest 32767 options(*varsize) Destination buffer
|
D dest 65535 options(*varsize) Destination buffer
|
||||||
D destLen 10U 0 Destination length
|
D destLen 10U 0 Destination length
|
||||||
D source 32767 const options(*varsize) Source buffer
|
D source 65535 const options(*varsize) Source buffer
|
||||||
D sourceLen 10U 0 value Source length
|
D sourceLen 10U 0 value Source length
|
||||||
D level 10I 0 value Compression level
|
D level 10I 0 value Compression level
|
||||||
*
|
*
|
||||||
@@ -117,34 +127,50 @@
|
|||||||
D sourceLen 10U 0 value
|
D sourceLen 10U 0 value
|
||||||
*
|
*
|
||||||
D uncompress PR 10I 0 extproc('uncompress')
|
D uncompress PR 10I 0 extproc('uncompress')
|
||||||
D dest 32767 options(*varsize) Destination buffer
|
D dest 65535 options(*varsize) Destination buffer
|
||||||
D destLen 10U 0 Destination length
|
D destLen 10U 0 Destination length
|
||||||
D source 32767 const options(*varsize) Source buffer
|
D source 65535 const options(*varsize) Source buffer
|
||||||
D sourceLen 10U 0 value Source length
|
D sourceLen 10U 0 value Source length
|
||||||
*
|
*
|
||||||
|
/if not defined(LARGE_FILES)
|
||||||
D gzopen PR extproc('gzopen')
|
D gzopen PR extproc('gzopen')
|
||||||
D like(gzFile)
|
D like(gzFile)
|
||||||
D path * value options(*string) File pathname
|
D path * value options(*string) File pathname
|
||||||
D mode * value options(*string) Open mode
|
D mode * value options(*string) Open mode
|
||||||
|
/else
|
||||||
|
D gzopen PR extproc('gzopen64')
|
||||||
|
D like(gzFile)
|
||||||
|
D path * value options(*string) File pathname
|
||||||
|
D mode * value options(*string) Open mode
|
||||||
|
*
|
||||||
|
D gzopen64 PR extproc('gzopen64')
|
||||||
|
D like(gzFile)
|
||||||
|
D path * value options(*string) File pathname
|
||||||
|
D mode * value options(*string) Open mode
|
||||||
|
/endif
|
||||||
*
|
*
|
||||||
D gzdopen PR extproc('gzdopen')
|
D gzdopen PR extproc('gzdopen')
|
||||||
D like(gzFile)
|
D like(gzFile)
|
||||||
D fd 10i 0 value File descriptor
|
D fd 10I 0 value File descriptor
|
||||||
D mode * value options(*string) Open mode
|
D mode * value options(*string) Open mode
|
||||||
*
|
*
|
||||||
|
D gzbuffer PR 10I 0 extproc('gzbuffer')
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
D size 10U 0 value
|
||||||
|
*
|
||||||
D gzsetparams PR 10I 0 extproc('gzsetparams')
|
D gzsetparams PR 10I 0 extproc('gzsetparams')
|
||||||
D file value like(gzFile) File pointer
|
D file value like(gzFile) File pointer
|
||||||
D level 10I 0 value
|
D level 10I 0 value
|
||||||
D strategy 10i 0 value
|
D strategy 10I 0 value
|
||||||
*
|
*
|
||||||
D gzread PR 10I 0 extproc('gzread')
|
D gzread PR 10I 0 extproc('gzread')
|
||||||
D file value like(gzFile) File pointer
|
D file value like(gzFile) File pointer
|
||||||
D buf 32767 options(*varsize) Buffer
|
D buf 65535 options(*varsize) Buffer
|
||||||
D len 10u 0 value Buffer length
|
D len 10u 0 value Buffer length
|
||||||
*
|
*
|
||||||
D gzwrite PR 10I 0 extproc('gzwrite')
|
D gzwrite PR 10I 0 extproc('gzwrite')
|
||||||
D file value like(gzFile) File pointer
|
D file value like(gzFile) File pointer
|
||||||
D buf 32767 const options(*varsize) Buffer
|
D buf 65535 const options(*varsize) Buffer
|
||||||
D len 10u 0 value Buffer length
|
D len 10u 0 value Buffer length
|
||||||
*
|
*
|
||||||
D gzputs PR 10I 0 extproc('gzputs')
|
D gzputs PR 10I 0 extproc('gzputs')
|
||||||
@@ -153,27 +179,85 @@
|
|||||||
*
|
*
|
||||||
D gzgets PR * extproc('gzgets')
|
D gzgets PR * extproc('gzgets')
|
||||||
D file value like(gzFile) File pointer
|
D file value like(gzFile) File pointer
|
||||||
D buf 32767 options(*varsize) Read buffer
|
D buf 65535 options(*varsize) Read buffer
|
||||||
D len 10i 0 value Buffer length
|
D len 10i 0 value Buffer length
|
||||||
*
|
*
|
||||||
|
D gzputc PR 10i 0 extproc('gzputc')
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
D c 10I 0 value Character to write
|
||||||
|
*
|
||||||
|
D gzgetc PR 10i 0 extproc('gzgetc')
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
*
|
||||||
|
D gzgetc_ PR 10i 0 extproc('gzgetc_')
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
*
|
||||||
|
D gzungetc PR 10i 0 extproc('gzungetc')
|
||||||
|
D c 10I 0 value Character to push
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
*
|
||||||
D gzflush PR 10i 0 extproc('gzflush')
|
D gzflush PR 10i 0 extproc('gzflush')
|
||||||
D file value like(gzFile) File pointer
|
D file value like(gzFile) File pointer
|
||||||
D flush 10I 0 value Type of flush
|
D flush 10I 0 value Type of flush
|
||||||
*
|
*
|
||||||
|
/if not defined(LARGE_FILES)
|
||||||
D gzseek PR extproc('gzseek')
|
D gzseek PR extproc('gzseek')
|
||||||
D like(z_off_t)
|
D like(z_off_t)
|
||||||
D file value like(gzFile) File pointer
|
D file value like(gzFile) File pointer
|
||||||
D offset value like(z_off_t) Offset
|
D offset value like(z_off_t) Offset
|
||||||
D whence 10i 0 value Origin
|
D whence 10i 0 value Origin
|
||||||
|
/else
|
||||||
|
D gzseek PR extproc('gzseek64')
|
||||||
|
D like(z_off_t)
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
D offset value like(z_off_t) Offset
|
||||||
|
D whence 10i 0 value Origin
|
||||||
|
*
|
||||||
|
D gzseek64 PR extproc('gzseek64')
|
||||||
|
D like(z_off64_t)
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
D offset value like(z_off64_t) Offset
|
||||||
|
D whence 10i 0 value Origin
|
||||||
|
/endif
|
||||||
*
|
*
|
||||||
D gzrewind PR 10i 0 extproc('gzrewind')
|
D gzrewind PR 10i 0 extproc('gzrewind')
|
||||||
D file value like(gzFile) File pointer
|
D file value like(gzFile) File pointer
|
||||||
*
|
*
|
||||||
|
/if not defined(LARGE_FILES)
|
||||||
D gztell PR extproc('gztell')
|
D gztell PR extproc('gztell')
|
||||||
D like(z_off_t)
|
D like(z_off_t)
|
||||||
D file value like(gzFile) File pointer
|
D file value like(gzFile) File pointer
|
||||||
|
/else
|
||||||
|
D gztell PR extproc('gztell64')
|
||||||
|
D like(z_off_t)
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
*
|
||||||
|
D gztell64 PR extproc('gztell64')
|
||||||
|
D like(z_off64_t)
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
/endif
|
||||||
|
*
|
||||||
|
/if not defined(LARGE_FILES)
|
||||||
|
D gzoffset PR extproc('gzoffset')
|
||||||
|
D like(z_off_t)
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
/else
|
||||||
|
D gzoffset PR extproc('gzoffset64')
|
||||||
|
D like(z_off_t)
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
*
|
||||||
|
D gzoffset64 PR extproc('gzoffset64')
|
||||||
|
D like(z_off64_t)
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
/endif
|
||||||
*
|
*
|
||||||
D gzeof PR 10i 0 extproc('gzeof')
|
D gzeof PR 10i 0 extproc('gzeof')
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
*
|
||||||
|
D gzclose_r PR 10i 0 extproc('gzclose_r')
|
||||||
|
D file value like(gzFile) File pointer
|
||||||
|
*
|
||||||
|
D gzclose_w PR 10i 0 extproc('gzclose_w')
|
||||||
D file value like(gzFile) File pointer
|
D file value like(gzFile) File pointer
|
||||||
*
|
*
|
||||||
D gzclose PR 10i 0 extproc('gzclose')
|
D gzclose PR 10i 0 extproc('gzclose')
|
||||||
@@ -234,7 +318,7 @@
|
|||||||
D deflateSetDictionary...
|
D deflateSetDictionary...
|
||||||
D PR 10I 0 extproc('deflateSetDictionary') Init. dictionary
|
D PR 10I 0 extproc('deflateSetDictionary') Init. dictionary
|
||||||
D strm like(z_stream) Compression stream
|
D strm like(z_stream) Compression stream
|
||||||
D dictionary 32767 const options(*varsize) Dictionary bytes
|
D dictionary 65535 const options(*varsize) Dictionary bytes
|
||||||
D dictLength 10U 0 value Dictionary length
|
D dictLength 10U 0 value Dictionary length
|
||||||
*
|
*
|
||||||
D deflateCopy PR 10I 0 extproc('deflateCopy') Compress strm 2 strm
|
D deflateCopy PR 10I 0 extproc('deflateCopy') Compress strm 2 strm
|
||||||
@@ -253,9 +337,14 @@
|
|||||||
D strm like(z_stream) Compression stream
|
D strm like(z_stream) Compression stream
|
||||||
D sourcelen 10U 0 value Compression level
|
D sourcelen 10U 0 value Compression level
|
||||||
*
|
*
|
||||||
|
D deflatePending PR 10I 0 extproc('deflatePending') Change level & strat
|
||||||
|
D strm like(z_stream) Compression stream
|
||||||
|
D pending 10U 0 Pending bytes
|
||||||
|
D bits 10I 0 Pending bits
|
||||||
|
*
|
||||||
D deflatePrime PR 10I 0 extproc('deflatePrime') Change level & strat
|
D deflatePrime PR 10I 0 extproc('deflatePrime') Change level & strat
|
||||||
D strm like(z_stream) Compression stream
|
D strm like(z_stream) Compression stream
|
||||||
D bits 10I 0 value Number of bits to insert
|
D bits 10I 0 value # of bits to insert
|
||||||
D value 10I 0 value Bits to insert
|
D value 10I 0 value Bits to insert
|
||||||
*
|
*
|
||||||
D inflateInit2 PR 10I 0 extproc('inflateInit2_') Init. expansion
|
D inflateInit2 PR 10I 0 extproc('inflateInit2_') Init. expansion
|
||||||
@@ -267,7 +356,7 @@
|
|||||||
D inflateSetDictionary...
|
D inflateSetDictionary...
|
||||||
D PR 10I 0 extproc('inflateSetDictionary') Init. dictionary
|
D PR 10I 0 extproc('inflateSetDictionary') Init. dictionary
|
||||||
D strm like(z_stream) Expansion stream
|
D strm like(z_stream) Expansion stream
|
||||||
D dictionary 32767 const options(*varsize) Dictionary bytes
|
D dictionary 65535 const options(*varsize) Dictionary bytes
|
||||||
D dictLength 10U 0 value Dictionary length
|
D dictLength 10U 0 value Dictionary length
|
||||||
*
|
*
|
||||||
D inflateSync PR 10I 0 extproc('inflateSync') Sync. expansion
|
D inflateSync PR 10I 0 extproc('inflateSync') Sync. expansion
|
||||||
@@ -278,13 +367,25 @@
|
|||||||
D source like(z_stream) Source stream
|
D source like(z_stream) Source stream
|
||||||
*
|
*
|
||||||
D inflateReset PR 10I 0 extproc('inflateReset') End and init. stream
|
D inflateReset PR 10I 0 extproc('inflateReset') End and init. stream
|
||||||
|
D strm like(z_stream) Expansion stream
|
||||||
|
*
|
||||||
|
D inflateReset2 PR 10I 0 extproc('inflateReset2') End and init. stream
|
||||||
|
D strm like(z_stream) Expansion stream
|
||||||
|
D windowBits 10I 0 value Log2(buffer size)
|
||||||
|
*
|
||||||
|
D inflatePrime PR 10I 0 extproc('inflatePrime') Insert bits
|
||||||
|
D strm like(z_stream) Expansion stream
|
||||||
|
D bits 10I 0 value Bit count
|
||||||
|
D value 10I 0 value Bits to insert
|
||||||
|
*
|
||||||
|
D inflateMark PR 10I 0 extproc('inflateMark') Get inflate info
|
||||||
D strm like(z_stream) Expansion stream
|
D strm like(z_stream) Expansion stream
|
||||||
*
|
*
|
||||||
D inflateBackInit...
|
D inflateBackInit...
|
||||||
D PR 10I 0 extproc('inflateBackInit_')
|
D PR 10I 0 extproc('inflateBackInit_')
|
||||||
D strm like(z_stream) Expansion stream
|
D strm like(z_stream) Expansion stream
|
||||||
D windowBits 10I 0 value Log2(buffer size)
|
D windowBits 10I 0 value Log2(buffer size)
|
||||||
D window 32767 options(*varsize) Buffer
|
D window 65535 options(*varsize) Buffer
|
||||||
D version * value options(*string) Version string
|
D version * value options(*string) Version string
|
||||||
D stream_size 10i 0 value Stream struct. size
|
D stream_size 10i 0 value Stream struct. size
|
||||||
*
|
*
|
||||||
@@ -307,12 +408,12 @@
|
|||||||
*
|
*
|
||||||
D adler32 PR 10U 0 extproc('adler32') New checksum
|
D adler32 PR 10U 0 extproc('adler32') New checksum
|
||||||
D adler 10U 0 value Old checksum
|
D adler 10U 0 value Old checksum
|
||||||
D buf 32767 const options(*varsize) Bytes to accumulate
|
D buf 65535 const options(*varsize) Bytes to accumulate
|
||||||
D len 10U 0 value Buffer length
|
D len 10U 0 value Buffer length
|
||||||
*
|
*
|
||||||
D crc32 PR 10U 0 extproc('crc32') New checksum
|
D crc32 PR 10U 0 extproc('crc32') New checksum
|
||||||
D crc 10U 0 value Old checksum
|
D crc 10U 0 value Old checksum
|
||||||
D buf 32767 const options(*varsize) Bytes to accumulate
|
D buf 65535 const options(*varsize) Bytes to accumulate
|
||||||
D len 10U 0 value Buffer length
|
D len 10U 0 value Buffer length
|
||||||
*
|
*
|
||||||
**************************************************************************
|
**************************************************************************
|
||||||
@@ -328,4 +429,17 @@
|
|||||||
*
|
*
|
||||||
D get_crc_table PR * extproc('get_crc_table') Ptr to ulongs
|
D get_crc_table PR * extproc('get_crc_table') Ptr to ulongs
|
||||||
*
|
*
|
||||||
|
D inflateUndermine...
|
||||||
|
D PR 10I 0 extproc('inflateUndermine')
|
||||||
|
D strm like(z_stream) Expansion stream
|
||||||
|
D arg 10I 0 value Error code
|
||||||
|
*
|
||||||
|
D inflateResetKeep...
|
||||||
|
D PR 10I 0 extproc('inflateResetKeep') End and init. stream
|
||||||
|
D strm like(z_stream) Expansion stream
|
||||||
|
*
|
||||||
|
D deflateResetKeep...
|
||||||
|
D PR 10I 0 extproc('deflateResetKeep') End and init. stream
|
||||||
|
D strm like(z_stream) Expansion stream
|
||||||
|
*
|
||||||
/endif
|
/endif
|
||||||
542
configure
vendored
542
configure
vendored
@@ -13,64 +13,84 @@
|
|||||||
# If you have problems, try without defining CC and CFLAGS before reporting
|
# If you have problems, try without defining CC and CFLAGS before reporting
|
||||||
# an error.
|
# an error.
|
||||||
|
|
||||||
# make sure we are running under a compatible shell (stolen from ffmpeg and libnfo)
|
# start off configure.log
|
||||||
if test "0$ZLIB_CONFIGURE_EXEC" -lt 1; then
|
echo -------------------- >> configure.log
|
||||||
unset foo
|
echo $0 $* >> configure.log
|
||||||
(: ${foo%%bar}) 2>/dev/null && ! (: ${foo?}) 2>/dev/null
|
date >> configure.log
|
||||||
if test "$?" -ne 0; then
|
|
||||||
ZLIB_CONFIGURE_EXEC=1
|
|
||||||
export ZLIB_CONFIGURE_EXEC
|
|
||||||
type "bash" > /dev/null 2>&1 && exec bash "$0" "$@"
|
|
||||||
type "ksh" > /dev/null 2>&1 && exec ksh "$0" "$@"
|
|
||||||
if test -x /usr/xpg4/bin/sh; then
|
|
||||||
exec /usr/xpg4/bin/sh "$0" "$@"
|
|
||||||
fi
|
|
||||||
# echo "No compatible shell script interpreter found."
|
|
||||||
# exit 1
|
|
||||||
# we could give up here, but go ahead and give their old sh a try
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
# set command prefix for cross-compilation
|
||||||
if [ -n "${CHOST}" ]; then
|
if [ -n "${CHOST}" ]; then
|
||||||
uname="$(echo "${CHOST}" | sed 's/.*-.*-\(.*\)-.*/\1/')"
|
uname="`echo "${CHOST}" | sed -e 's/^[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)-.*$/\1/'`"
|
||||||
CROSS_PREFIX="${CHOST}-"
|
CROSS_PREFIX="${CHOST}-"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# destination name for static library
|
||||||
STATICLIB=libz.a
|
STATICLIB=libz.a
|
||||||
LDFLAGS="${LDFLAGS} -L. ${STATICLIB}"
|
|
||||||
|
# extract zlib version numbers from zlib.h
|
||||||
VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`
|
VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`
|
||||||
VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < zlib.h`
|
VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < zlib.h`
|
||||||
VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h`
|
VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h`
|
||||||
VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h`
|
VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h`
|
||||||
AR=${AR-"${CROSS_PREFIX}ar"}
|
|
||||||
AR_RC="${AR} rc"
|
# establish commands for library building
|
||||||
RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"}
|
if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then
|
||||||
|
AR=${AR-"${CROSS_PREFIX}ar"}
|
||||||
|
test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
|
||||||
|
else
|
||||||
|
AR=${AR-"ar"}
|
||||||
|
test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
|
||||||
|
fi
|
||||||
|
ARFLAGS=${ARFLAGS-"rc"}
|
||||||
|
if "${CROSS_PREFIX}ranlib" --version >/dev/null 2>/dev/null || test $? -lt 126; then
|
||||||
|
RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"}
|
||||||
|
test -n "${CROSS_PREFIX}" && echo Using ${RANLIB} | tee -a configure.log
|
||||||
|
else
|
||||||
|
RANLIB=${RANLIB-"ranlib"}
|
||||||
|
fi
|
||||||
|
if "${CROSS_PREFIX}nm" --version >/dev/null 2>/dev/null || test $? -lt 126; then
|
||||||
|
NM=${NM-"${CROSS_PREFIX}nm"}
|
||||||
|
test -n "${CROSS_PREFIX}" && echo Using ${NM} | tee -a configure.log
|
||||||
|
else
|
||||||
|
NM=${NM-"nm"}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set defaults before processing command line options
|
||||||
LDCONFIG=${LDCONFIG-"ldconfig"}
|
LDCONFIG=${LDCONFIG-"ldconfig"}
|
||||||
LDSHAREDLIBC="${LDSHAREDLIBC-"-lc"}"
|
LDSHAREDLIBC="${LDSHAREDLIBC--lc}"
|
||||||
|
ARCHS=
|
||||||
prefix=${prefix-/usr/local}
|
prefix=${prefix-/usr/local}
|
||||||
exec_prefix=${exec_prefix-'${prefix}'}
|
exec_prefix=${exec_prefix-'${prefix}'}
|
||||||
libdir=${libdir-'${exec_prefix}/lib'}
|
libdir=${libdir-'${exec_prefix}/lib'}
|
||||||
|
sharedlibdir=${sharedlibdir-'${libdir}'}
|
||||||
includedir=${includedir-'${prefix}/include'}
|
includedir=${includedir-'${prefix}/include'}
|
||||||
mandir=${mandir-'${prefix}/share/man'}
|
mandir=${mandir-'${prefix}/share/man'}
|
||||||
shared_ext='.so'
|
shared_ext='.so'
|
||||||
shared=1
|
shared=1
|
||||||
|
solo=0
|
||||||
|
cover=0
|
||||||
zprefix=0
|
zprefix=0
|
||||||
build64=0
|
build64=0
|
||||||
gcc=0
|
gcc=0
|
||||||
old_cc="$CC"
|
old_cc="$CC"
|
||||||
old_cflags="$CFLAGS"
|
old_cflags="$CFLAGS"
|
||||||
|
OBJC='$(OBJZ) $(OBJG)'
|
||||||
|
PIC_OBJC='$(PIC_OBJZ) $(PIC_OBJG)'
|
||||||
|
|
||||||
|
# process command line options
|
||||||
while test $# -ge 1
|
while test $# -ge 1
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-h* | --help)
|
-h* | --help)
|
||||||
echo 'usage:'
|
echo 'usage:' | tee -a configure.log
|
||||||
echo ' configure [--zprefix] [--prefix=PREFIX] [--eprefix=EXPREFIX]'
|
echo ' configure [--zprefix] [--prefix=PREFIX] [--eprefix=EXPREFIX]' | tee -a configure.log
|
||||||
echo ' [--static] [--64] [--libdir=LIBDIR] [--includedir=INCLUDEDIR]'
|
echo ' [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]' | tee -a configure.log
|
||||||
|
echo ' [--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]' | tee -a configure.log
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
-p*=* | --prefix=*) prefix=`echo $1 | sed 's/.*=//'`; shift ;;
|
-p*=* | --prefix=*) prefix=`echo $1 | sed 's/.*=//'`; shift ;;
|
||||||
-e*=* | --eprefix=*) exec_prefix=`echo $1 | sed 's/.*=//'`; shift ;;
|
-e*=* | --eprefix=*) exec_prefix=`echo $1 | sed 's/.*=//'`; shift ;;
|
||||||
-l*=* | --libdir=*) libdir=`echo $1 | sed 's/.*=//'`; shift ;;
|
-l*=* | --libdir=*) libdir=`echo $1 | sed 's/.*=//'`; shift ;;
|
||||||
|
--sharedlibdir=*) sharedlibdir=`echo $1 | sed 's/.*=//'`; shift ;;
|
||||||
-i*=* | --includedir=*) includedir=`echo $1 | sed 's/.*=//'`;shift ;;
|
-i*=* | --includedir=*) includedir=`echo $1 | sed 's/.*=//'`;shift ;;
|
||||||
-u*=* | --uname=*) uname=`echo $1 | sed 's/.*=//'`;shift ;;
|
-u*=* | --uname=*) uname=`echo $1 | sed 's/.*=//'`;shift ;;
|
||||||
-p* | --prefix) prefix="$2"; shift; shift ;;
|
-p* | --prefix) prefix="$2"; shift; shift ;;
|
||||||
@@ -79,32 +99,93 @@ case "$1" in
|
|||||||
-i* | --includedir) includedir="$2"; shift; shift ;;
|
-i* | --includedir) includedir="$2"; shift; shift ;;
|
||||||
-s* | --shared | --enable-shared) shared=1; shift ;;
|
-s* | --shared | --enable-shared) shared=1; shift ;;
|
||||||
-t | --static) shared=0; shift ;;
|
-t | --static) shared=0; shift ;;
|
||||||
|
--solo) solo=1; shift ;;
|
||||||
|
--cover) cover=1; shift ;;
|
||||||
-z* | --zprefix) zprefix=1; shift ;;
|
-z* | --zprefix) zprefix=1; shift ;;
|
||||||
-6* | --64) build64=1; shift ;;
|
-6* | --64) build64=1; shift ;;
|
||||||
--sysconfdir=*) echo "ignored option: --sysconfdir"; shift ;;
|
-a*=* | --archs=*) ARCHS=`echo $1 | sed 's/.*=//'`; shift ;;
|
||||||
--localstatedir=*) echo "ignored option: --localstatedir"; shift ;;
|
--sysconfdir=*) echo "ignored option: --sysconfdir" | tee -a configure.log; shift ;;
|
||||||
*) echo "unknown option: $1"; echo "$0 --help for help"; exit 1 ;;
|
--localstatedir=*) echo "ignored option: --localstatedir" | tee -a configure.log; shift ;;
|
||||||
|
*) echo "unknown option: $1"; echo "$0 --help for help" | tee -a configure.log; exit 1 ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# define functions for testing compiler and library characteristics and logging the results
|
||||||
test=ztest$$
|
test=ztest$$
|
||||||
|
|
||||||
|
show()
|
||||||
|
{
|
||||||
|
case "$*" in
|
||||||
|
*$test.c*)
|
||||||
|
echo === $test.c === >> configure.log
|
||||||
|
cat $test.c >> configure.log
|
||||||
|
echo === >> configure.log;;
|
||||||
|
esac
|
||||||
|
echo $* >> configure.log
|
||||||
|
}
|
||||||
|
|
||||||
|
cat > $test.c <<EOF
|
||||||
|
#error error
|
||||||
|
EOF
|
||||||
|
if ($CC -c $CFLAGS $test.c) 2>/dev/null; then
|
||||||
|
try()
|
||||||
|
{
|
||||||
|
show $*
|
||||||
|
test "`( $* ) 2>&1 | tee -a configure.log`" = ""
|
||||||
|
}
|
||||||
|
echo - using any output from compiler to indicate an error >> configure.log
|
||||||
|
else
|
||||||
|
try()
|
||||||
|
{
|
||||||
|
show $*
|
||||||
|
( $* ) >> configure.log 2>&1
|
||||||
|
ret=$?
|
||||||
|
if test $ret -ne 0; then
|
||||||
|
echo "(exit code "$ret")" >> configure.log
|
||||||
|
fi
|
||||||
|
return $ret
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
tryboth()
|
||||||
|
{
|
||||||
|
show $*
|
||||||
|
got=`( $* ) 2>&1`
|
||||||
|
ret=$?
|
||||||
|
printf %s "$got" >> configure.log
|
||||||
|
if test $ret -ne 0; then
|
||||||
|
return $ret
|
||||||
|
fi
|
||||||
|
test "$got" = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
echo >> configure.log
|
||||||
|
|
||||||
|
# check for gcc vs. cc and set compile and link flags based on the system identified by uname
|
||||||
cat > $test.c <<EOF
|
cat > $test.c <<EOF
|
||||||
extern int getchar();
|
extern int getchar();
|
||||||
int hello() {return getchar();}
|
int hello() {return getchar();}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test -z "$CC" && echo Checking for gcc...
|
test -z "$CC" && echo Checking for ${CROSS_PREFIX}gcc... | tee -a configure.log
|
||||||
cc=${CC-${CROSS_PREFIX}gcc}
|
cc=${CC-${CROSS_PREFIX}gcc}
|
||||||
cflags=${CFLAGS-"-O3"}
|
cflags=${CFLAGS-"-O3"}
|
||||||
# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
|
# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
|
||||||
case "$cc" in
|
case "$cc" in
|
||||||
*gcc*) gcc=1 ;;
|
*gcc*) gcc=1 ;;
|
||||||
|
*clang*) gcc=1 ;;
|
||||||
|
esac
|
||||||
|
case `$cc -v 2>&1` in
|
||||||
|
*gcc*) gcc=1 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then
|
show $cc -c $cflags $test.c
|
||||||
|
if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) >> configure.log 2>&1; then
|
||||||
|
echo ... using gcc >> configure.log
|
||||||
CC="$cc"
|
CC="$cc"
|
||||||
SFLAGS="${CFLAGS-"-O3"} -fPIC"
|
CFLAGS="${CFLAGS--O3} ${ARCHS}"
|
||||||
CFLAGS="${CFLAGS-"-O3"}"
|
SFLAGS="${CFLAGS--O3} -fPIC"
|
||||||
|
LDFLAGS="${LDFLAGS} ${ARCHS}"
|
||||||
if test $build64 -eq 1; then
|
if test $build64 -eq 1; then
|
||||||
CFLAGS="${CFLAGS} -m64"
|
CFLAGS="${CFLAGS} -m64"
|
||||||
SFLAGS="${SFLAGS} -m64"
|
SFLAGS="${SFLAGS} -m64"
|
||||||
@@ -116,10 +197,19 @@ if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then
|
|||||||
uname=`(uname -s || echo unknown) 2>/dev/null`
|
uname=`(uname -s || echo unknown) 2>/dev/null`
|
||||||
fi
|
fi
|
||||||
case "$uname" in
|
case "$uname" in
|
||||||
Linux* | linux* | GNU | GNU/* | *BSD | DragonFly) LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"} ;;
|
Linux* | linux* | GNU | GNU/* | solaris*)
|
||||||
|
LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"} ;;
|
||||||
|
*BSD | *bsd* | DragonFly)
|
||||||
|
LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"}
|
||||||
|
LDCONFIG="ldconfig -m" ;;
|
||||||
CYGWIN* | Cygwin* | cygwin* | OS/2*)
|
CYGWIN* | Cygwin* | cygwin* | OS/2*)
|
||||||
EXE='.exe' ;;
|
EXE='.exe' ;;
|
||||||
MINGW*)
|
MINGW* | mingw*)
|
||||||
|
# temporary bypass
|
||||||
|
rm -f $test.[co] $test $test$shared_ext
|
||||||
|
echo "Please use win32/Makefile.gcc instead." | tee -a configure.log
|
||||||
|
exit 1
|
||||||
|
LDSHARED=${LDSHARED-"$cc -shared"}
|
||||||
LDSHAREDLIBC=""
|
LDSHAREDLIBC=""
|
||||||
EXE='.exe' ;;
|
EXE='.exe' ;;
|
||||||
QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
|
QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
|
||||||
@@ -135,16 +225,21 @@ if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then
|
|||||||
shared_ext='.sl'
|
shared_ext='.sl'
|
||||||
SHAREDLIB='libz.sl' ;;
|
SHAREDLIB='libz.sl' ;;
|
||||||
esac ;;
|
esac ;;
|
||||||
Darwin*) shared_ext='.dylib'
|
Darwin* | darwin*)
|
||||||
|
shared_ext='.dylib'
|
||||||
SHAREDLIB=libz$shared_ext
|
SHAREDLIB=libz$shared_ext
|
||||||
SHAREDLIBV=libz.$VER$shared_ext
|
SHAREDLIBV=libz.$VER$shared_ext
|
||||||
SHAREDLIBM=libz.$VER1$shared_ext
|
SHAREDLIBM=libz.$VER1$shared_ext
|
||||||
LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"} ;;
|
LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"}
|
||||||
|
AR="/usr/bin/libtool"
|
||||||
|
ARFLAGS="-o" ;;
|
||||||
*) LDSHARED=${LDSHARED-"$cc -shared"} ;;
|
*) LDSHARED=${LDSHARED-"$cc -shared"} ;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
# find system name and corresponding cc options
|
# find system name and corresponding cc options
|
||||||
CC=${CC-cc}
|
CC=${CC-cc}
|
||||||
|
gcc=0
|
||||||
|
echo ... using $CC >> configure.log
|
||||||
if test -z "$uname"; then
|
if test -z "$uname"; then
|
||||||
uname=`(uname -sr || echo unknown) 2>/dev/null`
|
uname=`(uname -sr || echo unknown) 2>/dev/null`
|
||||||
fi
|
fi
|
||||||
@@ -175,19 +270,34 @@ else
|
|||||||
CFLAGS=${CFLAGS-"-4 -O"}
|
CFLAGS=${CFLAGS-"-4 -O"}
|
||||||
LDSHARED=${LDSHARED-"cc"}
|
LDSHARED=${LDSHARED-"cc"}
|
||||||
RANLIB=${RANLIB-"true"}
|
RANLIB=${RANLIB-"true"}
|
||||||
AR_RC="cc -A" ;;
|
AR="cc"
|
||||||
|
ARFLAGS="-A" ;;
|
||||||
SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "}
|
SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "}
|
||||||
CFLAGS=${CFLAGS-"-O3"}
|
CFLAGS=${CFLAGS-"-O3"}
|
||||||
LDSHARED=${LDSHARED-"cc -dy -KPIC -G"} ;;
|
LDSHARED=${LDSHARED-"cc -dy -KPIC -G"} ;;
|
||||||
SunOS\ 5*) LDSHARED=${LDSHARED-"cc -G"}
|
SunOS\ 5* | solaris*)
|
||||||
case `(uname -m || echo unknown) 2>/dev/null` in
|
LDSHARED=${LDSHARED-"cc -G -h libz$shared_ext.$VER1"}
|
||||||
i86*)
|
SFLAGS=${CFLAGS-"-fast -KPIC"}
|
||||||
SFLAGS=${CFLAGS-"-xpentium -fast -KPIC -R."}
|
CFLAGS=${CFLAGS-"-fast"}
|
||||||
CFLAGS=${CFLAGS-"-xpentium -fast"} ;;
|
if test $build64 -eq 1; then
|
||||||
*)
|
# old versions of SunPRO/Workshop/Studio don't support -m64,
|
||||||
SFLAGS=${CFLAGS-"-fast -xcg92 -KPIC -R."}
|
# but newer ones do. Check for it.
|
||||||
CFLAGS=${CFLAGS-"-fast -xcg92"} ;;
|
flag64=`$CC -flags | egrep -- '^-m64'`
|
||||||
esac ;;
|
if test x"$flag64" != x"" ; then
|
||||||
|
CFLAGS="${CFLAGS} -m64"
|
||||||
|
SFLAGS="${SFLAGS} -m64"
|
||||||
|
else
|
||||||
|
case `(uname -m || echo unknown) 2>/dev/null` in
|
||||||
|
i86*)
|
||||||
|
SFLAGS="$SFLAGS -xarch=amd64"
|
||||||
|
CFLAGS="$CFLAGS -xarch=amd64" ;;
|
||||||
|
*)
|
||||||
|
SFLAGS="$SFLAGS -xarch=v9"
|
||||||
|
CFLAGS="$CFLAGS -xarch=v9" ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"}
|
SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"}
|
||||||
CFLAGS=${CFLAGS-"-O2"}
|
CFLAGS=${CFLAGS-"-O2"}
|
||||||
LDSHARED=${LDSHARED-"ld"} ;;
|
LDSHARED=${LDSHARED-"ld"} ;;
|
||||||
@@ -217,25 +327,25 @@ else
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# destination names for shared library if not defined above
|
||||||
SHAREDLIB=${SHAREDLIB-"libz$shared_ext"}
|
SHAREDLIB=${SHAREDLIB-"libz$shared_ext"}
|
||||||
SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"}
|
SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"}
|
||||||
SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}
|
SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}
|
||||||
|
|
||||||
|
echo >> configure.log
|
||||||
|
|
||||||
|
# see if shared library build supported
|
||||||
if test $shared -eq 1; then
|
if test $shared -eq 1; then
|
||||||
echo Checking for shared library support...
|
echo Checking for shared library support... | tee -a configure.log
|
||||||
# we must test in two steps (cc then ld), required at least on SunOS 4.x
|
# we must test in two steps (cc then ld), required at least on SunOS 4.x
|
||||||
if test "`($CC -w -c $SFLAGS $test.c) 2>&1`" = "" &&
|
if try $CC -w -c $SFLAGS $test.c &&
|
||||||
test "`($LDSHARED $SFLAGS -o $test$shared_ext $test.o) 2>&1`" = ""; then
|
try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then
|
||||||
echo Building shared library $SHAREDLIBV with $CC.
|
echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log
|
||||||
elif test -z "$old_cc" -a -z "$old_cflags"; then
|
elif test -z "$old_cc" -a -z "$old_cflags"; then
|
||||||
echo No shared library support.
|
echo No shared library support. | tee -a configure.log
|
||||||
shared=0;
|
shared=0;
|
||||||
else
|
else
|
||||||
echo Tested $CC -w -c $SFLAGS $test.c
|
echo 'No shared library support; try without defining CC and CFLAGS' | tee -a configure.log
|
||||||
$CC -w -c $SFLAGS $test.c
|
|
||||||
echo Tested $LDSHARED $SFLAGS -o $test$shared_ext $test.o
|
|
||||||
$LDSHARED $SFLAGS -o $test$shared_ext $test.o
|
|
||||||
echo 'No shared library support; try without defining CC and CFLAGS'
|
|
||||||
shared=0;
|
shared=0;
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -246,25 +356,45 @@ if test $shared -eq 0; then
|
|||||||
SHAREDLIB=""
|
SHAREDLIB=""
|
||||||
SHAREDLIBV=""
|
SHAREDLIBV=""
|
||||||
SHAREDLIBM=""
|
SHAREDLIBM=""
|
||||||
echo Building static library $STATICLIB version $VER with $CC.
|
echo Building static library $STATICLIB version $VER with $CC. | tee -a configure.log
|
||||||
else
|
else
|
||||||
ALL="static shared"
|
ALL="static shared"
|
||||||
TEST="all teststatic testshared"
|
TEST="all teststatic testshared"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo >> configure.log
|
||||||
|
|
||||||
|
# check for underscores in external names for use by assembler code
|
||||||
|
CPP=${CPP-"$CC -E"}
|
||||||
|
case $CFLAGS in
|
||||||
|
*ASMV*)
|
||||||
|
echo >> configure.log
|
||||||
|
show "$NM $test.o | grep _hello"
|
||||||
|
if test "`$NM $test.o | grep _hello | tee -a configure.log`" = ""; then
|
||||||
|
CPP="$CPP -DNO_UNDERLINE"
|
||||||
|
echo Checking for underline in external names... No. | tee -a configure.log
|
||||||
|
else
|
||||||
|
echo Checking for underline in external names... Yes. | tee -a configure.log
|
||||||
|
fi ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo >> configure.log
|
||||||
|
|
||||||
|
# check for large file support, and if none, check for fseeko()
|
||||||
cat > $test.c <<EOF
|
cat > $test.c <<EOF
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
off64_t dummy = 0;
|
off64_t dummy = 0;
|
||||||
EOF
|
EOF
|
||||||
if test "`($CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c; then
|
||||||
CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCE=1"
|
CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCE=1"
|
||||||
SFLAGS="${SFLAGS} -D_LARGEFILE64_SOURCE=1"
|
SFLAGS="${SFLAGS} -D_LARGEFILE64_SOURCE=1"
|
||||||
ALL="${ALL} all64"
|
ALL="${ALL} all64"
|
||||||
TEST="${TEST} test64"
|
TEST="${TEST} test64"
|
||||||
echo "Checking for off64_t... Yes."
|
echo "Checking for off64_t... Yes." | tee -a configure.log
|
||||||
echo "Checking for fseeko... Yes."
|
echo "Checking for fseeko... Yes." | tee -a configure.log
|
||||||
else
|
else
|
||||||
echo "Checking for off64_t... No."
|
echo "Checking for off64_t... No." | tee -a configure.log
|
||||||
|
echo >> configure.log
|
||||||
cat > $test.c <<EOF
|
cat > $test.c <<EOF
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
int main(void) {
|
int main(void) {
|
||||||
@@ -272,250 +402,367 @@ int main(void) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then
|
if try $CC $CFLAGS -o $test $test.c; then
|
||||||
echo "Checking for fseeko... Yes."
|
echo "Checking for fseeko... Yes." | tee -a configure.log
|
||||||
else
|
else
|
||||||
CFLAGS="${CFLAGS} -DNO_FSEEKO"
|
CFLAGS="${CFLAGS} -DNO_FSEEKO"
|
||||||
SFLAGS="${SFLAGS} -DNO_FSEEKO"
|
SFLAGS="${SFLAGS} -DNO_FSEEKO"
|
||||||
echo "Checking for fseeko... No."
|
echo "Checking for fseeko... No." | tee -a configure.log
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo >> configure.log
|
||||||
|
|
||||||
|
# check for strerror() for use by gz* functions
|
||||||
|
cat > $test.c <<EOF
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
int main() { return strlen(strerror(errno)); }
|
||||||
|
EOF
|
||||||
|
if try $CC $CFLAGS -o $test $test.c; then
|
||||||
|
echo "Checking for strerror... Yes." | tee -a configure.log
|
||||||
|
else
|
||||||
|
CFLAGS="${CFLAGS} -DNO_STRERROR"
|
||||||
|
SFLAGS="${SFLAGS} -DNO_STRERROR"
|
||||||
|
echo "Checking for strerror... No." | tee -a configure.log
|
||||||
|
fi
|
||||||
|
|
||||||
|
# copy clean zconf.h for subsequent edits
|
||||||
cp -p zconf.h.in zconf.h
|
cp -p zconf.h.in zconf.h
|
||||||
|
|
||||||
|
echo >> configure.log
|
||||||
|
|
||||||
|
# check for unistd.h and save result in zconf.h
|
||||||
cat > $test.c <<EOF
|
cat > $test.c <<EOF
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
int main() { return 0; }
|
int main() { return 0; }
|
||||||
EOF
|
EOF
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
sed < zconf.h "/^#ifdef HAVE_UNISTD_H.* may be/s/def HAVE_UNISTD_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
|
sed < zconf.h "/^#ifdef HAVE_UNISTD_H.* may be/s/def HAVE_UNISTD_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
|
||||||
mv zconf.temp.h zconf.h
|
mv zconf.temp.h zconf.h
|
||||||
echo "Checking for unistd.h... Yes."
|
echo "Checking for unistd.h... Yes." | tee -a configure.log
|
||||||
else
|
else
|
||||||
echo "Checking for unistd.h... No."
|
echo "Checking for unistd.h... No." | tee -a configure.log
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo >> configure.log
|
||||||
|
|
||||||
|
# check for stdarg.h and save result in zconf.h
|
||||||
|
cat > $test.c <<EOF
|
||||||
|
#include <stdarg.h>
|
||||||
|
int main() { return 0; }
|
||||||
|
EOF
|
||||||
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
|
sed < zconf.h "/^#ifdef HAVE_STDARG_H.* may be/s/def HAVE_STDARG_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
|
||||||
|
mv zconf.temp.h zconf.h
|
||||||
|
echo "Checking for stdarg.h... Yes." | tee -a configure.log
|
||||||
|
else
|
||||||
|
echo "Checking for stdarg.h... No." | tee -a configure.log
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if the z_ prefix was requested, save that in zconf.h
|
||||||
if test $zprefix -eq 1; then
|
if test $zprefix -eq 1; then
|
||||||
sed < zconf.h "/#ifdef Z_PREFIX.* may be/s/def Z_PREFIX\(.*\) may be/ 1\1 was/" > zconf.temp.h
|
sed < zconf.h "/#ifdef Z_PREFIX.* may be/s/def Z_PREFIX\(.*\) may be/ 1\1 was/" > zconf.temp.h
|
||||||
mv zconf.temp.h zconf.h
|
mv zconf.temp.h zconf.h
|
||||||
echo "Using z_ prefix on all symbols."
|
echo >> configure.log
|
||||||
|
echo "Using z_ prefix on all symbols." | tee -a configure.log
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# if --solo compilation was requested, save that in zconf.h and remove gz stuff from object lists
|
||||||
|
if test $solo -eq 1; then
|
||||||
|
sed '/#define ZCONF_H/a\
|
||||||
|
#define Z_SOLO
|
||||||
|
|
||||||
|
' < zconf.h > zconf.temp.h
|
||||||
|
mv zconf.temp.h zconf.h
|
||||||
|
OBJC='$(OBJZ)'
|
||||||
|
PIC_OBJC='$(PIC_OBJZ)'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if code coverage testing was requested, use older gcc if defined, e.g. "gcc-4.2" on Mac OS X
|
||||||
|
if test $cover -eq 1; then
|
||||||
|
CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage"
|
||||||
|
if test -n "$GCC_CLASSIC"; then
|
||||||
|
CC=$GCC_CLASSIC
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo >> configure.log
|
||||||
|
|
||||||
|
# conduct a series of tests to resolve eight possible cases of using "vs" or "s" printf functions
|
||||||
|
# (using stdarg or not), with or without "n" (proving size of buffer), and with or without a
|
||||||
|
# return value. The most secure result is vsnprintf() with a return value. snprintf() with a
|
||||||
|
# return value is secure as well, but then gzprintf() will be limited to 20 arguments.
|
||||||
cat > $test.c <<EOF
|
cat > $test.c <<EOF
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include "zconf.h"
|
#include "zconf.h"
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
#ifndef STDC
|
#ifndef STDC
|
||||||
choke me
|
choke me
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
|
echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()." | tee -a configure.log
|
||||||
|
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
echo >> configure.log
|
||||||
echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()."
|
|
||||||
|
|
||||||
cat > $test.c <<EOF
|
cat > $test.c <<EOF
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
int mytest(const char *fmt, ...)
|
int mytest(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
char buf[20];
|
char buf[20];
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
vsnprintf(buf, sizeof(buf), fmt, ap);
|
vsnprintf(buf, sizeof(buf), fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
return (mytest("Hello%d\n", 1));
|
return (mytest("Hello%d\n", 1));
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
if try $CC $CFLAGS -o $test $test.c; then
|
||||||
|
echo "Checking for vsnprintf() in stdio.h... Yes." | tee -a configure.log
|
||||||
|
|
||||||
if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then
|
echo >> configure.log
|
||||||
echo "Checking for vsnprintf() in stdio.h... Yes."
|
|
||||||
|
|
||||||
cat >$test.c <<EOF
|
cat >$test.c <<EOF
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
int mytest(const char *fmt, ...)
|
int mytest(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
char buf[20];
|
char buf[20];
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
n = vsnprintf(buf, sizeof(buf), fmt, ap);
|
n = vsnprintf(buf, sizeof(buf), fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
return (mytest("Hello%d\n", 1));
|
return (mytest("Hello%d\n", 1));
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
echo "Checking for return value of vsnprintf()... Yes."
|
echo "Checking for return value of vsnprintf()... Yes." | tee -a configure.log
|
||||||
else
|
else
|
||||||
CFLAGS="$CFLAGS -DHAS_vsnprintf_void"
|
CFLAGS="$CFLAGS -DHAS_vsnprintf_void"
|
||||||
SFLAGS="$SFLAGS -DHAS_vsnprintf_void"
|
SFLAGS="$SFLAGS -DHAS_vsnprintf_void"
|
||||||
echo "Checking for return value of vsnprintf()... No."
|
echo "Checking for return value of vsnprintf()... No." | tee -a configure.log
|
||||||
echo " WARNING: apparently vsnprintf() does not return a value. zlib"
|
echo " WARNING: apparently vsnprintf() does not return a value. zlib" | tee -a configure.log
|
||||||
echo " can build but will be open to possible string-format security"
|
echo " can build but will be open to possible string-format security" | tee -a configure.log
|
||||||
echo " vulnerabilities."
|
echo " vulnerabilities." | tee -a configure.log
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
CFLAGS="$CFLAGS -DNO_vsnprintf"
|
CFLAGS="$CFLAGS -DNO_vsnprintf"
|
||||||
SFLAGS="$SFLAGS -DNO_vsnprintf"
|
SFLAGS="$SFLAGS -DNO_vsnprintf"
|
||||||
echo "Checking for vsnprintf() in stdio.h... No."
|
echo "Checking for vsnprintf() in stdio.h... No." | tee -a configure.log
|
||||||
echo " WARNING: vsnprintf() not found, falling back to vsprintf(). zlib"
|
echo " WARNING: vsnprintf() not found, falling back to vsprintf(). zlib" | tee -a configure.log
|
||||||
echo " can build but will be open to possible buffer-overflow security"
|
echo " can build but will be open to possible buffer-overflow security" | tee -a configure.log
|
||||||
echo " vulnerabilities."
|
echo " vulnerabilities." | tee -a configure.log
|
||||||
|
|
||||||
|
echo >> configure.log
|
||||||
cat >$test.c <<EOF
|
cat >$test.c <<EOF
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
int mytest(const char *fmt, ...)
|
int mytest(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
char buf[20];
|
char buf[20];
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
n = vsprintf(buf, fmt, ap);
|
n = vsprintf(buf, fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
return (mytest("Hello%d\n", 1));
|
return (mytest("Hello%d\n", 1));
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
echo "Checking for return value of vsprintf()... Yes."
|
echo "Checking for return value of vsprintf()... Yes." | tee -a configure.log
|
||||||
else
|
else
|
||||||
CFLAGS="$CFLAGS -DHAS_vsprintf_void"
|
CFLAGS="$CFLAGS -DHAS_vsprintf_void"
|
||||||
SFLAGS="$SFLAGS -DHAS_vsprintf_void"
|
SFLAGS="$SFLAGS -DHAS_vsprintf_void"
|
||||||
echo "Checking for return value of vsprintf()... No."
|
echo "Checking for return value of vsprintf()... No." | tee -a configure.log
|
||||||
echo " WARNING: apparently vsprintf() does not return a value. zlib"
|
echo " WARNING: apparently vsprintf() does not return a value. zlib" | tee -a configure.log
|
||||||
echo " can build but will be open to possible string-format security"
|
echo " can build but will be open to possible string-format security" | tee -a configure.log
|
||||||
echo " vulnerabilities."
|
echo " vulnerabilities." | tee -a configure.log
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()."
|
echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()." | tee -a configure.log
|
||||||
|
|
||||||
|
echo >> configure.log
|
||||||
cat >$test.c <<EOF
|
cat >$test.c <<EOF
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
int mytest()
|
int mytest()
|
||||||
{
|
{
|
||||||
char buf[20];
|
char buf[20];
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%s", "foo");
|
snprintf(buf, sizeof(buf), "%s", "foo");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
return (mytest());
|
return (mytest());
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then
|
if try $CC $CFLAGS -o $test $test.c; then
|
||||||
echo "Checking for snprintf() in stdio.h... Yes."
|
echo "Checking for snprintf() in stdio.h... Yes." | tee -a configure.log
|
||||||
|
|
||||||
|
echo >> configure.log
|
||||||
cat >$test.c <<EOF
|
cat >$test.c <<EOF
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
int mytest()
|
int mytest()
|
||||||
{
|
{
|
||||||
char buf[20];
|
char buf[20];
|
||||||
|
|
||||||
return snprintf(buf, sizeof(buf), "%s", "foo");
|
return snprintf(buf, sizeof(buf), "%s", "foo");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
return (mytest());
|
return (mytest());
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
echo "Checking for return value of snprintf()... Yes."
|
echo "Checking for return value of snprintf()... Yes." | tee -a configure.log
|
||||||
else
|
else
|
||||||
CFLAGS="$CFLAGS -DHAS_snprintf_void"
|
CFLAGS="$CFLAGS -DHAS_snprintf_void"
|
||||||
SFLAGS="$SFLAGS -DHAS_snprintf_void"
|
SFLAGS="$SFLAGS -DHAS_snprintf_void"
|
||||||
echo "Checking for return value of snprintf()... No."
|
echo "Checking for return value of snprintf()... No." | tee -a configure.log
|
||||||
echo " WARNING: apparently snprintf() does not return a value. zlib"
|
echo " WARNING: apparently snprintf() does not return a value. zlib" | tee -a configure.log
|
||||||
echo " can build but will be open to possible string-format security"
|
echo " can build but will be open to possible string-format security" | tee -a configure.log
|
||||||
echo " vulnerabilities."
|
echo " vulnerabilities." | tee -a configure.log
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
CFLAGS="$CFLAGS -DNO_snprintf"
|
CFLAGS="$CFLAGS -DNO_snprintf"
|
||||||
SFLAGS="$SFLAGS -DNO_snprintf"
|
SFLAGS="$SFLAGS -DNO_snprintf"
|
||||||
echo "Checking for snprintf() in stdio.h... No."
|
echo "Checking for snprintf() in stdio.h... No." | tee -a configure.log
|
||||||
echo " WARNING: snprintf() not found, falling back to sprintf(). zlib"
|
echo " WARNING: snprintf() not found, falling back to sprintf(). zlib" | tee -a configure.log
|
||||||
echo " can build but will be open to possible buffer-overflow security"
|
echo " can build but will be open to possible buffer-overflow security" | tee -a configure.log
|
||||||
echo " vulnerabilities."
|
echo " vulnerabilities." | tee -a configure.log
|
||||||
|
|
||||||
|
echo >> configure.log
|
||||||
cat >$test.c <<EOF
|
cat >$test.c <<EOF
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
int mytest()
|
int mytest()
|
||||||
{
|
{
|
||||||
char buf[20];
|
char buf[20];
|
||||||
|
|
||||||
return sprintf(buf, "%s", "foo");
|
return sprintf(buf, "%s", "foo");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
return (mytest());
|
return (mytest());
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
echo "Checking for return value of sprintf()... Yes."
|
echo "Checking for return value of sprintf()... Yes." | tee -a configure.log
|
||||||
else
|
else
|
||||||
CFLAGS="$CFLAGS -DHAS_sprintf_void"
|
CFLAGS="$CFLAGS -DHAS_sprintf_void"
|
||||||
SFLAGS="$SFLAGS -DHAS_sprintf_void"
|
SFLAGS="$SFLAGS -DHAS_sprintf_void"
|
||||||
echo "Checking for return value of sprintf()... No."
|
echo "Checking for return value of sprintf()... No." | tee -a configure.log
|
||||||
echo " WARNING: apparently sprintf() does not return a value. zlib"
|
echo " WARNING: apparently sprintf() does not return a value. zlib" | tee -a configure.log
|
||||||
echo " can build but will be open to possible string-format security"
|
echo " can build but will be open to possible string-format security" | tee -a configure.log
|
||||||
echo " vulnerabilities."
|
echo " vulnerabilities." | tee -a configure.log
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CPP=${CPP-"$CC -E"}
|
# see if we can hide zlib internal symbols that are linked between separate source files
|
||||||
case $CFLAGS in
|
if test "$gcc" -eq 1; then
|
||||||
*ASMV*)
|
echo >> configure.log
|
||||||
if test "`nm $test.o | grep _hello`" = ""; then
|
cat > $test.c <<EOF
|
||||||
CPP="$CPP -DNO_UNDERLINE"
|
#define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
|
||||||
echo Checking for underline in external names... No.
|
int ZLIB_INTERNAL foo;
|
||||||
else
|
int main()
|
||||||
echo Checking for underline in external names... Yes.
|
{
|
||||||
fi ;;
|
return 0;
|
||||||
esac
|
}
|
||||||
|
EOF
|
||||||
|
if tryboth $CC -c $CFLAGS $test.c; then
|
||||||
|
CFLAGS="$CFLAGS -DHAVE_HIDDEN"
|
||||||
|
SFLAGS="$SFLAGS -DHAVE_HIDDEN"
|
||||||
|
echo "Checking for attribute(visibility) support... Yes." | tee -a configure.log
|
||||||
|
else
|
||||||
|
echo "Checking for attribute(visibility) support... No." | tee -a configure.log
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
rm -f $test.[co] $test $test$shared_ext
|
echo >> configure.log
|
||||||
|
|
||||||
# udpate Makefile
|
# find a four-byte unsiged integer type for crc calculations
|
||||||
|
cat > $test.c <<EOF
|
||||||
|
#include <stdio.h>
|
||||||
|
#define is32(n,t) for(n=1,k=0;n;n<<=1,k++);if(k==32){puts(t);return 0;}
|
||||||
|
int main() {
|
||||||
|
int k;
|
||||||
|
unsigned i;
|
||||||
|
unsigned long l;
|
||||||
|
unsigned short s;
|
||||||
|
is32(i, "unsigned")
|
||||||
|
is32(l, "unsigned long")
|
||||||
|
is32(s, "unsigned short")
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
Z_U4=""
|
||||||
|
if try $CC $CFLAGS $test.c -o $test && Z_U4=`./$test` && test -n "$Z_U4"; then
|
||||||
|
sed < zconf.h "/#define Z_U4/s/\/\* \.\/configure may/#define Z_U4 $Z_U4 \/* .\/configure put the/" > zconf.temp.h
|
||||||
|
mv zconf.temp.h zconf.h
|
||||||
|
echo "Looking for a four-byte integer type... Found." | tee -a configure.log
|
||||||
|
else
|
||||||
|
echo "Looking for a four-byte integer type... Not found." | tee -a configure.log
|
||||||
|
fi
|
||||||
|
|
||||||
|
# clean up files produced by running the compiler and linker
|
||||||
|
rm -f $test.[co] $test $test$shared_ext $test.gcno
|
||||||
|
|
||||||
|
# show the results in the log
|
||||||
|
echo >> configure.log
|
||||||
|
echo ALL = $ALL >> configure.log
|
||||||
|
echo AR = $AR >> configure.log
|
||||||
|
echo ARFLAGS = $ARFLAGS >> configure.log
|
||||||
|
echo CC = $CC >> configure.log
|
||||||
|
echo CFLAGS = $CFLAGS >> configure.log
|
||||||
|
echo CPP = $CPP >> configure.log
|
||||||
|
echo EXE = $EXE >> configure.log
|
||||||
|
echo LDCONFIG = $LDCONFIG >> configure.log
|
||||||
|
echo LDFLAGS = $LDFLAGS >> configure.log
|
||||||
|
echo LDSHARED = $LDSHARED >> configure.log
|
||||||
|
echo LDSHAREDLIBC = $LDSHAREDLIBC >> configure.log
|
||||||
|
echo OBJC = $OBJC >> configure.log
|
||||||
|
echo PIC_OBJC = $PIC_OBJC >> configure.log
|
||||||
|
echo RANLIB = $RANLIB >> configure.log
|
||||||
|
echo SFLAGS = $SFLAGS >> configure.log
|
||||||
|
echo SHAREDLIB = $SHAREDLIB >> configure.log
|
||||||
|
echo SHAREDLIBM = $SHAREDLIBM >> configure.log
|
||||||
|
echo SHAREDLIBV = $SHAREDLIBV >> configure.log
|
||||||
|
echo STATICLIB = $STATICLIB >> configure.log
|
||||||
|
echo TEST = $TEST >> configure.log
|
||||||
|
echo VER = $VER >> configure.log
|
||||||
|
echo Z_U4 = $Z_U4 >> configure.log
|
||||||
|
echo exec_prefix = $exec_prefix >> configure.log
|
||||||
|
echo includedir = $includedir >> configure.log
|
||||||
|
echo libdir = $libdir >> configure.log
|
||||||
|
echo mandir = $mandir >> configure.log
|
||||||
|
echo prefix = $prefix >> configure.log
|
||||||
|
echo sharedlibdir = $sharedlibdir >> configure.log
|
||||||
|
echo uname = $uname >> configure.log
|
||||||
|
echo -------------------- >> configure.log
|
||||||
|
echo >> configure.log
|
||||||
|
echo >> configure.log
|
||||||
|
|
||||||
|
# udpate Makefile with the configure results
|
||||||
sed < Makefile.in "
|
sed < Makefile.in "
|
||||||
/^CC *=/s#=.*#=$CC#
|
/^CC *=/s#=.*#=$CC#
|
||||||
/^CFLAGS *=/s#=.*#=$CFLAGS#
|
/^CFLAGS *=/s#=.*#=$CFLAGS#
|
||||||
@@ -527,7 +774,8 @@ sed < Makefile.in "
|
|||||||
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
|
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
|
||||||
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
|
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
|
||||||
/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
|
/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
|
||||||
/^AR *=/s#=.*#=$AR_RC#
|
/^AR *=/s#=.*#=$AR#
|
||||||
|
/^ARFLAGS *=/s#=.*#=$ARFLAGS#
|
||||||
/^RANLIB *=/s#=.*#=$RANLIB#
|
/^RANLIB *=/s#=.*#=$RANLIB#
|
||||||
/^LDCONFIG *=/s#=.*#=$LDCONFIG#
|
/^LDCONFIG *=/s#=.*#=$LDCONFIG#
|
||||||
/^LDSHAREDLIBC *=/s#=.*#=$LDSHAREDLIBC#
|
/^LDSHAREDLIBC *=/s#=.*#=$LDSHAREDLIBC#
|
||||||
@@ -535,12 +783,16 @@ sed < Makefile.in "
|
|||||||
/^prefix *=/s#=.*#=$prefix#
|
/^prefix *=/s#=.*#=$prefix#
|
||||||
/^exec_prefix *=/s#=.*#=$exec_prefix#
|
/^exec_prefix *=/s#=.*#=$exec_prefix#
|
||||||
/^libdir *=/s#=.*#=$libdir#
|
/^libdir *=/s#=.*#=$libdir#
|
||||||
|
/^sharedlibdir *=/s#=.*#=$sharedlibdir#
|
||||||
/^includedir *=/s#=.*#=$includedir#
|
/^includedir *=/s#=.*#=$includedir#
|
||||||
/^mandir *=/s#=.*#=$mandir#
|
/^mandir *=/s#=.*#=$mandir#
|
||||||
|
/^OBJC *=/s#=.*#= $OBJC#
|
||||||
|
/^PIC_OBJC *=/s#=.*#= $PIC_OBJC#
|
||||||
/^all: */s#:.*#: $ALL#
|
/^all: */s#:.*#: $ALL#
|
||||||
/^test: */s#:.*#: $TEST#
|
/^test: */s#:.*#: $TEST#
|
||||||
" > Makefile
|
" > Makefile
|
||||||
|
|
||||||
|
# create zlib.pc with the configure results
|
||||||
sed < zlib.pc.in "
|
sed < zlib.pc.in "
|
||||||
/^CC *=/s#=.*#=$CC#
|
/^CC *=/s#=.*#=$CC#
|
||||||
/^CFLAGS *=/s#=.*#=$CFLAGS#
|
/^CFLAGS *=/s#=.*#=$CFLAGS#
|
||||||
@@ -550,12 +802,14 @@ sed < zlib.pc.in "
|
|||||||
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
|
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
|
||||||
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
|
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
|
||||||
/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
|
/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
|
||||||
/^AR *=/s#=.*#=$AR_RC#
|
/^AR *=/s#=.*#=$AR#
|
||||||
|
/^ARFLAGS *=/s#=.*#=$ARFLAGS#
|
||||||
/^RANLIB *=/s#=.*#=$RANLIB#
|
/^RANLIB *=/s#=.*#=$RANLIB#
|
||||||
/^EXE *=/s#=.*#=$EXE#
|
/^EXE *=/s#=.*#=$EXE#
|
||||||
/^prefix *=/s#=.*#=$prefix#
|
/^prefix *=/s#=.*#=$prefix#
|
||||||
/^exec_prefix *=/s#=.*#=$exec_prefix#
|
/^exec_prefix *=/s#=.*#=$exec_prefix#
|
||||||
/^libdir *=/s#=.*#=$libdir#
|
/^libdir *=/s#=.*#=$libdir#
|
||||||
|
/^sharedlibdir *=/s#=.*#=$sharedlibdir#
|
||||||
/^includedir *=/s#=.*#=$includedir#
|
/^includedir *=/s#=.*#=$includedir#
|
||||||
/^mandir *=/s#=.*#=$mandir#
|
/^mandir *=/s#=.*#=$mandir#
|
||||||
/^LDFLAGS *=/s#=.*#=$LDFLAGS#
|
/^LDFLAGS *=/s#=.*#=$LDFLAGS#
|
||||||
|
|||||||
@@ -83,17 +83,25 @@
|
|||||||
.text
|
.text
|
||||||
|
|
||||||
/* uInt longest_match(deflate_state *deflatestate, IPos curmatch) */
|
/* uInt longest_match(deflate_state *deflatestate, IPos curmatch) */
|
||||||
|
.cfi_sections .debug_frame
|
||||||
|
|
||||||
longest_match:
|
longest_match:
|
||||||
|
|
||||||
|
.cfi_startproc
|
||||||
/* Save registers that the compiler may be using, and adjust %esp to */
|
/* Save registers that the compiler may be using, and adjust %esp to */
|
||||||
/* make room for our stack frame. */
|
/* make room for our stack frame. */
|
||||||
|
|
||||||
pushl %ebp
|
pushl %ebp
|
||||||
|
.cfi_def_cfa_offset 8
|
||||||
|
.cfi_offset ebp, -8
|
||||||
pushl %edi
|
pushl %edi
|
||||||
|
.cfi_def_cfa_offset 12
|
||||||
pushl %esi
|
pushl %esi
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
pushl %ebx
|
pushl %ebx
|
||||||
|
.cfi_def_cfa_offset 20
|
||||||
subl $LocalVarsSize, %esp
|
subl $LocalVarsSize, %esp
|
||||||
|
.cfi_def_cfa_offset LocalVarsSize+20
|
||||||
|
|
||||||
/* Retrieve the function arguments. %ecx will hold cur_match */
|
/* Retrieve the function arguments. %ecx will hold cur_match */
|
||||||
/* throughout the entire function. %edx will hold the pointer to the */
|
/* throughout the entire function. %edx will hold the pointer to the */
|
||||||
@@ -108,7 +116,7 @@ longest_match:
|
|||||||
/* if (s->prev_length >= s->good_match) { */
|
/* if (s->prev_length >= s->good_match) { */
|
||||||
/* chain_length >>= 2; */
|
/* chain_length >>= 2; */
|
||||||
/* } */
|
/* } */
|
||||||
|
|
||||||
movl dsPrevLen(%edx), %eax
|
movl dsPrevLen(%edx), %eax
|
||||||
movl dsGoodMatch(%edx), %ebx
|
movl dsGoodMatch(%edx), %ebx
|
||||||
cmpl %ebx, %eax
|
cmpl %ebx, %eax
|
||||||
@@ -336,8 +344,14 @@ LookaheadRet:
|
|||||||
/* Restore the stack and return from whence we came. */
|
/* Restore the stack and return from whence we came. */
|
||||||
|
|
||||||
addl $LocalVarsSize, %esp
|
addl $LocalVarsSize, %esp
|
||||||
|
.cfi_def_cfa_offset 20
|
||||||
popl %ebx
|
popl %ebx
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
popl %esi
|
popl %esi
|
||||||
|
.cfi_def_cfa_offset 12
|
||||||
popl %edi
|
popl %edi
|
||||||
|
.cfi_def_cfa_offset 8
|
||||||
popl %ebp
|
popl %ebp
|
||||||
|
.cfi_def_cfa_offset 4
|
||||||
|
.cfi_endproc
|
||||||
match_init: ret
|
match_init: ret
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ procedure DecompressToUserBuf(const InBuf: Pointer; InBytes: Integer;
|
|||||||
const OutBuf: Pointer; BufSize: Integer);
|
const OutBuf: Pointer; BufSize: Integer);
|
||||||
|
|
||||||
const
|
const
|
||||||
zlib_version = '1.2.4.1';
|
zlib_version = '1.2.7';
|
||||||
|
|
||||||
type
|
type
|
||||||
EZlibError = class(Exception);
|
EZlibError = class(Exception);
|
||||||
|
|||||||
@@ -63,9 +63,9 @@ uncompr.obj: uncompr.c zlib.h zconf.h
|
|||||||
|
|
||||||
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
||||||
|
|
||||||
example.obj: example.c zlib.h zconf.h
|
example.obj: test/example.c zlib.h zconf.h
|
||||||
|
|
||||||
minigzip.obj: minigzip.c zlib.h zconf.h
|
minigzip.obj: test/minigzip.c zlib.h zconf.h
|
||||||
|
|
||||||
|
|
||||||
# For the sake of the old Borland make,
|
# For the sake of the old Borland make,
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ namespace DotZLibTests
|
|||||||
public void Info_Version()
|
public void Info_Version()
|
||||||
{
|
{
|
||||||
Info info = new Info();
|
Info info = new Info();
|
||||||
Assert.AreEqual("1.2.4.1", Info.Version);
|
Assert.AreEqual("1.2.7", Info.Version);
|
||||||
Assert.AreEqual(32, info.SizeOfUInt);
|
Assert.AreEqual(32, info.SizeOfUInt);
|
||||||
Assert.AreEqual(32, info.SizeOfULong);
|
Assert.AreEqual(32, info.SizeOfULong);
|
||||||
Assert.AreEqual(32, info.SizeOfPointer);
|
Assert.AreEqual(32, info.SizeOfPointer);
|
||||||
@@ -271,4 +271,4 @@ namespace DotZLibTests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* inftree9.c -- generate Huffman trees for efficient decoding
|
/* inftree9.c -- generate Huffman trees for efficient decoding
|
||||||
* Copyright (C) 1995-2010 Mark Adler
|
* Copyright (C) 1995-2012 Mark Adler
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
#define MAXBITS 15
|
#define MAXBITS 15
|
||||||
|
|
||||||
const char inflate9_copyright[] =
|
const char inflate9_copyright[] =
|
||||||
" inflate9 1.2.4.1 Copyright 1995-2010 Mark Adler ";
|
" inflate9 1.2.7 Copyright 1995-2012 Mark Adler ";
|
||||||
/*
|
/*
|
||||||
If you use the zlib library in a product, an acknowledgment is welcome
|
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
|
in the documentation of your product. If for some reason you cannot
|
||||||
@@ -64,7 +64,7 @@ unsigned short FAR *work;
|
|||||||
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
|
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
|
||||||
128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129,
|
128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129,
|
||||||
130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132,
|
130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132,
|
||||||
133, 133, 133, 133, 144, 67, 206};
|
133, 133, 133, 133, 144, 78, 68};
|
||||||
static const unsigned short dbase[32] = { /* Distance codes 0..31 base */
|
static const unsigned short dbase[32] = { /* Distance codes 0..31 base */
|
||||||
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49,
|
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49,
|
||||||
65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073,
|
65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073,
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ inffasx64.asm and inffas8664.c were written by Chris Anderson, by optimizing
|
|||||||
|
|
||||||
Use instructions
|
Use instructions
|
||||||
----------------
|
----------------
|
||||||
Assemble the .asm files using MASM and put the object files into the zlib source
|
Assemble the .asm files using MASM and put the object files into the zlib source
|
||||||
directory. You can also get object files here:
|
directory. You can also get object files here:
|
||||||
|
|
||||||
http://www.winimage.com/zLibDll/zlib124_masm_obj.zip
|
http://www.winimage.com/zLibDll/zlib124_masm_obj.zip
|
||||||
|
|
||||||
define ASMV and ASMINF in your project. Include inffas8664.c in your source tree,
|
define ASMV and ASMINF in your project. Include inffas8664.c in your source tree,
|
||||||
and inffasx64.obj and gvmat64.obj as object to link.
|
and inffasx64.obj and gvmat64.obj as object to link.
|
||||||
|
|||||||
@@ -73,11 +73,6 @@ inflate_fast_use_mmx:
|
|||||||
|
|
||||||
|
|
||||||
_TEXT segment
|
_TEXT segment
|
||||||
PUBLIC _inflate_fast
|
|
||||||
|
|
||||||
ALIGN 4
|
|
||||||
_inflate_fast:
|
|
||||||
jmp inflate_fast_entry
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -163,7 +158,8 @@ distbits_state equ (76+4+zlib1222sup) ;/* state->distbits */
|
|||||||
;SECTION .text
|
;SECTION .text
|
||||||
|
|
||||||
ALIGN 4
|
ALIGN 4
|
||||||
inflate_fast_entry:
|
_inflate_fast proc near
|
||||||
|
.FPO (16, 4, 0, 0, 1, 0)
|
||||||
push edi
|
push edi
|
||||||
push esi
|
push esi
|
||||||
push ebp
|
push ebp
|
||||||
@@ -1078,6 +1074,7 @@ L_done:
|
|||||||
pop esi
|
pop esi
|
||||||
pop edi
|
pop edi
|
||||||
ret
|
ret
|
||||||
|
_inflate_fast endp
|
||||||
|
|
||||||
_TEXT ends
|
_TEXT ends
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -195,6 +195,7 @@ dsNiceMatch equ 136+zlib1222add
|
|||||||
ELSE
|
ELSE
|
||||||
_longest_match proc near
|
_longest_match proc near
|
||||||
ENDIF
|
ENDIF
|
||||||
|
.FPO (9, 4, 0, 0, 1, 0)
|
||||||
|
|
||||||
;;; Save registers that the compiler may be using, and adjust esp to
|
;;; Save registers that the compiler may be using, and adjust esp to
|
||||||
;;; make room for our stack frame.
|
;;; make room for our stack frame.
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
|
|
||||||
Summary
|
Summary
|
||||||
-------
|
-------
|
||||||
This directory contains ASM implementations of the functions
|
This directory contains ASM implementations of the functions
|
||||||
longest_match() and inflate_fast().
|
longest_match() and inflate_fast().
|
||||||
|
|
||||||
|
|
||||||
Use instructions
|
Use instructions
|
||||||
----------------
|
----------------
|
||||||
Assemble using MASM, and copy the object files into the zlib source
|
Assemble using MASM, and copy the object files into the zlib source
|
||||||
directory, then run the appropriate makefile, as suggested below. You can
|
directory, then run the appropriate makefile, as suggested below. You can
|
||||||
donwload MASM from here:
|
donwload MASM from here:
|
||||||
|
|
||||||
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64
|
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64
|
||||||
|
|
||||||
You can also get objects files here:
|
You can also get objects files here:
|
||||||
|
|
||||||
http://www.winimage.com/zLibDll/zlib124_masm_obj.zip
|
http://www.winimage.com/zLibDll/zlib124_masm_obj.zip
|
||||||
|
|
||||||
Build instructions
|
Build instructions
|
||||||
------------------
|
------------------
|
||||||
* With Microsoft C and MASM:
|
* With Microsoft C and MASM:
|
||||||
nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj"
|
nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj"
|
||||||
|
|
||||||
* With Borland C and TASM:
|
* With Borland C and TASM:
|
||||||
make -f win32/Makefile.bor LOCAL_ZLIB="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" OBJPA="+match686c.obj+match686.obj+inffas32.obj"
|
make -f win32/Makefile.bor LOCAL_ZLIB="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" OBJPA="+match686c.obj+match686.obj+inffas32.obj"
|
||||||
|
|
||||||
|
|||||||
45
contrib/minizip/Makefile.am
Normal file
45
contrib/minizip/Makefile.am
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
lib_LTLIBRARIES = libminizip.la
|
||||||
|
|
||||||
|
if COND_DEMOS
|
||||||
|
bin_PROGRAMS = miniunzip minizip
|
||||||
|
endif
|
||||||
|
|
||||||
|
zlib_top_srcdir = $(top_srcdir)/../..
|
||||||
|
zlib_top_builddir = $(top_builddir)/../..
|
||||||
|
|
||||||
|
AM_CPPFLAGS = -I$(zlib_top_srcdir)
|
||||||
|
AM_LDFLAGS = -L$(zlib_top_builddir)
|
||||||
|
|
||||||
|
if WIN32
|
||||||
|
iowin32_src = iowin32.c
|
||||||
|
iowin32_h = iowin32.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
libminizip_la_SOURCES = \
|
||||||
|
ioapi.c \
|
||||||
|
mztools.c \
|
||||||
|
unzip.c \
|
||||||
|
zip.c \
|
||||||
|
${iowin32_src}
|
||||||
|
|
||||||
|
libminizip_la_LDFLAGS = $(AM_LDFLAGS) -version-info 1:0:0 -lz
|
||||||
|
|
||||||
|
minizip_includedir = $(includedir)/minizip
|
||||||
|
minizip_include_HEADERS = \
|
||||||
|
crypt.h \
|
||||||
|
ioapi.h \
|
||||||
|
mztools.h \
|
||||||
|
unzip.h \
|
||||||
|
zip.h \
|
||||||
|
${iowin32_h}
|
||||||
|
|
||||||
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
pkgconfig_DATA = minizip.pc
|
||||||
|
|
||||||
|
EXTRA_PROGRAMS = miniunzip minizip
|
||||||
|
|
||||||
|
miniunzip_SOURCES = miniunz.c
|
||||||
|
miniunzip_LDADD = libminizip.la
|
||||||
|
|
||||||
|
minizip_SOURCES = minizip.c
|
||||||
|
minizip_LDADD = libminizip.la -lz
|
||||||
32
contrib/minizip/configure.ac
Normal file
32
contrib/minizip/configure.ac
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# -*- Autoconf -*-
|
||||||
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
|
AC_INIT([minizip], [1.2.7], [bugzilla.redhat.com])
|
||||||
|
AC_CONFIG_SRCDIR([minizip.c])
|
||||||
|
AM_INIT_AUTOMAKE([foreign])
|
||||||
|
LT_INIT
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether to build example programs])
|
||||||
|
AC_ARG_ENABLE([demos], AC_HELP_STRING([--enable-demos], [build example programs]))
|
||||||
|
AM_CONDITIONAL([COND_DEMOS], [test "$enable_demos" = yes])
|
||||||
|
if test "$enable_demos" = yes
|
||||||
|
then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "${host}" in
|
||||||
|
*-mingw* | mingw*)
|
||||||
|
WIN32="yes"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
AM_CONDITIONAL([WIN32], [test "${WIN32}" = "yes"])
|
||||||
|
|
||||||
|
|
||||||
|
AC_SUBST([HAVE_UNISTD_H], [0])
|
||||||
|
AC_CHECK_HEADER([unistd.h], [HAVE_UNISTD_H=1], [])
|
||||||
|
AC_CONFIG_FILES([Makefile minizip.pc])
|
||||||
|
AC_OUTPUT
|
||||||
@@ -10,10 +10,22 @@
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if (defined(_WIN32))
|
#if defined(_WIN32) && (!(defined(_CRT_SECURE_NO_WARNINGS)))
|
||||||
#define _CRT_SECURE_NO_WARNINGS
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__APPLE__) || defined(IOAPI_NO_64)
|
||||||
|
// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
|
||||||
|
#define FOPEN_FUNC(filename, mode) fopen(filename, mode)
|
||||||
|
#define FTELLO_FUNC(stream) ftello(stream)
|
||||||
|
#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin)
|
||||||
|
#else
|
||||||
|
#define FOPEN_FUNC(filename, mode) fopen64(filename, mode)
|
||||||
|
#define FTELLO_FUNC(stream) ftello64(stream)
|
||||||
|
#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include "ioapi.h"
|
#include "ioapi.h"
|
||||||
|
|
||||||
voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)
|
voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)
|
||||||
@@ -47,7 +59,7 @@ ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
|
uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
|
||||||
if ((tell_uLong) == ((uLong)-1))
|
if ((tell_uLong) == MAXU32)
|
||||||
return (ZPOS64_T)-1;
|
return (ZPOS64_T)-1;
|
||||||
else
|
else
|
||||||
return tell_uLong;
|
return tell_uLong;
|
||||||
@@ -112,7 +124,7 @@ static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename,
|
|||||||
mode_fopen = "wb";
|
mode_fopen = "wb";
|
||||||
|
|
||||||
if ((filename!=NULL) && (mode_fopen != NULL))
|
if ((filename!=NULL) && (mode_fopen != NULL))
|
||||||
file = fopen64((const char*)filename, mode_fopen);
|
file = FOPEN_FUNC((const char*)filename, mode_fopen);
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,7 +154,7 @@ static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
|
|||||||
static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
|
static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
|
||||||
{
|
{
|
||||||
ZPOS64_T ret;
|
ZPOS64_T ret;
|
||||||
ret = ftello64((FILE *)stream);
|
ret = FTELLO_FUNC((FILE *)stream);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,7 +200,7 @@ static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T
|
|||||||
}
|
}
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
if(fseeko64((FILE *)stream, offset, fseek_origin) != 0)
|
if(FSEEKO_FUNC((FILE *)stream, offset, fseek_origin) != 0)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
#ifndef _ZLIBIOAPI64_H
|
#ifndef _ZLIBIOAPI64_H
|
||||||
#define _ZLIBIOAPI64_H
|
#define _ZLIBIOAPI64_H
|
||||||
|
|
||||||
#if (!defined(_WIN32)) && (!defined(WIN32))
|
#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__))
|
||||||
|
|
||||||
// Linux needs this to support file operation on files larger then 4+GB
|
// Linux needs this to support file operation on files larger then 4+GB
|
||||||
// But might need better if/def to select just the platforms that needs them.
|
// But might need better if/def to select just the platforms that needs them.
|
||||||
@@ -38,6 +38,7 @@
|
|||||||
#ifndef _FILE_OFFSET_BIT
|
#ifndef _FILE_OFFSET_BIT
|
||||||
#define _FILE_OFFSET_BIT 64
|
#define _FILE_OFFSET_BIT 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -49,6 +50,11 @@
|
|||||||
#define ftello64 ftell
|
#define ftello64 ftell
|
||||||
#define fseeko64 fseek
|
#define fseeko64 fseek
|
||||||
#else
|
#else
|
||||||
|
#ifdef __FreeBSD__
|
||||||
|
#define fopen64 fopen
|
||||||
|
#define ftello64 ftello
|
||||||
|
#define fseeko64 fseeko
|
||||||
|
#endif
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#define fopen64 fopen
|
#define fopen64 fopen
|
||||||
#if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC)))
|
#if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC)))
|
||||||
@@ -85,6 +91,8 @@ typedef 64BIT_INT_CUSTOM_TYPE ZPOS64_T;
|
|||||||
typedef uint64_t ZPOS64_T;
|
typedef uint64_t ZPOS64_T;
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
/* Maximum unsigned 32-bit value used as placeholder for zip64 */
|
||||||
|
#define MAXU32 0xffffffff
|
||||||
|
|
||||||
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
||||||
typedef unsigned __int64 ZPOS64_T;
|
typedef unsigned __int64 ZPOS64_T;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
|
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _WIN32
|
#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__))
|
||||||
#ifndef __USE_FILE_OFFSET64
|
#ifndef __USE_FILE_OFFSET64
|
||||||
#define __USE_FILE_OFFSET64
|
#define __USE_FILE_OFFSET64
|
||||||
#endif
|
#endif
|
||||||
@@ -27,6 +27,18 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
|
||||||
|
#define FOPEN_FUNC(filename, mode) fopen(filename, mode)
|
||||||
|
#define FTELLO_FUNC(stream) ftello(stream)
|
||||||
|
#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin)
|
||||||
|
#else
|
||||||
|
#define FOPEN_FUNC(filename, mode) fopen64(filename, mode)
|
||||||
|
#define FTELLO_FUNC(stream) ftello64(stream)
|
||||||
|
#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -34,14 +46,15 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
#ifdef unix
|
#ifdef _WIN32
|
||||||
# include <unistd.h>
|
|
||||||
# include <utime.h>
|
|
||||||
#else
|
|
||||||
# include <direct.h>
|
# include <direct.h>
|
||||||
# include <io.h>
|
# include <io.h>
|
||||||
|
#else
|
||||||
|
# include <unistd.h>
|
||||||
|
# include <utime.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include "unzip.h"
|
#include "unzip.h"
|
||||||
|
|
||||||
#define CASESENSITIVITY (0)
|
#define CASESENSITIVITY (0)
|
||||||
@@ -84,7 +97,7 @@ void change_file_date(filename,dosdate,tmu_date)
|
|||||||
SetFileTime(hFile,&ftm,&ftLastAcc,&ftm);
|
SetFileTime(hFile,&ftm,&ftLastAcc,&ftm);
|
||||||
CloseHandle(hFile);
|
CloseHandle(hFile);
|
||||||
#else
|
#else
|
||||||
#ifdef unix
|
#ifdef unix || __APPLE__
|
||||||
struct utimbuf ut;
|
struct utimbuf ut;
|
||||||
struct tm newdate;
|
struct tm newdate;
|
||||||
newdate.tm_sec = tmu_date.tm_sec;
|
newdate.tm_sec = tmu_date.tm_sec;
|
||||||
@@ -114,10 +127,10 @@ int mymkdir(dirname)
|
|||||||
int ret=0;
|
int ret=0;
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
ret = _mkdir(dirname);
|
ret = _mkdir(dirname);
|
||||||
#else
|
#elif unix
|
||||||
#ifdef unix
|
ret = mkdir (dirname,0775);
|
||||||
|
#elif __APPLE__
|
||||||
ret = mkdir (dirname,0775);
|
ret = mkdir (dirname,0775);
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -364,7 +377,7 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
|
|||||||
{
|
{
|
||||||
char rep=0;
|
char rep=0;
|
||||||
FILE* ftestexist;
|
FILE* ftestexist;
|
||||||
ftestexist = fopen64(write_filename,"rb");
|
ftestexist = FOPEN_FUNC(write_filename,"rb");
|
||||||
if (ftestexist!=NULL)
|
if (ftestexist!=NULL)
|
||||||
{
|
{
|
||||||
fclose(ftestexist);
|
fclose(ftestexist);
|
||||||
@@ -395,8 +408,7 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
|
|||||||
|
|
||||||
if ((skip==0) && (err==UNZ_OK))
|
if ((skip==0) && (err==UNZ_OK))
|
||||||
{
|
{
|
||||||
fout=fopen64(write_filename,"wb");
|
fout=FOPEN_FUNC(write_filename,"wb");
|
||||||
|
|
||||||
/* some zipfile don't contain directory alone before file */
|
/* some zipfile don't contain directory alone before file */
|
||||||
if ((fout==NULL) && ((*popt_extract_without_path)==0) &&
|
if ((fout==NULL) && ((*popt_extract_without_path)==0) &&
|
||||||
(filename_withoutpath!=(char*)filename_inzip))
|
(filename_withoutpath!=(char*)filename_inzip))
|
||||||
@@ -405,7 +417,7 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
|
|||||||
*(filename_withoutpath-1)='\0';
|
*(filename_withoutpath-1)='\0';
|
||||||
makedir(write_filename);
|
makedir(write_filename);
|
||||||
*(filename_withoutpath-1)=c;
|
*(filename_withoutpath-1)=c;
|
||||||
fout=fopen64(write_filename,"wb");
|
fout=FOPEN_FUNC(write_filename,"wb");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fout==NULL)
|
if (fout==NULL)
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef _WIN32
|
#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__))
|
||||||
#ifndef __USE_FILE_OFFSET64
|
#ifndef __USE_FILE_OFFSET64
|
||||||
#define __USE_FILE_OFFSET64
|
#define __USE_FILE_OFFSET64
|
||||||
#endif
|
#endif
|
||||||
@@ -28,6 +28,19 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
|
||||||
|
#define FOPEN_FUNC(filename, mode) fopen(filename, mode)
|
||||||
|
#define FTELLO_FUNC(stream) ftello(stream)
|
||||||
|
#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin)
|
||||||
|
#else
|
||||||
|
#define FOPEN_FUNC(filename, mode) fopen64(filename, mode)
|
||||||
|
#define FTELLO_FUNC(stream) ftello64(stream)
|
||||||
|
#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -35,14 +48,14 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
#ifdef unix
|
#ifdef _WIN32
|
||||||
|
# include <direct.h>
|
||||||
|
# include <io.h>
|
||||||
|
#else
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
# include <utime.h>
|
# include <utime.h>
|
||||||
# include <sys/types.h>
|
# include <sys/types.h>
|
||||||
# include <sys/stat.h>
|
# include <sys/stat.h>
|
||||||
#else
|
|
||||||
# include <direct.h>
|
|
||||||
# include <io.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "zip.h"
|
#include "zip.h"
|
||||||
@@ -81,7 +94,7 @@ uLong filetime(f, tmzip, dt)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#ifdef unix
|
#ifdef unix || __APPLE__
|
||||||
uLong filetime(f, tmzip, dt)
|
uLong filetime(f, tmzip, dt)
|
||||||
char *f; /* name of file to get info on */
|
char *f; /* name of file to get info on */
|
||||||
tm_zip *tmzip; /* return value: access, modific. and creation times */
|
tm_zip *tmzip; /* return value: access, modific. and creation times */
|
||||||
@@ -142,7 +155,7 @@ int check_exist_file(filename)
|
|||||||
{
|
{
|
||||||
FILE* ftestexist;
|
FILE* ftestexist;
|
||||||
int ret = 1;
|
int ret = 1;
|
||||||
ftestexist = fopen64(filename,"rb");
|
ftestexist = FOPEN_FUNC(filename,"rb");
|
||||||
if (ftestexist==NULL)
|
if (ftestexist==NULL)
|
||||||
ret = 0;
|
ret = 0;
|
||||||
else
|
else
|
||||||
@@ -173,7 +186,8 @@ int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigne
|
|||||||
{
|
{
|
||||||
unsigned long calculate_crc=0;
|
unsigned long calculate_crc=0;
|
||||||
int err=ZIP_OK;
|
int err=ZIP_OK;
|
||||||
FILE * fin = fopen64(filenameinzip,"rb");
|
FILE * fin = FOPEN_FUNC(filenameinzip,"rb");
|
||||||
|
|
||||||
unsigned long size_read = 0;
|
unsigned long size_read = 0;
|
||||||
unsigned long total_read = 0;
|
unsigned long total_read = 0;
|
||||||
if (fin==NULL)
|
if (fin==NULL)
|
||||||
@@ -211,13 +225,12 @@ int isLargeFile(const char* filename)
|
|||||||
{
|
{
|
||||||
int largeFile = 0;
|
int largeFile = 0;
|
||||||
ZPOS64_T pos = 0;
|
ZPOS64_T pos = 0;
|
||||||
FILE* pFile = fopen64(filename, "rb");
|
FILE* pFile = FOPEN_FUNC(filename, "rb");
|
||||||
|
|
||||||
if(pFile != NULL)
|
if(pFile != NULL)
|
||||||
{
|
{
|
||||||
int n = fseeko64(pFile, 0, SEEK_END);
|
int n = FSEEKO_FUNC(pFile, 0, SEEK_END);
|
||||||
|
pos = FTELLO_FUNC(pFile);
|
||||||
pos = ftello64(pFile);
|
|
||||||
|
|
||||||
printf("File : %s is %lld bytes\n", filename, pos);
|
printf("File : %s is %lld bytes\n", filename, pos);
|
||||||
|
|
||||||
@@ -447,7 +460,7 @@ int main(argc,argv)
|
|||||||
printf("error in opening %s in zipfile\n",filenameinzip);
|
printf("error in opening %s in zipfile\n",filenameinzip);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fin = fopen64(filenameinzip,"rb");
|
fin = FOPEN_FUNC(filenameinzip,"rb");
|
||||||
if (fin==NULL)
|
if (fin==NULL)
|
||||||
{
|
{
|
||||||
err=ZIP_ERRNO;
|
err=ZIP_ERRNO;
|
||||||
|
|||||||
12
contrib/minizip/minizip.pc.in
Normal file
12
contrib/minizip/minizip.pc.in
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
prefix=@prefix@
|
||||||
|
exec_prefix=@exec_prefix@
|
||||||
|
libdir=@libdir@
|
||||||
|
includedir=@includedir@/minizip
|
||||||
|
|
||||||
|
Name: minizip
|
||||||
|
Description: Minizip zip file manipulation library
|
||||||
|
Requires:
|
||||||
|
Version: @PACKAGE_VERSION@
|
||||||
|
Libs: -L${libdir} -lminizip
|
||||||
|
Libs.private: -lz
|
||||||
|
Cflags: -I${includedir}
|
||||||
@@ -42,7 +42,7 @@ uLong* bytesRecovered;
|
|||||||
int entries = 0;
|
int entries = 0;
|
||||||
uLong totalBytes = 0;
|
uLong totalBytes = 0;
|
||||||
char header[30];
|
char header[30];
|
||||||
char filename[256];
|
char filename[1024];
|
||||||
char extra[1024];
|
char extra[1024];
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
int offsetCD = 0;
|
int offsetCD = 0;
|
||||||
@@ -73,9 +73,14 @@ uLong* bytesRecovered;
|
|||||||
|
|
||||||
/* Filename */
|
/* Filename */
|
||||||
if (fnsize > 0) {
|
if (fnsize > 0) {
|
||||||
if (fread(filename, 1, fnsize, fpZip) == fnsize) {
|
if (fnsize < sizeof(filename)) {
|
||||||
if (fwrite(filename, 1, fnsize, fpOut) == fnsize) {
|
if (fread(filename, 1, fnsize, fpZip) == fnsize) {
|
||||||
offset += fnsize;
|
if (fwrite(filename, 1, fnsize, fpOut) == fnsize) {
|
||||||
|
offset += fnsize;
|
||||||
|
} else {
|
||||||
|
err = Z_ERRNO;
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
err = Z_ERRNO;
|
err = Z_ERRNO;
|
||||||
break;
|
break;
|
||||||
@@ -91,9 +96,14 @@ uLong* bytesRecovered;
|
|||||||
|
|
||||||
/* Extra field */
|
/* Extra field */
|
||||||
if (extsize > 0) {
|
if (extsize > 0) {
|
||||||
if (fread(extra, 1, extsize, fpZip) == extsize) {
|
if (extsize < sizeof(extra)) {
|
||||||
if (fwrite(extra, 1, extsize, fpOut) == extsize) {
|
if (fread(extra, 1, extsize, fpZip) == extsize) {
|
||||||
offset += extsize;
|
if (fwrite(extra, 1, extsize, fpOut) == extsize) {
|
||||||
|
offset += extsize;
|
||||||
|
} else {
|
||||||
|
err = Z_ERRNO;
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
err = Z_ERRNO;
|
err = Z_ERRNO;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -28,4 +28,10 @@ extern int ZEXPORT unzRepair(const char* file,
|
|||||||
uLong* nRecovered,
|
uLong* nRecovered,
|
||||||
uLong* bytesRecovered);
|
uLong* bytesRecovered);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1040,26 +1040,26 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
|
|||||||
{
|
{
|
||||||
uLong uL;
|
uLong uL;
|
||||||
|
|
||||||
if(file_info.uncompressed_size == (ZPOS64_T)(unsigned long)-1)
|
if(file_info.uncompressed_size == MAXU32)
|
||||||
{
|
{
|
||||||
if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK)
|
if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK)
|
||||||
err=UNZ_ERRNO;
|
err=UNZ_ERRNO;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(file_info.compressed_size == (ZPOS64_T)(unsigned long)-1)
|
if(file_info.compressed_size == MAXU32)
|
||||||
{
|
{
|
||||||
if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK)
|
if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK)
|
||||||
err=UNZ_ERRNO;
|
err=UNZ_ERRNO;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(file_info_internal.offset_curfile == (ZPOS64_T)(unsigned long)-1)
|
if(file_info_internal.offset_curfile == MAXU32)
|
||||||
{
|
{
|
||||||
/* Relative Header offset */
|
/* Relative Header offset */
|
||||||
if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK)
|
if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK)
|
||||||
err=UNZ_ERRNO;
|
err=UNZ_ERRNO;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(file_info.disk_num_start == (unsigned long)-1)
|
if(file_info.disk_num_start == MAXU32)
|
||||||
{
|
{
|
||||||
/* Disk Start Number */
|
/* Disk Start Number */
|
||||||
if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK)
|
if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK)
|
||||||
@@ -1145,7 +1145,7 @@ extern int ZEXPORT unzGetCurrentFileInfo (unzFile file,
|
|||||||
szFileName,fileNameBufferSize,
|
szFileName,fileNameBufferSize,
|
||||||
extraField,extraFieldBufferSize,
|
extraField,extraFieldBufferSize,
|
||||||
szComment,commentBufferSize);
|
szComment,commentBufferSize);
|
||||||
if (err==UNZ_OK)
|
if ((err==UNZ_OK) && (pfile_info != NULL))
|
||||||
{
|
{
|
||||||
pfile_info->version = file_info64.version;
|
pfile_info->version = file_info64.version;
|
||||||
pfile_info->version_needed = file_info64.version_needed;
|
pfile_info->version_needed = file_info64.version_needed;
|
||||||
@@ -1696,7 +1696,7 @@ extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len)
|
|||||||
return UNZ_PARAMERROR;
|
return UNZ_PARAMERROR;
|
||||||
|
|
||||||
|
|
||||||
if ((pfile_in_zip_read_info->read_buffer == NULL))
|
if (pfile_in_zip_read_info->read_buffer == NULL)
|
||||||
return UNZ_END_OF_LIST_OF_FILE;
|
return UNZ_END_OF_LIST_OF_FILE;
|
||||||
if (len==0)
|
if (len==0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -1067,6 +1067,7 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
|
|||||||
int err = ZIP_OK;
|
int err = ZIP_OK;
|
||||||
|
|
||||||
# ifdef NOCRYPT
|
# ifdef NOCRYPT
|
||||||
|
(crcForCrypting);
|
||||||
if (password != NULL)
|
if (password != NULL)
|
||||||
return ZIP_PARAMERROR;
|
return ZIP_PARAMERROR;
|
||||||
# endif
|
# endif
|
||||||
@@ -1114,9 +1115,9 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
|
|||||||
zi->ci.flag = flagBase;
|
zi->ci.flag = flagBase;
|
||||||
if ((level==8) || (level==9))
|
if ((level==8) || (level==9))
|
||||||
zi->ci.flag |= 2;
|
zi->ci.flag |= 2;
|
||||||
if ((level==2))
|
if (level==2)
|
||||||
zi->ci.flag |= 4;
|
zi->ci.flag |= 4;
|
||||||
if ((level==1))
|
if (level==1)
|
||||||
zi->ci.flag |= 6;
|
zi->ci.flag |= 6;
|
||||||
if (password != NULL)
|
if (password != NULL)
|
||||||
zi->ci.flag |= 1;
|
zi->ci.flag |= 1;
|
||||||
@@ -1710,7 +1711,7 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s
|
|||||||
if (err==ZIP_OK)
|
if (err==ZIP_OK)
|
||||||
err = zip64local_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */
|
err = zip64local_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */
|
||||||
|
|
||||||
if(uncompressed_size >= 0xffffffff)
|
if(uncompressed_size >= 0xffffffff || compressed_size >= 0xffffffff )
|
||||||
{
|
{
|
||||||
if(zi->ci.pos_zip64extrainfo > 0)
|
if(zi->ci.pos_zip64extrainfo > 0)
|
||||||
{
|
{
|
||||||
@@ -1724,6 +1725,8 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s
|
|||||||
if (err==ZIP_OK) /* uncompressed size, unknown */
|
if (err==ZIP_OK) /* uncompressed size, unknown */
|
||||||
err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8);
|
err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
err = ZIP_BADZIPFILE; // Caller passed zip64 = 0, so no room for zip64 info -> fatal
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1852,7 +1855,7 @@ int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir,
|
|||||||
err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)0xffffffff,4);
|
err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)0xffffffff,4);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4);
|
err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4);
|
||||||
}
|
}
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
@@ -1919,7 +1922,7 @@ extern int ZEXPORT zipClose (zipFile file, const char* global_comment)
|
|||||||
free_linkedlist(&(zi->central_dir));
|
free_linkedlist(&(zi->central_dir));
|
||||||
|
|
||||||
pos = centraldir_pos_inzip - zi->add_position_when_writting_offset;
|
pos = centraldir_pos_inzip - zi->add_position_when_writting_offset;
|
||||||
if(pos >= 0xffffffff)
|
if(pos >= 0xffffffff || zi->number_entry > 0xFFFF)
|
||||||
{
|
{
|
||||||
ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream);
|
ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream);
|
||||||
Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip);
|
Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip);
|
||||||
|
|||||||
@@ -63,9 +63,9 @@ uncompr.obj: uncompr.c zlib.h zconf.h
|
|||||||
|
|
||||||
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
||||||
|
|
||||||
example.obj: example.c zlib.h zconf.h
|
example.obj: test/example.c zlib.h zconf.h
|
||||||
|
|
||||||
minigzip.obj: minigzip.c zlib.h zconf.h
|
minigzip.obj: test/minigzip.c zlib.h zconf.h
|
||||||
|
|
||||||
|
|
||||||
# For the sake of the old Borland make,
|
# For the sake of the old Borland make,
|
||||||
|
|||||||
@@ -10,7 +10,8 @@ unit zlibpas;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
const
|
const
|
||||||
ZLIB_VERSION = '1.2.4.1';
|
ZLIB_VERSION = '1.2.7';
|
||||||
|
ZLIB_VERNUM = $1270;
|
||||||
|
|
||||||
type
|
type
|
||||||
alloc_func = function(opaque: Pointer; items, size: Integer): Pointer;
|
alloc_func = function(opaque: Pointer; items, size: Integer): Pointer;
|
||||||
@@ -45,6 +46,23 @@ type
|
|||||||
reserved: LongInt; (* reserved for future use *)
|
reserved: LongInt; (* reserved for future use *)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
gz_headerp = ^gz_header;
|
||||||
|
gz_header = packed record
|
||||||
|
text: Integer; (* true if compressed data believed to be text *)
|
||||||
|
time: LongInt; (* modification time *)
|
||||||
|
xflags: Integer; (* extra flags (not used when writing a gzip file) *)
|
||||||
|
os: Integer; (* operating system *)
|
||||||
|
extra: PChar; (* pointer to extra field or Z_NULL if none *)
|
||||||
|
extra_len: Integer; (* extra field length (valid if extra != Z_NULL) *)
|
||||||
|
extra_max: Integer; (* space at extra (only when reading header) *)
|
||||||
|
name: PChar; (* pointer to zero-terminated file name or Z_NULL *)
|
||||||
|
name_max: Integer; (* space at name (only when reading header) *)
|
||||||
|
comment: PChar; (* pointer to zero-terminated comment or Z_NULL *)
|
||||||
|
comm_max: Integer; (* space at comment (only when reading header) *)
|
||||||
|
hcrc: Integer; (* true if there was or will be a header crc *)
|
||||||
|
done: Integer; (* true when done reading gzip header *)
|
||||||
|
end;
|
||||||
|
|
||||||
(* constants *)
|
(* constants *)
|
||||||
const
|
const
|
||||||
Z_NO_FLUSH = 0;
|
Z_NO_FLUSH = 0;
|
||||||
@@ -52,6 +70,8 @@ const
|
|||||||
Z_SYNC_FLUSH = 2;
|
Z_SYNC_FLUSH = 2;
|
||||||
Z_FULL_FLUSH = 3;
|
Z_FULL_FLUSH = 3;
|
||||||
Z_FINISH = 4;
|
Z_FINISH = 4;
|
||||||
|
Z_BLOCK = 5;
|
||||||
|
Z_TREES = 6;
|
||||||
|
|
||||||
Z_OK = 0;
|
Z_OK = 0;
|
||||||
Z_STREAM_END = 1;
|
Z_STREAM_END = 1;
|
||||||
@@ -71,9 +91,11 @@ const
|
|||||||
Z_FILTERED = 1;
|
Z_FILTERED = 1;
|
||||||
Z_HUFFMAN_ONLY = 2;
|
Z_HUFFMAN_ONLY = 2;
|
||||||
Z_RLE = 3;
|
Z_RLE = 3;
|
||||||
|
Z_FIXED = 4;
|
||||||
Z_DEFAULT_STRATEGY = 0;
|
Z_DEFAULT_STRATEGY = 0;
|
||||||
|
|
||||||
Z_BINARY = 0;
|
Z_BINARY = 0;
|
||||||
|
Z_TEXT = 1;
|
||||||
Z_ASCII = 1;
|
Z_ASCII = 1;
|
||||||
Z_UNKNOWN = 2;
|
Z_UNKNOWN = 2;
|
||||||
|
|
||||||
@@ -96,14 +118,21 @@ function deflateSetDictionary(var strm: z_stream; const dictionary: PChar;
|
|||||||
function deflateCopy(var dest, source: z_stream): Integer;
|
function deflateCopy(var dest, source: z_stream): Integer;
|
||||||
function deflateReset(var strm: z_stream): Integer;
|
function deflateReset(var strm: z_stream): Integer;
|
||||||
function deflateParams(var strm: z_stream; level, strategy: Integer): Integer;
|
function deflateParams(var strm: z_stream; level, strategy: Integer): Integer;
|
||||||
|
function deflateTune(var strm: z_stream; good_length, max_lazy, nice_length, max_chain: Integer): Integer;
|
||||||
function deflateBound(var strm: z_stream; sourceLen: LongInt): LongInt;
|
function deflateBound(var strm: z_stream; sourceLen: LongInt): LongInt;
|
||||||
|
function deflatePending(var strm: z_stream; var pending: Integer; var bits: Integer): Integer;
|
||||||
function deflatePrime(var strm: z_stream; bits, value: Integer): Integer;
|
function deflatePrime(var strm: z_stream; bits, value: Integer): Integer;
|
||||||
|
function deflateSetHeader(var strm: z_stream; head: gz_header): Integer;
|
||||||
function inflateInit2(var strm: z_stream; windowBits: Integer): Integer;
|
function inflateInit2(var strm: z_stream; windowBits: Integer): Integer;
|
||||||
function inflateSetDictionary(var strm: z_stream; const dictionary: PChar;
|
function inflateSetDictionary(var strm: z_stream; const dictionary: PChar;
|
||||||
dictLength: Integer): Integer;
|
dictLength: Integer): Integer;
|
||||||
function inflateSync(var strm: z_stream): Integer;
|
function inflateSync(var strm: z_stream): Integer;
|
||||||
function inflateCopy(var dest, source: z_stream): Integer;
|
function inflateCopy(var dest, source: z_stream): Integer;
|
||||||
function inflateReset(var strm: z_stream): Integer;
|
function inflateReset(var strm: z_stream): Integer;
|
||||||
|
function inflateReset2(var strm: z_stream; windowBits: Integer): Integer;
|
||||||
|
function inflatePrime(var strm: z_stream; bits, value: Integer): Integer;
|
||||||
|
function inflateMark(var strm: z_stream): LongInt;
|
||||||
|
function inflateGetHeader(var strm: z_stream; var head: gz_header): Integer;
|
||||||
function inflateBackInit(var strm: z_stream;
|
function inflateBackInit(var strm: z_stream;
|
||||||
windowBits: Integer; window: PChar): Integer;
|
windowBits: Integer; window: PChar): Integer;
|
||||||
function inflateBack(var strm: z_stream; in_fn: in_func; in_desc: Pointer;
|
function inflateBack(var strm: z_stream; in_fn: in_func; in_desc: Pointer;
|
||||||
@@ -123,7 +152,9 @@ function uncompress(dest: PChar; var destLen: LongInt;
|
|||||||
|
|
||||||
(* checksum functions *)
|
(* checksum functions *)
|
||||||
function adler32(adler: LongInt; const buf: PChar; len: Integer): LongInt;
|
function adler32(adler: LongInt; const buf: PChar; len: Integer): LongInt;
|
||||||
|
function adler32_combine(adler1, adler2, len2: LongInt): LongInt;
|
||||||
function crc32(crc: LongInt; const buf: PChar; len: Integer): LongInt;
|
function crc32(crc: LongInt; const buf: PChar; len: Integer): LongInt;
|
||||||
|
function crc32_combine(crc1, crc2, len2: LongInt): LongInt;
|
||||||
|
|
||||||
(* various hacks, don't look :) *)
|
(* various hacks, don't look :) *)
|
||||||
function deflateInit_(var strm: z_stream; level: Integer;
|
function deflateInit_(var strm: z_stream; level: Integer;
|
||||||
@@ -155,10 +186,12 @@ implementation
|
|||||||
{$L zutil.obj}
|
{$L zutil.obj}
|
||||||
|
|
||||||
function adler32; external;
|
function adler32; external;
|
||||||
|
function adler32_combine; external;
|
||||||
function compress; external;
|
function compress; external;
|
||||||
function compress2; external;
|
function compress2; external;
|
||||||
function compressBound; external;
|
function compressBound; external;
|
||||||
function crc32; external;
|
function crc32; external;
|
||||||
|
function crc32_combine; external;
|
||||||
function deflate; external;
|
function deflate; external;
|
||||||
function deflateBound; external;
|
function deflateBound; external;
|
||||||
function deflateCopy; external;
|
function deflateCopy; external;
|
||||||
@@ -166,18 +199,25 @@ function deflateEnd; external;
|
|||||||
function deflateInit_; external;
|
function deflateInit_; external;
|
||||||
function deflateInit2_; external;
|
function deflateInit2_; external;
|
||||||
function deflateParams; external;
|
function deflateParams; external;
|
||||||
|
function deflatePending; external;
|
||||||
function deflatePrime; external;
|
function deflatePrime; external;
|
||||||
function deflateReset; external;
|
function deflateReset; external;
|
||||||
function deflateSetDictionary; external;
|
function deflateSetDictionary; external;
|
||||||
|
function deflateSetHeader; external;
|
||||||
|
function deflateTune; external;
|
||||||
function inflate; external;
|
function inflate; external;
|
||||||
function inflateBack; external;
|
function inflateBack; external;
|
||||||
function inflateBackEnd; external;
|
function inflateBackEnd; external;
|
||||||
function inflateBackInit_; external;
|
function inflateBackInit_; external;
|
||||||
function inflateCopy; external;
|
function inflateCopy; external;
|
||||||
function inflateEnd; external;
|
function inflateEnd; external;
|
||||||
|
function inflateGetHeader; external;
|
||||||
function inflateInit_; external;
|
function inflateInit_; external;
|
||||||
function inflateInit2_; external;
|
function inflateInit2_; external;
|
||||||
|
function inflateMark; external;
|
||||||
|
function inflatePrime; external;
|
||||||
function inflateReset; external;
|
function inflateReset; external;
|
||||||
|
function inflateReset2; external;
|
||||||
function inflateSetDictionary; external;
|
function inflateSetDictionary; external;
|
||||||
function inflateSync; external;
|
function inflateSync; external;
|
||||||
function uncompress; external;
|
function uncompress; external;
|
||||||
|
|||||||
@@ -1,8 +1,42 @@
|
|||||||
puff: puff.c puff.h
|
CFLAGS=-O
|
||||||
cc -DTEST -o puff puff.c
|
|
||||||
|
puff: puff.o pufftest.o
|
||||||
|
|
||||||
|
puff.o: puff.h
|
||||||
|
|
||||||
|
pufftest.o: puff.h
|
||||||
|
|
||||||
test: puff
|
test: puff
|
||||||
puff zeros.raw
|
puff zeros.raw
|
||||||
|
|
||||||
|
puft: puff.c puff.h pufftest.o
|
||||||
|
cc -fprofile-arcs -ftest-coverage -o puft puff.c pufftest.o
|
||||||
|
|
||||||
|
# puff full coverage test (should say 100%)
|
||||||
|
cov: puft
|
||||||
|
@rm -f *.gcov *.gcda
|
||||||
|
@puft -w zeros.raw 2>&1 | cat > /dev/null
|
||||||
|
@echo '04' | xxd -r -p | puft 2> /dev/null || test $$? -eq 2
|
||||||
|
@echo '00' | xxd -r -p | puft 2> /dev/null || test $$? -eq 2
|
||||||
|
@echo '00 00 00 00 00' | xxd -r -p | puft 2> /dev/null || test $$? -eq 254
|
||||||
|
@echo '00 01 00 fe ff' | xxd -r -p | puft 2> /dev/null || test $$? -eq 2
|
||||||
|
@echo '01 01 00 fe ff 0a' | xxd -r -p | puft -f 2>&1 | cat > /dev/null
|
||||||
|
@echo '02 7e ff ff' | xxd -r -p | puft 2> /dev/null || test $$? -eq 246
|
||||||
|
@echo '02' | xxd -r -p | puft 2> /dev/null || test $$? -eq 2
|
||||||
|
@echo '04 80 49 92 24 49 92 24 0f b4 ff ff c3 04' | xxd -r -p | puft 2> /dev/null || test $$? -eq 2
|
||||||
|
@echo '04 80 49 92 24 49 92 24 71 ff ff 93 11 00' | xxd -r -p | puft 2> /dev/null || test $$? -eq 249
|
||||||
|
@echo '04 c0 81 08 00 00 00 00 20 7f eb 0b 00 00' | xxd -r -p | puft 2> /dev/null || test $$? -eq 246
|
||||||
|
@echo '0b 00 00' | xxd -r -p | puft -f 2>&1 | cat > /dev/null
|
||||||
|
@echo '1a 07' | xxd -r -p | puft 2> /dev/null || test $$? -eq 246
|
||||||
|
@echo '0c c0 81 00 00 00 00 00 90 ff 6b 04' | xxd -r -p | puft 2> /dev/null || test $$? -eq 245
|
||||||
|
@puft -f zeros.raw 2>&1 | cat > /dev/null
|
||||||
|
@echo 'fc 00 00' | xxd -r -p | puft 2> /dev/null || test $$? -eq 253
|
||||||
|
@echo '04 00 fe ff' | xxd -r -p | puft 2> /dev/null || test $$? -eq 252
|
||||||
|
@echo '04 00 24 49' | xxd -r -p | puft 2> /dev/null || test $$? -eq 251
|
||||||
|
@echo '04 80 49 92 24 49 92 24 0f b4 ff ff c3 84' | xxd -r -p | puft 2> /dev/null || test $$? -eq 248
|
||||||
|
@echo '04 00 24 e9 ff ff' | xxd -r -p | puft 2> /dev/null || test $$? -eq 250
|
||||||
|
@echo '04 00 24 e9 ff 6d' | xxd -r -p | puft 2> /dev/null || test $$? -eq 247
|
||||||
|
@gcov -n puff.c
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f puff puff.o
|
rm -f puff puft *.o *.gc*
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* puff.c
|
* puff.c
|
||||||
* Copyright (C) 2002-2008 Mark Adler
|
* Copyright (C) 2002-2010 Mark Adler
|
||||||
* For conditions of distribution and use, see copyright notice in puff.h
|
* For conditions of distribution and use, see copyright notice in puff.h
|
||||||
* version 2.0, 25 Jul 2008
|
* version 2.2, 25 Apr 2010
|
||||||
*
|
*
|
||||||
* puff.c is a simple inflate written to be an unambiguous way to specify the
|
* puff.c is a simple inflate written to be an unambiguous way to specify the
|
||||||
* deflate format. It is not written for speed but rather simplicity. As a
|
* deflate format. It is not written for speed but rather simplicity. As a
|
||||||
@@ -49,9 +49,9 @@
|
|||||||
* - Fix fixed codes table error
|
* - Fix fixed codes table error
|
||||||
* - Provide a scanning mode for determining size of
|
* - Provide a scanning mode for determining size of
|
||||||
* uncompressed data
|
* uncompressed data
|
||||||
* 1.3 20 Mar 2002 - Go back to lengths for puff() parameters [Jean-loup]
|
* 1.3 20 Mar 2002 - Go back to lengths for puff() parameters [Gailly]
|
||||||
* - Add a puff.h file for the interface
|
* - Add a puff.h file for the interface
|
||||||
* - Add braces in puff() for else do [Jean-loup]
|
* - Add braces in puff() for else do [Gailly]
|
||||||
* - Use indexes instead of pointers for readability
|
* - Use indexes instead of pointers for readability
|
||||||
* 1.4 31 Mar 2002 - Simplify construct() code set check
|
* 1.4 31 Mar 2002 - Simplify construct() code set check
|
||||||
* - Fix some comments
|
* - Fix some comments
|
||||||
@@ -67,13 +67,21 @@
|
|||||||
* - Add option in TEST code for puff to write the data
|
* - Add option in TEST code for puff to write the data
|
||||||
* - Add option in TEST code to skip input bytes
|
* - Add option in TEST code to skip input bytes
|
||||||
* - Allow TEST code to read from piped stdin
|
* - Allow TEST code to read from piped stdin
|
||||||
|
* 2.1 4 Apr 2010 - Avoid variable initialization for happier compilers
|
||||||
|
* - Avoid unsigned comparisons for even happier compilers
|
||||||
|
* 2.2 25 Apr 2010 - Fix bug in variable initializations [Oberhumer]
|
||||||
|
* - Add const where appropriate [Oberhumer]
|
||||||
|
* - Split if's and ?'s for coverage testing
|
||||||
|
* - Break out test code to separate file
|
||||||
|
* - Move NIL to puff.h
|
||||||
|
* - Allow incomplete code only if single code length is 1
|
||||||
|
* - Add full code coverage test to Makefile
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <setjmp.h> /* for setjmp(), longjmp(), and jmp_buf */
|
#include <setjmp.h> /* for setjmp(), longjmp(), and jmp_buf */
|
||||||
#include "puff.h" /* prototype for puff() */
|
#include "puff.h" /* prototype for puff() */
|
||||||
|
|
||||||
#define local static /* for local function definitions */
|
#define local static /* for local function definitions */
|
||||||
#define NIL ((unsigned char *)0) /* for no output option */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Maximums for allocations and loops. It is not useful to change these --
|
* Maximums for allocations and loops. It is not useful to change these --
|
||||||
@@ -93,7 +101,7 @@ struct state {
|
|||||||
unsigned long outcnt; /* bytes written to out so far */
|
unsigned long outcnt; /* bytes written to out so far */
|
||||||
|
|
||||||
/* input state */
|
/* input state */
|
||||||
unsigned char *in; /* input buffer */
|
const unsigned char *in; /* input buffer */
|
||||||
unsigned long inlen; /* available input at in */
|
unsigned long inlen; /* available input at in */
|
||||||
unsigned long incnt; /* bytes read so far */
|
unsigned long incnt; /* bytes read so far */
|
||||||
int bitbuf; /* bit buffer */
|
int bitbuf; /* bit buffer */
|
||||||
@@ -121,7 +129,8 @@ local int bits(struct state *s, int need)
|
|||||||
/* load at least need bits into val */
|
/* load at least need bits into val */
|
||||||
val = s->bitbuf;
|
val = s->bitbuf;
|
||||||
while (s->bitcnt < need) {
|
while (s->bitcnt < need) {
|
||||||
if (s->incnt == s->inlen) longjmp(s->env, 1); /* out of input */
|
if (s->incnt == s->inlen)
|
||||||
|
longjmp(s->env, 1); /* out of input */
|
||||||
val |= (long)(s->in[s->incnt++]) << s->bitcnt; /* load eight bits */
|
val |= (long)(s->in[s->incnt++]) << s->bitcnt; /* load eight bits */
|
||||||
s->bitcnt += 8;
|
s->bitcnt += 8;
|
||||||
}
|
}
|
||||||
@@ -160,7 +169,8 @@ local int stored(struct state *s)
|
|||||||
s->bitcnt = 0;
|
s->bitcnt = 0;
|
||||||
|
|
||||||
/* get length and check against its one's complement */
|
/* get length and check against its one's complement */
|
||||||
if (s->incnt + 4 > s->inlen) return 2; /* not enough input */
|
if (s->incnt + 4 > s->inlen)
|
||||||
|
return 2; /* not enough input */
|
||||||
len = s->in[s->incnt++];
|
len = s->in[s->incnt++];
|
||||||
len |= s->in[s->incnt++] << 8;
|
len |= s->in[s->incnt++] << 8;
|
||||||
if (s->in[s->incnt++] != (~len & 0xff) ||
|
if (s->in[s->incnt++] != (~len & 0xff) ||
|
||||||
@@ -168,7 +178,8 @@ local int stored(struct state *s)
|
|||||||
return -2; /* didn't match complement! */
|
return -2; /* didn't match complement! */
|
||||||
|
|
||||||
/* copy len bytes from in to out */
|
/* copy len bytes from in to out */
|
||||||
if (s->incnt + len > s->inlen) return 2; /* not enough input */
|
if (s->incnt + len > s->inlen)
|
||||||
|
return 2; /* not enough input */
|
||||||
if (s->out != NIL) {
|
if (s->out != NIL) {
|
||||||
if (s->outcnt + len > s->outlen)
|
if (s->outcnt + len > s->outlen)
|
||||||
return 1; /* not enough output space */
|
return 1; /* not enough output space */
|
||||||
@@ -220,7 +231,7 @@ struct huffman {
|
|||||||
* in the deflate format. See the format notes for fixed() and dynamic().
|
* in the deflate format. See the format notes for fixed() and dynamic().
|
||||||
*/
|
*/
|
||||||
#ifdef SLOW
|
#ifdef SLOW
|
||||||
local int decode(struct state *s, struct huffman *h)
|
local int decode(struct state *s, const struct huffman *h)
|
||||||
{
|
{
|
||||||
int len; /* current number of bits in code */
|
int len; /* current number of bits in code */
|
||||||
int code; /* len bits being decoded */
|
int code; /* len bits being decoded */
|
||||||
@@ -248,7 +259,7 @@ local int decode(struct state *s, struct huffman *h)
|
|||||||
* a few percent larger.
|
* a few percent larger.
|
||||||
*/
|
*/
|
||||||
#else /* !SLOW */
|
#else /* !SLOW */
|
||||||
local int decode(struct state *s, struct huffman *h)
|
local int decode(struct state *s, const struct huffman *h)
|
||||||
{
|
{
|
||||||
int len; /* current number of bits in code */
|
int len; /* current number of bits in code */
|
||||||
int code; /* len bits being decoded */
|
int code; /* len bits being decoded */
|
||||||
@@ -281,10 +292,13 @@ local int decode(struct state *s, struct huffman *h)
|
|||||||
len++;
|
len++;
|
||||||
}
|
}
|
||||||
left = (MAXBITS+1) - len;
|
left = (MAXBITS+1) - len;
|
||||||
if (left == 0) break;
|
if (left == 0)
|
||||||
if (s->incnt == s->inlen) longjmp(s->env, 1); /* out of input */
|
break;
|
||||||
|
if (s->incnt == s->inlen)
|
||||||
|
longjmp(s->env, 1); /* out of input */
|
||||||
bitbuf = s->in[s->incnt++];
|
bitbuf = s->in[s->incnt++];
|
||||||
if (left > 8) left = 8;
|
if (left > 8)
|
||||||
|
left = 8;
|
||||||
}
|
}
|
||||||
return -10; /* ran out of codes */
|
return -10; /* ran out of codes */
|
||||||
}
|
}
|
||||||
@@ -322,7 +336,7 @@ local int decode(struct state *s, struct huffman *h)
|
|||||||
* - Within a given code length, the symbols are kept in ascending order for
|
* - Within a given code length, the symbols are kept in ascending order for
|
||||||
* the code bits definition.
|
* the code bits definition.
|
||||||
*/
|
*/
|
||||||
local int construct(struct huffman *h, short *length, int n)
|
local int construct(struct huffman *h, const short *length, int n)
|
||||||
{
|
{
|
||||||
int symbol; /* current symbol when stepping through length[] */
|
int symbol; /* current symbol when stepping through length[] */
|
||||||
int len; /* current length when stepping through h->count[] */
|
int len; /* current length when stepping through h->count[] */
|
||||||
@@ -342,7 +356,8 @@ local int construct(struct huffman *h, short *length, int n)
|
|||||||
for (len = 1; len <= MAXBITS; len++) {
|
for (len = 1; len <= MAXBITS; len++) {
|
||||||
left <<= 1; /* one more bit, double codes left */
|
left <<= 1; /* one more bit, double codes left */
|
||||||
left -= h->count[len]; /* deduct count from possible codes */
|
left -= h->count[len]; /* deduct count from possible codes */
|
||||||
if (left < 0) return left; /* over-subscribed--return negative */
|
if (left < 0)
|
||||||
|
return left; /* over-subscribed--return negative */
|
||||||
} /* left > 0 means incomplete */
|
} /* left > 0 means incomplete */
|
||||||
|
|
||||||
/* generate offsets into symbol table for each length for sorting */
|
/* generate offsets into symbol table for each length for sorting */
|
||||||
@@ -418,8 +433,8 @@ local int construct(struct huffman *h, short *length, int n)
|
|||||||
* defined to do the wrong thing in this case.
|
* defined to do the wrong thing in this case.
|
||||||
*/
|
*/
|
||||||
local int codes(struct state *s,
|
local int codes(struct state *s,
|
||||||
struct huffman *lencode,
|
const struct huffman *lencode,
|
||||||
struct huffman *distcode)
|
const struct huffman *distcode)
|
||||||
{
|
{
|
||||||
int symbol; /* decoded symbol */
|
int symbol; /* decoded symbol */
|
||||||
int len; /* length for copy */
|
int len; /* length for copy */
|
||||||
@@ -442,11 +457,13 @@ local int codes(struct state *s,
|
|||||||
/* decode literals and length/distance pairs */
|
/* decode literals and length/distance pairs */
|
||||||
do {
|
do {
|
||||||
symbol = decode(s, lencode);
|
symbol = decode(s, lencode);
|
||||||
if (symbol < 0) return symbol; /* invalid symbol */
|
if (symbol < 0)
|
||||||
|
return symbol; /* invalid symbol */
|
||||||
if (symbol < 256) { /* literal: symbol is the byte */
|
if (symbol < 256) { /* literal: symbol is the byte */
|
||||||
/* write out the literal */
|
/* write out the literal */
|
||||||
if (s->out != NIL) {
|
if (s->out != NIL) {
|
||||||
if (s->outcnt == s->outlen) return 1;
|
if (s->outcnt == s->outlen)
|
||||||
|
return 1;
|
||||||
s->out[s->outcnt] = symbol;
|
s->out[s->outcnt] = symbol;
|
||||||
}
|
}
|
||||||
s->outcnt++;
|
s->outcnt++;
|
||||||
@@ -454,12 +471,14 @@ local int codes(struct state *s,
|
|||||||
else if (symbol > 256) { /* length */
|
else if (symbol > 256) { /* length */
|
||||||
/* get and compute length */
|
/* get and compute length */
|
||||||
symbol -= 257;
|
symbol -= 257;
|
||||||
if (symbol >= 29) return -10; /* invalid fixed code */
|
if (symbol >= 29)
|
||||||
|
return -10; /* invalid fixed code */
|
||||||
len = lens[symbol] + bits(s, lext[symbol]);
|
len = lens[symbol] + bits(s, lext[symbol]);
|
||||||
|
|
||||||
/* get and check distance */
|
/* get and check distance */
|
||||||
symbol = decode(s, distcode);
|
symbol = decode(s, distcode);
|
||||||
if (symbol < 0) return symbol; /* invalid symbol */
|
if (symbol < 0)
|
||||||
|
return symbol; /* invalid symbol */
|
||||||
dist = dists[symbol] + bits(s, dext[symbol]);
|
dist = dists[symbol] + bits(s, dext[symbol]);
|
||||||
#ifndef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
|
#ifndef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
|
||||||
if (dist > s->outcnt)
|
if (dist > s->outcnt)
|
||||||
@@ -468,13 +487,15 @@ local int codes(struct state *s,
|
|||||||
|
|
||||||
/* copy length bytes from distance bytes back */
|
/* copy length bytes from distance bytes back */
|
||||||
if (s->out != NIL) {
|
if (s->out != NIL) {
|
||||||
if (s->outcnt + len > s->outlen) return 1;
|
if (s->outcnt + len > s->outlen)
|
||||||
|
return 1;
|
||||||
while (len--) {
|
while (len--) {
|
||||||
s->out[s->outcnt] =
|
s->out[s->outcnt] =
|
||||||
#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
|
#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
|
||||||
dist > s->outcnt ? 0 :
|
dist > s->outcnt ?
|
||||||
|
0 :
|
||||||
#endif
|
#endif
|
||||||
s->out[s->outcnt - dist];
|
s->out[s->outcnt - dist];
|
||||||
s->outcnt++;
|
s->outcnt++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -516,14 +537,19 @@ local int fixed(struct state *s)
|
|||||||
static int virgin = 1;
|
static int virgin = 1;
|
||||||
static short lencnt[MAXBITS+1], lensym[FIXLCODES];
|
static short lencnt[MAXBITS+1], lensym[FIXLCODES];
|
||||||
static short distcnt[MAXBITS+1], distsym[MAXDCODES];
|
static short distcnt[MAXBITS+1], distsym[MAXDCODES];
|
||||||
static struct huffman lencode = {lencnt, lensym};
|
static struct huffman lencode, distcode;
|
||||||
static struct huffman distcode = {distcnt, distsym};
|
|
||||||
|
|
||||||
/* build fixed huffman tables if first call (may not be thread safe) */
|
/* build fixed huffman tables if first call (may not be thread safe) */
|
||||||
if (virgin) {
|
if (virgin) {
|
||||||
int symbol;
|
int symbol;
|
||||||
short lengths[FIXLCODES];
|
short lengths[FIXLCODES];
|
||||||
|
|
||||||
|
/* construct lencode and distcode */
|
||||||
|
lencode.count = lencnt;
|
||||||
|
lencode.symbol = lensym;
|
||||||
|
distcode.count = distcnt;
|
||||||
|
distcode.symbol = distsym;
|
||||||
|
|
||||||
/* literal/length table */
|
/* literal/length table */
|
||||||
for (symbol = 0; symbol < 144; symbol++)
|
for (symbol = 0; symbol < 144; symbol++)
|
||||||
lengths[symbol] = 8;
|
lengths[symbol] = 8;
|
||||||
@@ -643,11 +669,16 @@ local int dynamic(struct state *s)
|
|||||||
short lengths[MAXCODES]; /* descriptor code lengths */
|
short lengths[MAXCODES]; /* descriptor code lengths */
|
||||||
short lencnt[MAXBITS+1], lensym[MAXLCODES]; /* lencode memory */
|
short lencnt[MAXBITS+1], lensym[MAXLCODES]; /* lencode memory */
|
||||||
short distcnt[MAXBITS+1], distsym[MAXDCODES]; /* distcode memory */
|
short distcnt[MAXBITS+1], distsym[MAXDCODES]; /* distcode memory */
|
||||||
struct huffman lencode = {lencnt, lensym}; /* length code */
|
struct huffman lencode, distcode; /* length and distance codes */
|
||||||
struct huffman distcode = {distcnt, distsym}; /* distance code */
|
|
||||||
static const short order[19] = /* permutation of code length codes */
|
static const short order[19] = /* permutation of code length codes */
|
||||||
{16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
|
{16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
|
||||||
|
|
||||||
|
/* construct lencode and distcode */
|
||||||
|
lencode.count = lencnt;
|
||||||
|
lencode.symbol = lensym;
|
||||||
|
distcode.count = distcnt;
|
||||||
|
distcode.symbol = distsym;
|
||||||
|
|
||||||
/* get number of lengths in each table, check lengths */
|
/* get number of lengths in each table, check lengths */
|
||||||
nlen = bits(s, 5) + 257;
|
nlen = bits(s, 5) + 257;
|
||||||
ndist = bits(s, 5) + 1;
|
ndist = bits(s, 5) + 1;
|
||||||
@@ -663,7 +694,8 @@ local int dynamic(struct state *s)
|
|||||||
|
|
||||||
/* build huffman table for code lengths codes (use lencode temporarily) */
|
/* build huffman table for code lengths codes (use lencode temporarily) */
|
||||||
err = construct(&lencode, lengths, 19);
|
err = construct(&lencode, lengths, 19);
|
||||||
if (err != 0) return -4; /* require complete code set here */
|
if (err != 0) /* require complete code set here */
|
||||||
|
return -4;
|
||||||
|
|
||||||
/* read length/literal and distance code length tables */
|
/* read length/literal and distance code length tables */
|
||||||
index = 0;
|
index = 0;
|
||||||
@@ -677,7 +709,8 @@ local int dynamic(struct state *s)
|
|||||||
else { /* repeat instruction */
|
else { /* repeat instruction */
|
||||||
len = 0; /* assume repeating zeros */
|
len = 0; /* assume repeating zeros */
|
||||||
if (symbol == 16) { /* repeat last length 3..6 times */
|
if (symbol == 16) { /* repeat last length 3..6 times */
|
||||||
if (index == 0) return -5; /* no last length! */
|
if (index == 0)
|
||||||
|
return -5; /* no last length! */
|
||||||
len = lengths[index - 1]; /* last length */
|
len = lengths[index - 1]; /* last length */
|
||||||
symbol = 3 + bits(s, 2);
|
symbol = 3 + bits(s, 2);
|
||||||
}
|
}
|
||||||
@@ -698,13 +731,13 @@ local int dynamic(struct state *s)
|
|||||||
|
|
||||||
/* build huffman table for literal/length codes */
|
/* build huffman table for literal/length codes */
|
||||||
err = construct(&lencode, lengths, nlen);
|
err = construct(&lencode, lengths, nlen);
|
||||||
if (err < 0 || (err > 0 && nlen - lencode.count[0] != 1))
|
if (err && (err < 0 || nlen != lencode.count[0] + lencode.count[1]))
|
||||||
return -7; /* only allow incomplete codes if just one code */
|
return -7; /* incomplete code ok only for single length 1 code */
|
||||||
|
|
||||||
/* build huffman table for distance codes */
|
/* build huffman table for distance codes */
|
||||||
err = construct(&distcode, lengths + nlen, ndist);
|
err = construct(&distcode, lengths + nlen, ndist);
|
||||||
if (err < 0 || (err > 0 && ndist - distcode.count[0] != 1))
|
if (err && (err < 0 || ndist != distcode.count[0] + distcode.count[1]))
|
||||||
return -8; /* only allow incomplete codes if just one code */
|
return -8; /* incomplete code ok only for single length 1 code */
|
||||||
|
|
||||||
/* decode data until end-of-block code */
|
/* decode data until end-of-block code */
|
||||||
return codes(s, &lencode, &distcode);
|
return codes(s, &lencode, &distcode);
|
||||||
@@ -756,7 +789,7 @@ local int dynamic(struct state *s)
|
|||||||
*/
|
*/
|
||||||
int puff(unsigned char *dest, /* pointer to destination pointer */
|
int puff(unsigned char *dest, /* pointer to destination pointer */
|
||||||
unsigned long *destlen, /* amount of output space */
|
unsigned long *destlen, /* amount of output space */
|
||||||
unsigned char *source, /* pointer to source data pointer */
|
const unsigned char *source, /* pointer to source data pointer */
|
||||||
unsigned long *sourcelen) /* amount of input available */
|
unsigned long *sourcelen) /* amount of input available */
|
||||||
{
|
{
|
||||||
struct state s; /* input/output state */
|
struct state s; /* input/output state */
|
||||||
@@ -783,11 +816,15 @@ int puff(unsigned char *dest, /* pointer to destination pointer */
|
|||||||
do {
|
do {
|
||||||
last = bits(&s, 1); /* one if last block */
|
last = bits(&s, 1); /* one if last block */
|
||||||
type = bits(&s, 2); /* block type 0..3 */
|
type = bits(&s, 2); /* block type 0..3 */
|
||||||
err = type == 0 ? stored(&s) :
|
err = type == 0 ?
|
||||||
(type == 1 ? fixed(&s) :
|
stored(&s) :
|
||||||
(type == 2 ? dynamic(&s) :
|
(type == 1 ?
|
||||||
-1)); /* type == 3, invalid */
|
fixed(&s) :
|
||||||
if (err != 0) break; /* return with error */
|
(type == 2 ?
|
||||||
|
dynamic(&s) :
|
||||||
|
-1)); /* type == 3, invalid */
|
||||||
|
if (err != 0)
|
||||||
|
break; /* return with error */
|
||||||
} while (!last);
|
} while (!last);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -798,145 +835,3 @@ int puff(unsigned char *dest, /* pointer to destination pointer */
|
|||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TEST
|
|
||||||
/* Examples of how to use puff().
|
|
||||||
|
|
||||||
Usage: puff [-w] [-nnn] file
|
|
||||||
... | puff [-w] [-nnn]
|
|
||||||
|
|
||||||
where file is the input file with deflate data, nnn is the number of bytes
|
|
||||||
of input to skip before inflating (e.g. to skip a zlib or gzip header), and
|
|
||||||
-w is used to write the decompressed data to stdout */
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
/* Return size times approximately the cube root of 2, keeping the result as 1,
|
|
||||||
3, or 5 times a power of 2 -- the result is always > size, until the result
|
|
||||||
is the maximum value of an unsigned long, where it remains. This is useful
|
|
||||||
to keep reallocations less than ~33% over the actual data. */
|
|
||||||
local size_t bythirds(size_t size)
|
|
||||||
{
|
|
||||||
int n;
|
|
||||||
size_t m;
|
|
||||||
|
|
||||||
m = size;
|
|
||||||
for (n = 0; m; n++)
|
|
||||||
m >>= 1;
|
|
||||||
if (n < 3)
|
|
||||||
return size + 1;
|
|
||||||
n -= 3;
|
|
||||||
m = size >> n;
|
|
||||||
m += m == 6 ? 2 : 1;
|
|
||||||
m <<= n;
|
|
||||||
return m > size ? m : (size_t)(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Read the input file *name, or stdin if name is NULL, into allocated memory.
|
|
||||||
Reallocate to larger buffers until the entire file is read in. Return a
|
|
||||||
pointer to the allocated data, or NULL if there was a memory allocation
|
|
||||||
failure. *len is the number of bytes of data read from the input file (even
|
|
||||||
if load() returns NULL). If the input file was empty or could not be opened
|
|
||||||
or read, *len is zero. */
|
|
||||||
local void *load(char *name, size_t *len)
|
|
||||||
{
|
|
||||||
size_t size;
|
|
||||||
void *buf, *swap;
|
|
||||||
FILE *in;
|
|
||||||
|
|
||||||
*len = 0;
|
|
||||||
buf = malloc(size = 4096);
|
|
||||||
if (buf == NULL)
|
|
||||||
return NULL;
|
|
||||||
in = name == NULL ? stdin : fopen(name, "rb");
|
|
||||||
if (in != NULL) {
|
|
||||||
for (;;) {
|
|
||||||
*len += fread((char *)buf + *len, 1, size - *len, in);
|
|
||||||
if (*len < size) break;
|
|
||||||
size = bythirds(size);
|
|
||||||
if (size == *len || (swap = realloc(buf, size)) == NULL) {
|
|
||||||
free(buf);
|
|
||||||
buf = NULL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
buf = swap;
|
|
||||||
}
|
|
||||||
fclose(in);
|
|
||||||
}
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
int ret, skip = 0, put = 0;
|
|
||||||
char *arg, *name = NULL;
|
|
||||||
unsigned char *source = NULL, *dest;
|
|
||||||
size_t len = 0;
|
|
||||||
unsigned long sourcelen, destlen;
|
|
||||||
|
|
||||||
/* process arguments */
|
|
||||||
while (arg = *++argv, --argc)
|
|
||||||
if (arg[0] == '-') {
|
|
||||||
if (arg[1] == 'w' && arg[2] == 0)
|
|
||||||
put = 1;
|
|
||||||
else if (arg[1] >= '0' && arg[1] <= '9')
|
|
||||||
skip = atoi(arg + 1);
|
|
||||||
else {
|
|
||||||
fprintf(stderr, "invalid option %s\n", arg);
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (name != NULL) {
|
|
||||||
fprintf(stderr, "only one file name allowed\n");
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
name = arg;
|
|
||||||
source = load(name, &len);
|
|
||||||
if (source == NULL) {
|
|
||||||
fprintf(stderr, "memory allocation failure\n");
|
|
||||||
return 4;
|
|
||||||
}
|
|
||||||
if (len == 0) {
|
|
||||||
fprintf(stderr, "could not read %s, or it was empty\n",
|
|
||||||
name == NULL ? "<stdin>" : name);
|
|
||||||
free(source);
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
if (skip >= len) {
|
|
||||||
fprintf(stderr, "skip request of %d leaves no input\n", skip);
|
|
||||||
free(source);
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* test inflate data with offset skip */
|
|
||||||
len -= skip;
|
|
||||||
sourcelen = (unsigned long)len;
|
|
||||||
ret = puff(NIL, &destlen, source + skip, &sourcelen);
|
|
||||||
if (ret)
|
|
||||||
fprintf(stderr, "puff() failed with return code %d\n", ret);
|
|
||||||
else {
|
|
||||||
fprintf(stderr, "puff() succeeded uncompressing %lu bytes\n", destlen);
|
|
||||||
if (sourcelen < len) fprintf(stderr, "%lu compressed bytes unused\n",
|
|
||||||
len - sourcelen);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* if requested, inflate again and write decompressd data to stdout */
|
|
||||||
if (put) {
|
|
||||||
dest = malloc(destlen);
|
|
||||||
if (dest == NULL) {
|
|
||||||
fprintf(stderr, "memory allocation failure\n");
|
|
||||||
free(source);
|
|
||||||
return 4;
|
|
||||||
}
|
|
||||||
puff(dest, &destlen, source + skip, &sourcelen);
|
|
||||||
fwrite(dest, 1, destlen, stdout);
|
|
||||||
free(dest);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* clean up */
|
|
||||||
free(source);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* puff.h
|
/* puff.h
|
||||||
Copyright (C) 2002-2008 Mark Adler, all rights reserved
|
Copyright (C) 2002-2010 Mark Adler, all rights reserved
|
||||||
version 1.9, 10 Jan 2008
|
version 2.2, 25 Apr 2010
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the author be held liable for any damages
|
warranty. In no event will the author be held liable for any damages
|
||||||
@@ -25,7 +25,11 @@
|
|||||||
/*
|
/*
|
||||||
* See puff.c for purpose and usage.
|
* See puff.c for purpose and usage.
|
||||||
*/
|
*/
|
||||||
|
#ifndef NIL
|
||||||
|
# define NIL ((unsigned char *)0) /* for no output option */
|
||||||
|
#endif
|
||||||
|
|
||||||
int puff(unsigned char *dest, /* pointer to destination pointer */
|
int puff(unsigned char *dest, /* pointer to destination pointer */
|
||||||
unsigned long *destlen, /* amount of output space */
|
unsigned long *destlen, /* amount of output space */
|
||||||
unsigned char *source, /* pointer to source data pointer */
|
const unsigned char *source, /* pointer to source data pointer */
|
||||||
unsigned long *sourcelen); /* amount of input available */
|
unsigned long *sourcelen); /* amount of input available */
|
||||||
|
|||||||
165
contrib/puff/pufftest.c
Normal file
165
contrib/puff/pufftest.c
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
/*
|
||||||
|
* pufftest.c
|
||||||
|
* Copyright (C) 2002-2010 Mark Adler
|
||||||
|
* For conditions of distribution and use, see copyright notice in puff.h
|
||||||
|
* version 2.2, 25 Apr 2010
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Example of how to use puff().
|
||||||
|
|
||||||
|
Usage: puff [-w] [-f] [-nnn] file
|
||||||
|
... | puff [-w] [-f] [-nnn]
|
||||||
|
|
||||||
|
where file is the input file with deflate data, nnn is the number of bytes
|
||||||
|
of input to skip before inflating (e.g. to skip a zlib or gzip header), and
|
||||||
|
-w is used to write the decompressed data to stdout. -f is for coverage
|
||||||
|
testing, and causes pufftest to fail with not enough output space (-f does
|
||||||
|
a write like -w, so -w is not required). */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "puff.h"
|
||||||
|
|
||||||
|
#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
|
||||||
|
# include <fcntl.h>
|
||||||
|
# include <io.h>
|
||||||
|
# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
|
||||||
|
#else
|
||||||
|
# define SET_BINARY_MODE(file)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define local static
|
||||||
|
|
||||||
|
/* Return size times approximately the cube root of 2, keeping the result as 1,
|
||||||
|
3, or 5 times a power of 2 -- the result is always > size, until the result
|
||||||
|
is the maximum value of an unsigned long, where it remains. This is useful
|
||||||
|
to keep reallocations less than ~33% over the actual data. */
|
||||||
|
local size_t bythirds(size_t size)
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
size_t m;
|
||||||
|
|
||||||
|
m = size;
|
||||||
|
for (n = 0; m; n++)
|
||||||
|
m >>= 1;
|
||||||
|
if (n < 3)
|
||||||
|
return size + 1;
|
||||||
|
n -= 3;
|
||||||
|
m = size >> n;
|
||||||
|
m += m == 6 ? 2 : 1;
|
||||||
|
m <<= n;
|
||||||
|
return m > size ? m : (size_t)(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Read the input file *name, or stdin if name is NULL, into allocated memory.
|
||||||
|
Reallocate to larger buffers until the entire file is read in. Return a
|
||||||
|
pointer to the allocated data, or NULL if there was a memory allocation
|
||||||
|
failure. *len is the number of bytes of data read from the input file (even
|
||||||
|
if load() returns NULL). If the input file was empty or could not be opened
|
||||||
|
or read, *len is zero. */
|
||||||
|
local void *load(const char *name, size_t *len)
|
||||||
|
{
|
||||||
|
size_t size;
|
||||||
|
void *buf, *swap;
|
||||||
|
FILE *in;
|
||||||
|
|
||||||
|
*len = 0;
|
||||||
|
buf = malloc(size = 4096);
|
||||||
|
if (buf == NULL)
|
||||||
|
return NULL;
|
||||||
|
in = name == NULL ? stdin : fopen(name, "rb");
|
||||||
|
if (in != NULL) {
|
||||||
|
for (;;) {
|
||||||
|
*len += fread((char *)buf + *len, 1, size - *len, in);
|
||||||
|
if (*len < size) break;
|
||||||
|
size = bythirds(size);
|
||||||
|
if (size == *len || (swap = realloc(buf, size)) == NULL) {
|
||||||
|
free(buf);
|
||||||
|
buf = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
buf = swap;
|
||||||
|
}
|
||||||
|
fclose(in);
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int ret, put = 0, fail = 0;
|
||||||
|
unsigned skip = 0;
|
||||||
|
char *arg, *name = NULL;
|
||||||
|
unsigned char *source = NULL, *dest;
|
||||||
|
size_t len = 0;
|
||||||
|
unsigned long sourcelen, destlen;
|
||||||
|
|
||||||
|
/* process arguments */
|
||||||
|
while (arg = *++argv, --argc)
|
||||||
|
if (arg[0] == '-') {
|
||||||
|
if (arg[1] == 'w' && arg[2] == 0)
|
||||||
|
put = 1;
|
||||||
|
else if (arg[1] == 'f' && arg[2] == 0)
|
||||||
|
fail = 1, put = 1;
|
||||||
|
else if (arg[1] >= '0' && arg[1] <= '9')
|
||||||
|
skip = (unsigned)atoi(arg + 1);
|
||||||
|
else {
|
||||||
|
fprintf(stderr, "invalid option %s\n", arg);
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (name != NULL) {
|
||||||
|
fprintf(stderr, "only one file name allowed\n");
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
name = arg;
|
||||||
|
source = load(name, &len);
|
||||||
|
if (source == NULL) {
|
||||||
|
fprintf(stderr, "memory allocation failure\n");
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
if (len == 0) {
|
||||||
|
fprintf(stderr, "could not read %s, or it was empty\n",
|
||||||
|
name == NULL ? "<stdin>" : name);
|
||||||
|
free(source);
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
if (skip >= len) {
|
||||||
|
fprintf(stderr, "skip request of %d leaves no input\n", skip);
|
||||||
|
free(source);
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* test inflate data with offset skip */
|
||||||
|
len -= skip;
|
||||||
|
sourcelen = (unsigned long)len;
|
||||||
|
ret = puff(NIL, &destlen, source + skip, &sourcelen);
|
||||||
|
if (ret)
|
||||||
|
fprintf(stderr, "puff() failed with return code %d\n", ret);
|
||||||
|
else {
|
||||||
|
fprintf(stderr, "puff() succeeded uncompressing %lu bytes\n", destlen);
|
||||||
|
if (sourcelen < len) fprintf(stderr, "%lu compressed bytes unused\n",
|
||||||
|
len - sourcelen);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if requested, inflate again and write decompressd data to stdout */
|
||||||
|
if (put && ret == 0) {
|
||||||
|
if (fail)
|
||||||
|
destlen >>= 1;
|
||||||
|
dest = malloc(destlen);
|
||||||
|
if (dest == NULL) {
|
||||||
|
fprintf(stderr, "memory allocation failure\n");
|
||||||
|
free(source);
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
puff(dest, &destlen, source + skip, &sourcelen);
|
||||||
|
SET_BINARY_MODE(stdout);
|
||||||
|
fwrite(dest, 1, destlen, stdout);
|
||||||
|
free(dest);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* clean up */
|
||||||
|
free(source);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -1,8 +1,8 @@
|
|||||||
Building instructions for the DLL versions of Zlib 1.2.4
|
Building instructions for the DLL versions of Zlib 1.2.7
|
||||||
========================================================
|
========================================================
|
||||||
|
|
||||||
This directory contains projects that build zlib and minizip using
|
This directory contains projects that build zlib and minizip using
|
||||||
Microsoft Visual C++ 9.0/10.0, and Visual C++ .
|
Microsoft Visual C++ 9.0/10.0.
|
||||||
|
|
||||||
You don't need to build these projects yourself. You can download the
|
You don't need to build these projects yourself. You can download the
|
||||||
binaries from:
|
binaries from:
|
||||||
@@ -10,9 +10,6 @@ binaries from:
|
|||||||
|
|
||||||
More information can be found at this site.
|
More information can be found at this site.
|
||||||
|
|
||||||
first compile assembly code by running
|
|
||||||
bld_ml64.bat in contrib\masmx64
|
|
||||||
bld_ml32.bat in contrib\masmx86
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -20,13 +17,16 @@ bld_ml32.bat in contrib\masmx86
|
|||||||
Build instructions for Visual Studio 2008 (32 bits or 64 bits)
|
Build instructions for Visual Studio 2008 (32 bits or 64 bits)
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
- Uncompress current zlib, including all contrib/* files
|
- Uncompress current zlib, including all contrib/* files
|
||||||
- Open contrib\vstudio\vc9\zlibvc.sln with Microsoft Visual C++ 2008.0
|
- Compile assembly code (with Visual Studio Command Prompt) by running:
|
||||||
|
bld_ml64.bat (in contrib\masmx64)
|
||||||
|
bld_ml32.bat (in contrib\masmx86)
|
||||||
|
- Open contrib\vstudio\vc9\zlibvc.sln with Microsoft Visual C++ 2008
|
||||||
- Or run: vcbuild /rebuild contrib\vstudio\vc9\zlibvc.sln "Release|Win32"
|
- Or run: vcbuild /rebuild contrib\vstudio\vc9\zlibvc.sln "Release|Win32"
|
||||||
|
|
||||||
Build instructions for Visual Studio 2010 (32 bits or 64 bits)
|
Build instructions for Visual Studio 2010 (32 bits or 64 bits)
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
- Uncompress current zlib, including all contrib/* files
|
- Uncompress current zlib, including all contrib/* files
|
||||||
- Open contrib\vstudio\vc10\zlibvc.sln with Microsoft Visual C++ 2010.0
|
- Open contrib\vstudio\vc10\zlibvc.sln with Microsoft Visual C++ 2010
|
||||||
|
|
||||||
|
|
||||||
Important
|
Important
|
||||||
|
|||||||
@@ -139,7 +139,7 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<OutputFile>$(OutDir)testzlib.exe</OutputFile>
|
<OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
|
<ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
@@ -169,7 +169,7 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<OutputFile>$(OutDir)testzlib.exe</OutputFile>
|
<OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
@@ -200,7 +200,7 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<OutputFile>$(OutDir)testzlib.exe</OutputFile>
|
<OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
|
<ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
@@ -227,7 +227,7 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<OutputFile>$(OutDir)testzlib.exe</OutputFile>
|
<OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
|
<ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
@@ -257,7 +257,7 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<OutputFile>$(OutDir)testzlib.exe</OutputFile>
|
<OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
@@ -288,7 +288,7 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<OutputFile>$(OutDir)testzlib.exe</OutputFile>
|
<OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
#define IDR_VERSION1 1
|
#define IDR_VERSION1 1
|
||||||
IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
|
IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
|
||||||
FILEVERSION 1,2,4,1
|
FILEVERSION 1.2.7,0
|
||||||
PRODUCTVERSION 1,2,4,1
|
PRODUCTVERSION 1.2.7,0
|
||||||
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
||||||
FILEFLAGS 0
|
FILEFLAGS 0
|
||||||
FILEOS VOS_DOS_WINDOWS32
|
FILEOS VOS_DOS_WINDOWS32
|
||||||
@@ -17,12 +17,12 @@ BEGIN
|
|||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
|
VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
|
||||||
VALUE "FileVersion", "1.2.4.1\0"
|
VALUE "FileVersion", "1.2.7\0"
|
||||||
VALUE "InternalName", "zlib\0"
|
VALUE "InternalName", "zlib\0"
|
||||||
VALUE "OriginalFilename", "zlib.dll\0"
|
VALUE "OriginalFilename", "zlib.dll\0"
|
||||||
VALUE "ProductName", "ZLib.DLL\0"
|
VALUE "ProductName", "ZLib.DLL\0"
|
||||||
VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
|
VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
|
||||||
VALUE "LegalCopyright", "(C) 1995-2010 Jean-loup Gailly & Mark Adler\0"
|
VALUE "LegalCopyright", "(C) 1995-2012 Jean-loup Gailly & Mark Adler\0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
LIBRARY
|
LIBRARY
|
||||||
; zlib data compression and ZIP file I/O library
|
; zlib data compression and ZIP file I/O library
|
||||||
|
|
||||||
VERSION 1.24
|
VERSION 1.2.7
|
||||||
|
|
||||||
EXPORTS
|
EXPORTS
|
||||||
adler32 @1
|
adler32 @1
|
||||||
@@ -55,6 +55,7 @@ EXPORTS
|
|||||||
gzungetc @49
|
gzungetc @49
|
||||||
zlibCompileFlags @50
|
zlibCompileFlags @50
|
||||||
deflatePrime @51
|
deflatePrime @51
|
||||||
|
deflatePending @52
|
||||||
|
|
||||||
unzOpen @61
|
unzOpen @61
|
||||||
unzClose @62
|
unzClose @62
|
||||||
@@ -128,3 +129,11 @@ EXPORTS
|
|||||||
inflatePrime @158
|
inflatePrime @158
|
||||||
inflateReset2 @159
|
inflateReset2 @159
|
||||||
inflateUndermine @160
|
inflateUndermine @160
|
||||||
|
|
||||||
|
; zlib1 v1.2.6 added:
|
||||||
|
gzgetc_ @161
|
||||||
|
inflateResetKeep @163
|
||||||
|
deflateResetKeep @164
|
||||||
|
|
||||||
|
; zlib1 v1.2.7 added:
|
||||||
|
gzopen_w @165
|
||||||
|
|||||||
@@ -180,6 +180,12 @@
|
|||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
||||||
|
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">zlibwapi</TargetName>
|
||||||
|
<TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">zlibwapi</TargetName>
|
||||||
|
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">zlibwapi</TargetName>
|
||||||
|
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">zlibwapi</TargetName>
|
||||||
|
<TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">zlibwapi</TargetName>
|
||||||
|
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">zlibwapi</TargetName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<Midl>
|
<Midl>
|
||||||
@@ -227,6 +233,10 @@
|
|||||||
</DataExecutionPrevention>
|
</DataExecutionPrevention>
|
||||||
<ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
|
<ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
|
||||||
</Link>
|
</Link>
|
||||||
|
<PreBuildEvent>
|
||||||
|
<Command>cd ..\..\masmx86
|
||||||
|
bld_ml32.bat</Command>
|
||||||
|
</PreBuildEvent>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
|
||||||
<Midl>
|
<Midl>
|
||||||
@@ -324,6 +334,10 @@
|
|||||||
</DataExecutionPrevention>
|
</DataExecutionPrevention>
|
||||||
<ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
|
<ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
|
||||||
</Link>
|
</Link>
|
||||||
|
<PreBuildEvent>
|
||||||
|
<Command>cd ..\..\masmx86
|
||||||
|
bld_ml32.bat</Command>
|
||||||
|
</PreBuildEvent>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<Midl>
|
<Midl>
|
||||||
@@ -368,6 +382,10 @@
|
|||||||
<ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
|
<ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
|
||||||
<TargetMachine>MachineX64</TargetMachine>
|
<TargetMachine>MachineX64</TargetMachine>
|
||||||
</Link>
|
</Link>
|
||||||
|
<PreBuildEvent>
|
||||||
|
<Command>cd ..\..\contrib\masmx64
|
||||||
|
bld_ml64.bat</Command>
|
||||||
|
</PreBuildEvent>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
|
||||||
<Midl>
|
<Midl>
|
||||||
@@ -547,6 +565,10 @@
|
|||||||
<ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
|
<ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
|
||||||
<TargetMachine>MachineX64</TargetMachine>
|
<TargetMachine>MachineX64</TargetMachine>
|
||||||
</Link>
|
</Link>
|
||||||
|
<PreBuildEvent>
|
||||||
|
<Command>cd ..\..\masmx64
|
||||||
|
bld_ml64.bat</Command>
|
||||||
|
</PreBuildEvent>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
|
||||||
<Midl>
|
<Midl>
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
#define IDR_VERSION1 1
|
#define IDR_VERSION1 1
|
||||||
IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
|
IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
|
||||||
FILEVERSION 1,2,4,1
|
FILEVERSION 1.2.7,0
|
||||||
PRODUCTVERSION 1,2,4,1
|
PRODUCTVERSION 1.2.7,0
|
||||||
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
||||||
FILEFLAGS 0
|
FILEFLAGS 0
|
||||||
FILEOS VOS_DOS_WINDOWS32
|
FILEOS VOS_DOS_WINDOWS32
|
||||||
@@ -17,12 +17,12 @@ BEGIN
|
|||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
|
VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
|
||||||
VALUE "FileVersion", "1.2.4.1\0"
|
VALUE "FileVersion", "1.2.7\0"
|
||||||
VALUE "InternalName", "zlib\0"
|
VALUE "InternalName", "zlib\0"
|
||||||
VALUE "OriginalFilename", "zlib.dll\0"
|
VALUE "OriginalFilename", "zlib.dll\0"
|
||||||
VALUE "ProductName", "ZLib.DLL\0"
|
VALUE "ProductName", "ZLib.DLL\0"
|
||||||
VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
|
VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
|
||||||
VALUE "LegalCopyright", "(C) 1995-2010 Jean-loup Gailly & Mark Adler\0"
|
VALUE "LegalCopyright", "(C) 1995-2012 Jean-loup Gailly & Mark Adler\0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
LIBRARY
|
LIBRARY
|
||||||
; zlib data compression and ZIP file I/O library
|
; zlib data compression and ZIP file I/O library
|
||||||
|
|
||||||
VERSION 1.24
|
VERSION 1.2.7
|
||||||
|
|
||||||
EXPORTS
|
EXPORTS
|
||||||
adler32 @1
|
adler32 @1
|
||||||
@@ -55,6 +55,7 @@ EXPORTS
|
|||||||
gzungetc @49
|
gzungetc @49
|
||||||
zlibCompileFlags @50
|
zlibCompileFlags @50
|
||||||
deflatePrime @51
|
deflatePrime @51
|
||||||
|
deflatePending @52
|
||||||
|
|
||||||
unzOpen @61
|
unzOpen @61
|
||||||
unzClose @62
|
unzClose @62
|
||||||
@@ -128,3 +129,11 @@ EXPORTS
|
|||||||
inflatePrime @158
|
inflatePrime @158
|
||||||
inflateReset2 @159
|
inflateReset2 @159
|
||||||
inflateUndermine @160
|
inflateUndermine @160
|
||||||
|
|
||||||
|
; zlib1 v1.2.6 added:
|
||||||
|
gzgetc_ @161
|
||||||
|
inflateResetKeep @163
|
||||||
|
deflateResetKeep @164
|
||||||
|
|
||||||
|
; zlib1 v1.2.7 added:
|
||||||
|
gzopen_w @165
|
||||||
|
|||||||
83
crc32.c
83
crc32.c
@@ -1,5 +1,5 @@
|
|||||||
/* crc32.c -- compute the CRC-32 of a data stream
|
/* crc32.c -- compute the CRC-32 of a data stream
|
||||||
* Copyright (C) 1995-2006 Mark Adler
|
* Copyright (C) 1995-2006, 2010, 2011, 2012 Mark Adler
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* 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
|
* 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
|
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
|
first call get_crc_table() to initialize the tables before allowing more than
|
||||||
one thread to use crc32().
|
one thread to use crc32().
|
||||||
|
|
||||||
|
DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef MAKECRCH
|
#ifdef MAKECRCH
|
||||||
@@ -30,31 +32,11 @@
|
|||||||
|
|
||||||
#define local static
|
#define local static
|
||||||
|
|
||||||
/* Find a four-byte integer type for crc32_little() and crc32_big(). */
|
|
||||||
#ifndef NOBYFOUR
|
|
||||||
# ifdef STDC /* need ANSI C limits.h to determine sizes */
|
|
||||||
# include <limits.h>
|
|
||||||
# define BYFOUR
|
|
||||||
# if (UINT_MAX == 0xffffffffUL)
|
|
||||||
typedef unsigned int u4;
|
|
||||||
# else
|
|
||||||
# if (ULONG_MAX == 0xffffffffUL)
|
|
||||||
typedef unsigned long u4;
|
|
||||||
# else
|
|
||||||
# if (USHRT_MAX == 0xffffffffUL)
|
|
||||||
typedef unsigned short u4;
|
|
||||||
# else
|
|
||||||
# undef BYFOUR /* can't find a four-byte integer type! */
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
# endif /* STDC */
|
|
||||||
#endif /* !NOBYFOUR */
|
|
||||||
|
|
||||||
/* Definitions for doing the crc four data bytes at a time. */
|
/* Definitions for doing the crc four data bytes at a time. */
|
||||||
|
#if !defined(NOBYFOUR) && defined(Z_U4)
|
||||||
|
# define BYFOUR
|
||||||
|
#endif
|
||||||
#ifdef BYFOUR
|
#ifdef BYFOUR
|
||||||
# define REV(w) ((((w)>>24)&0xff)+(((w)>>8)&0xff00)+ \
|
|
||||||
(((w)&0xff00)<<8)+(((w)&0xff)<<24))
|
|
||||||
local unsigned long crc32_little OF((unsigned long,
|
local unsigned long crc32_little OF((unsigned long,
|
||||||
const unsigned char FAR *, unsigned));
|
const unsigned char FAR *, unsigned));
|
||||||
local unsigned long crc32_big OF((unsigned long,
|
local unsigned long crc32_big OF((unsigned long,
|
||||||
@@ -68,16 +50,16 @@
|
|||||||
local unsigned long gf2_matrix_times OF((unsigned long *mat,
|
local unsigned long gf2_matrix_times OF((unsigned long *mat,
|
||||||
unsigned long vec));
|
unsigned long vec));
|
||||||
local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
|
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
|
#ifdef DYNAMIC_CRC_TABLE
|
||||||
|
|
||||||
local volatile int crc_table_empty = 1;
|
local volatile int crc_table_empty = 1;
|
||||||
local unsigned long FAR crc_table[TBLS][256];
|
local z_crc_t FAR crc_table[TBLS][256];
|
||||||
local void make_crc_table OF((void));
|
local void make_crc_table OF((void));
|
||||||
#ifdef MAKECRCH
|
#ifdef MAKECRCH
|
||||||
local void write_table OF((FILE *, const unsigned long FAR *));
|
local void write_table OF((FILE *, const z_crc_t FAR *));
|
||||||
#endif /* MAKECRCH */
|
#endif /* MAKECRCH */
|
||||||
/*
|
/*
|
||||||
Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
|
Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
|
||||||
@@ -107,9 +89,9 @@ local void make_crc_table OF((void));
|
|||||||
*/
|
*/
|
||||||
local void make_crc_table()
|
local void make_crc_table()
|
||||||
{
|
{
|
||||||
unsigned long c;
|
z_crc_t c;
|
||||||
int n, k;
|
int n, k;
|
||||||
unsigned long poly; /* polynomial exclusive-or pattern */
|
z_crc_t poly; /* polynomial exclusive-or pattern */
|
||||||
/* terms of polynomial defining this crc (except x^32): */
|
/* terms of polynomial defining this crc (except x^32): */
|
||||||
static volatile int first = 1; /* flag to limit concurrent making */
|
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};
|
static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
|
||||||
@@ -121,13 +103,13 @@ local void make_crc_table()
|
|||||||
first = 0;
|
first = 0;
|
||||||
|
|
||||||
/* make exclusive-or pattern from polynomial (0xedb88320UL) */
|
/* make exclusive-or pattern from polynomial (0xedb88320UL) */
|
||||||
poly = 0UL;
|
poly = 0;
|
||||||
for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++)
|
for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++)
|
||||||
poly |= 1UL << (31 - p[n]);
|
poly |= (z_crc_t)1 << (31 - p[n]);
|
||||||
|
|
||||||
/* generate a crc for every 8-bit value */
|
/* generate a crc for every 8-bit value */
|
||||||
for (n = 0; n < 256; n++) {
|
for (n = 0; n < 256; n++) {
|
||||||
c = (unsigned long)n;
|
c = (z_crc_t)n;
|
||||||
for (k = 0; k < 8; k++)
|
for (k = 0; k < 8; k++)
|
||||||
c = c & 1 ? poly ^ (c >> 1) : c >> 1;
|
c = c & 1 ? poly ^ (c >> 1) : c >> 1;
|
||||||
crc_table[0][n] = c;
|
crc_table[0][n] = c;
|
||||||
@@ -138,11 +120,11 @@ local void make_crc_table()
|
|||||||
and then the byte reversal of those as well as the first table */
|
and then the byte reversal of those as well as the first table */
|
||||||
for (n = 0; n < 256; n++) {
|
for (n = 0; n < 256; n++) {
|
||||||
c = crc_table[0][n];
|
c = crc_table[0][n];
|
||||||
crc_table[4][n] = REV(c);
|
crc_table[4][n] = ZSWAP32(c);
|
||||||
for (k = 1; k < 4; k++) {
|
for (k = 1; k < 4; k++) {
|
||||||
c = crc_table[0][c & 0xff] ^ (c >> 8);
|
c = crc_table[0][c & 0xff] ^ (c >> 8);
|
||||||
crc_table[k][n] = c;
|
crc_table[k][n] = c;
|
||||||
crc_table[k + 4][n] = REV(c);
|
crc_table[k + 4][n] = ZSWAP32(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* BYFOUR */
|
#endif /* BYFOUR */
|
||||||
@@ -164,7 +146,7 @@ local void make_crc_table()
|
|||||||
if (out == NULL) return;
|
if (out == NULL) return;
|
||||||
fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
|
fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
|
||||||
fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
|
fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
|
||||||
fprintf(out, "local const unsigned long FAR ");
|
fprintf(out, "local const z_crc_t FAR ");
|
||||||
fprintf(out, "crc_table[TBLS][256] =\n{\n {\n");
|
fprintf(out, "crc_table[TBLS][256] =\n{\n {\n");
|
||||||
write_table(out, crc_table[0]);
|
write_table(out, crc_table[0]);
|
||||||
# ifdef BYFOUR
|
# ifdef BYFOUR
|
||||||
@@ -184,12 +166,13 @@ local void make_crc_table()
|
|||||||
#ifdef MAKECRCH
|
#ifdef MAKECRCH
|
||||||
local void write_table(out, table)
|
local void write_table(out, table)
|
||||||
FILE *out;
|
FILE *out;
|
||||||
const unsigned long FAR *table;
|
const z_crc_t FAR *table;
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
for (n = 0; n < 256; 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" : ", "));
|
n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
|
||||||
}
|
}
|
||||||
#endif /* MAKECRCH */
|
#endif /* MAKECRCH */
|
||||||
@@ -204,13 +187,13 @@ local void write_table(out, table)
|
|||||||
/* =========================================================================
|
/* =========================================================================
|
||||||
* This function can be used by asm versions of crc32()
|
* This function can be used by asm versions of crc32()
|
||||||
*/
|
*/
|
||||||
const unsigned long FAR * ZEXPORT get_crc_table()
|
const z_crc_t FAR * ZEXPORT get_crc_table()
|
||||||
{
|
{
|
||||||
#ifdef DYNAMIC_CRC_TABLE
|
#ifdef DYNAMIC_CRC_TABLE
|
||||||
if (crc_table_empty)
|
if (crc_table_empty)
|
||||||
make_crc_table();
|
make_crc_table();
|
||||||
#endif /* DYNAMIC_CRC_TABLE */
|
#endif /* DYNAMIC_CRC_TABLE */
|
||||||
return (const unsigned long FAR *)crc_table;
|
return (const z_crc_t FAR *)crc_table;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
@@ -232,7 +215,7 @@ unsigned long ZEXPORT crc32(crc, buf, len)
|
|||||||
|
|
||||||
#ifdef BYFOUR
|
#ifdef BYFOUR
|
||||||
if (sizeof(void *) == sizeof(ptrdiff_t)) {
|
if (sizeof(void *) == sizeof(ptrdiff_t)) {
|
||||||
u4 endian;
|
z_crc_t endian;
|
||||||
|
|
||||||
endian = 1;
|
endian = 1;
|
||||||
if (*((unsigned char *)(&endian)))
|
if (*((unsigned char *)(&endian)))
|
||||||
@@ -266,17 +249,17 @@ local unsigned long crc32_little(crc, buf, len)
|
|||||||
const unsigned char FAR *buf;
|
const unsigned char FAR *buf;
|
||||||
unsigned len;
|
unsigned len;
|
||||||
{
|
{
|
||||||
register u4 c;
|
register z_crc_t c;
|
||||||
register const u4 FAR *buf4;
|
register const z_crc_t FAR *buf4;
|
||||||
|
|
||||||
c = (u4)crc;
|
c = (z_crc_t)crc;
|
||||||
c = ~c;
|
c = ~c;
|
||||||
while (len && ((ptrdiff_t)buf & 3)) {
|
while (len && ((ptrdiff_t)buf & 3)) {
|
||||||
c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
|
c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
|
||||||
len--;
|
len--;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf4 = (const u4 FAR *)(const void FAR *)buf;
|
buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
|
||||||
while (len >= 32) {
|
while (len >= 32) {
|
||||||
DOLIT32;
|
DOLIT32;
|
||||||
len -= 32;
|
len -= 32;
|
||||||
@@ -306,17 +289,17 @@ local unsigned long crc32_big(crc, buf, len)
|
|||||||
const unsigned char FAR *buf;
|
const unsigned char FAR *buf;
|
||||||
unsigned len;
|
unsigned len;
|
||||||
{
|
{
|
||||||
register u4 c;
|
register z_crc_t c;
|
||||||
register const u4 FAR *buf4;
|
register const z_crc_t FAR *buf4;
|
||||||
|
|
||||||
c = REV((u4)crc);
|
c = ZSWAP32((z_crc_t)crc);
|
||||||
c = ~c;
|
c = ~c;
|
||||||
while (len && ((ptrdiff_t)buf & 3)) {
|
while (len && ((ptrdiff_t)buf & 3)) {
|
||||||
c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
|
c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
|
||||||
len--;
|
len--;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf4 = (const u4 FAR *)(const void FAR *)buf;
|
buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
|
||||||
buf4--;
|
buf4--;
|
||||||
while (len >= 32) {
|
while (len >= 32) {
|
||||||
DOBIG32;
|
DOBIG32;
|
||||||
@@ -333,7 +316,7 @@ local unsigned long crc32_big(crc, buf, len)
|
|||||||
c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
|
c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
|
||||||
} while (--len);
|
} while (--len);
|
||||||
c = ~c;
|
c = ~c;
|
||||||
return (unsigned long)(REV(c));
|
return (unsigned long)(ZSWAP32(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* BYFOUR */
|
#endif /* BYFOUR */
|
||||||
|
|||||||
2
crc32.h
2
crc32.h
@@ -2,7 +2,7 @@
|
|||||||
* Generated automatically by crc32.c
|
* Generated automatically by crc32.c
|
||||||
*/
|
*/
|
||||||
|
|
||||||
local const unsigned long FAR crc_table[TBLS][256] =
|
local const z_crc_t FAR crc_table[TBLS][256] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
|
0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
|
||||||
|
|||||||
257
deflate.c
257
deflate.c
@@ -1,5 +1,5 @@
|
|||||||
/* deflate.c -- compress data using the deflation algorithm
|
/* deflate.c -- compress data using the deflation algorithm
|
||||||
* Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
|
* Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
* REFERENCES
|
* REFERENCES
|
||||||
*
|
*
|
||||||
* Deutsch, L.P.,"DEFLATE Compressed Data Format Specification".
|
* 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
|
* A description of the Rabin and Karp algorithm is given in the book
|
||||||
* "Algorithms" by R. Sedgewick, Addison-Wesley, p252.
|
* "Algorithms" by R. Sedgewick, Addison-Wesley, p252.
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
#include "deflate.h"
|
#include "deflate.h"
|
||||||
|
|
||||||
const char deflate_copyright[] =
|
const char deflate_copyright[] =
|
||||||
" deflate 1.2.4.1 Copyright 1995-2010 Jean-loup Gailly and Mark Adler ";
|
" deflate 1.2.7 Copyright 1995-2012 Jean-loup Gailly and Mark Adler ";
|
||||||
/*
|
/*
|
||||||
If you use the zlib library in a product, an acknowledgment is welcome
|
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
|
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 */
|
struct static_tree_desc_s {int dummy;}; /* for buggy compilers */
|
||||||
#endif
|
#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
|
* Update a hash value with the given input byte
|
||||||
* IN assertion: all calls to to UPDATE_HASH are made with consecutive
|
* 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;
|
strm->msg = Z_NULL;
|
||||||
if (strm->zalloc == (alloc_func)0) {
|
if (strm->zalloc == (alloc_func)0) {
|
||||||
|
#ifdef Z_SOLO
|
||||||
|
return Z_STREAM_ERROR;
|
||||||
|
#else
|
||||||
strm->zalloc = zcalloc;
|
strm->zalloc = zcalloc;
|
||||||
strm->opaque = (voidpf)0;
|
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
|
#ifdef FASTEST
|
||||||
if (level != 0) level = 1;
|
if (level != 0) level = 1;
|
||||||
@@ -314,43 +326,70 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
|
|||||||
uInt dictLength;
|
uInt dictLength;
|
||||||
{
|
{
|
||||||
deflate_state *s;
|
deflate_state *s;
|
||||||
uInt length = dictLength;
|
uInt str, n;
|
||||||
uInt n;
|
int wrap;
|
||||||
IPos hash_head = 0;
|
unsigned avail;
|
||||||
|
unsigned char *next;
|
||||||
|
|
||||||
if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL ||
|
if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL)
|
||||||
strm->state->wrap == 2 ||
|
return Z_STREAM_ERROR;
|
||||||
(strm->state->wrap == 1 && strm->state->status != INIT_STATE))
|
s = strm->state;
|
||||||
|
wrap = s->wrap;
|
||||||
|
if (wrap == 2 || (wrap == 1 && s->status != INIT_STATE) || s->lookahead)
|
||||||
return Z_STREAM_ERROR;
|
return Z_STREAM_ERROR;
|
||||||
|
|
||||||
s = strm->state;
|
/* when using zlib wrappers, compute Adler-32 for provided dictionary */
|
||||||
if (s->wrap)
|
if (wrap == 1)
|
||||||
strm->adler = adler32(strm->adler, dictionary, dictLength);
|
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 dictionary would fill window, just replace the history */
|
||||||
if (length > s->w_size) {
|
if (dictLength >= s->w_size) {
|
||||||
length = s->w_size;
|
if (wrap == 0) { /* already empty otherwise */
|
||||||
dictionary += dictLength - length; /* use the tail of the dictionary */
|
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).
|
/* insert dictionary into window and hash */
|
||||||
* s->lookahead stays null, so s->ins_h will be recomputed at the next
|
avail = strm->avail_in;
|
||||||
* call of fill_window.
|
next = strm->next_in;
|
||||||
*/
|
strm->avail_in = dictLength;
|
||||||
s->ins_h = s->window[0];
|
strm->next_in = (Bytef *)dictionary;
|
||||||
UPDATE_HASH(s, s->ins_h, s->window[1]);
|
fill_window(s);
|
||||||
for (n = 0; n <= length - MIN_MATCH; n++) {
|
while (s->lookahead >= MIN_MATCH) {
|
||||||
INSERT_STRING(s, n, hash_head);
|
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;
|
return Z_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
int ZEXPORT deflateReset (strm)
|
int ZEXPORT deflateResetKeep (strm)
|
||||||
z_streamp strm;
|
z_streamp strm;
|
||||||
{
|
{
|
||||||
deflate_state *s;
|
deflate_state *s;
|
||||||
@@ -380,11 +419,22 @@ int ZEXPORT deflateReset (strm)
|
|||||||
s->last_flush = Z_NO_FLUSH;
|
s->last_flush = Z_NO_FLUSH;
|
||||||
|
|
||||||
_tr_init(s);
|
_tr_init(s);
|
||||||
lm_init(s);
|
|
||||||
|
|
||||||
return Z_OK;
|
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)
|
int ZEXPORT deflateSetHeader (strm, head)
|
||||||
z_streamp strm;
|
z_streamp strm;
|
||||||
@@ -396,15 +446,43 @@ int ZEXPORT deflateSetHeader (strm, head)
|
|||||||
return Z_OK;
|
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)
|
int ZEXPORT deflatePrime (strm, bits, value)
|
||||||
z_streamp strm;
|
z_streamp strm;
|
||||||
int bits;
|
int bits;
|
||||||
int value;
|
int value;
|
||||||
{
|
{
|
||||||
|
deflate_state *s;
|
||||||
|
int put;
|
||||||
|
|
||||||
if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
|
if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
|
||||||
strm->state->bi_valid = bits;
|
s = strm->state;
|
||||||
strm->state->bi_buf = (ush)(value & ((1 << bits) - 1));
|
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;
|
return Z_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -562,19 +640,22 @@ local void putShortMSB (s, b)
|
|||||||
local void flush_pending(strm)
|
local void flush_pending(strm)
|
||||||
z_streamp 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 > strm->avail_out) len = strm->avail_out;
|
||||||
if (len == 0) return;
|
if (len == 0) return;
|
||||||
|
|
||||||
zmemcpy(strm->next_out, strm->state->pending_out, len);
|
zmemcpy(strm->next_out, s->pending_out, len);
|
||||||
strm->next_out += len;
|
strm->next_out += len;
|
||||||
strm->state->pending_out += len;
|
s->pending_out += len;
|
||||||
strm->total_out += len;
|
strm->total_out += len;
|
||||||
strm->avail_out -= len;
|
strm->avail_out -= len;
|
||||||
strm->state->pending -= len;
|
s->pending -= len;
|
||||||
if (strm->state->pending == 0) {
|
if (s->pending == 0) {
|
||||||
strm->state->pending_out = strm->state->pending_buf;
|
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
|
* flushes. For repeated and useless calls with Z_FINISH, we keep
|
||||||
* returning Z_STREAM_END instead of Z_BUF_ERROR.
|
* 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) {
|
flush != Z_FINISH) {
|
||||||
ERR_RETURN(strm, Z_BUF_ERROR);
|
ERR_RETURN(strm, Z_BUF_ERROR);
|
||||||
}
|
}
|
||||||
@@ -850,6 +931,7 @@ int ZEXPORT deflate (strm, flush)
|
|||||||
if (s->lookahead == 0) {
|
if (s->lookahead == 0) {
|
||||||
s->strstart = 0;
|
s->strstart = 0;
|
||||||
s->block_start = 0L;
|
s->block_start = 0L;
|
||||||
|
s->insert = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -945,12 +1027,12 @@ int ZEXPORT deflateCopy (dest, source)
|
|||||||
|
|
||||||
ss = source->state;
|
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));
|
ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state));
|
||||||
if (ds == Z_NULL) return Z_MEM_ERROR;
|
if (ds == Z_NULL) return Z_MEM_ERROR;
|
||||||
dest->state = (struct internal_state FAR *) ds;
|
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->strm = dest;
|
||||||
|
|
||||||
ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
|
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 */
|
/* following zmemcpy do not work for 16-bit MSDOS */
|
||||||
zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte));
|
zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte));
|
||||||
zmemcpy(ds->prev, ss->prev, ds->w_size * sizeof(Pos));
|
zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos));
|
||||||
zmemcpy(ds->head, ss->head, ds->hash_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);
|
zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
|
||||||
|
|
||||||
ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
|
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;
|
strm->avail_in -= len;
|
||||||
|
|
||||||
|
zmemcpy(buf, strm->next_in, len);
|
||||||
if (strm->state->wrap == 1) {
|
if (strm->state->wrap == 1) {
|
||||||
strm->adler = adler32(strm->adler, strm->next_in, len);
|
strm->adler = adler32(strm->adler, buf, len);
|
||||||
}
|
}
|
||||||
#ifdef GZIP
|
#ifdef GZIP
|
||||||
else if (strm->state->wrap == 2) {
|
else if (strm->state->wrap == 2) {
|
||||||
strm->adler = crc32(strm->adler, strm->next_in, len);
|
strm->adler = crc32(strm->adler, buf, len);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
zmemcpy(buf, strm->next_in, len);
|
|
||||||
strm->next_in += len;
|
strm->next_in += len;
|
||||||
strm->total_in += len;
|
strm->total_in += len;
|
||||||
|
|
||||||
@@ -1036,6 +1118,7 @@ local void lm_init (s)
|
|||||||
s->strstart = 0;
|
s->strstart = 0;
|
||||||
s->block_start = 0L;
|
s->block_start = 0L;
|
||||||
s->lookahead = 0;
|
s->lookahead = 0;
|
||||||
|
s->insert = 0;
|
||||||
s->match_length = s->prev_length = MIN_MATCH-1;
|
s->match_length = s->prev_length = MIN_MATCH-1;
|
||||||
s->match_available = 0;
|
s->match_available = 0;
|
||||||
s->ins_h = 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. */
|
unsigned more; /* Amount of free space at the end of the window. */
|
||||||
uInt wsize = s->w_size;
|
uInt wsize = s->w_size;
|
||||||
|
|
||||||
|
Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
|
||||||
|
|
||||||
do {
|
do {
|
||||||
more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
|
more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
|
||||||
|
|
||||||
@@ -1362,7 +1447,7 @@ local void fill_window(s)
|
|||||||
#endif
|
#endif
|
||||||
more += wsize;
|
more += wsize;
|
||||||
}
|
}
|
||||||
if (s->strm->avail_in == 0) return;
|
if (s->strm->avail_in == 0) break;
|
||||||
|
|
||||||
/* If there was no sliding:
|
/* If there was no sliding:
|
||||||
* strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
|
* strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
|
||||||
@@ -1381,12 +1466,24 @@ local void fill_window(s)
|
|||||||
s->lookahead += n;
|
s->lookahead += n;
|
||||||
|
|
||||||
/* Initialize the hash value now that we have some input: */
|
/* Initialize the hash value now that we have some input: */
|
||||||
if (s->lookahead >= MIN_MATCH) {
|
if (s->lookahead + s->insert >= MIN_MATCH) {
|
||||||
s->ins_h = s->window[s->strstart];
|
uInt str = s->strstart - s->insert;
|
||||||
UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
|
s->ins_h = s->window[str];
|
||||||
|
UPDATE_HASH(s, s->ins_h, s->window[str + 1]);
|
||||||
#if MIN_MATCH != 3
|
#if MIN_MATCH != 3
|
||||||
Call UPDATE_HASH() MIN_MATCH-3 more times
|
Call UPDATE_HASH() MIN_MATCH-3 more times
|
||||||
#endif
|
#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,
|
/* 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.
|
* 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;
|
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, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FLUSH_BLOCK(s, flush == Z_FINISH);
|
s->insert = 0;
|
||||||
return flush == Z_FINISH ? finish_done : block_done;
|
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);
|
if (bflush) FLUSH_BLOCK(s, 0);
|
||||||
}
|
}
|
||||||
FLUSH_BLOCK(s, flush == Z_FINISH);
|
s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1;
|
||||||
return flush == Z_FINISH ? finish_done : block_done;
|
if (flush == Z_FINISH) {
|
||||||
|
FLUSH_BLOCK(s, 1);
|
||||||
|
return finish_done;
|
||||||
|
}
|
||||||
|
if (s->last_lit)
|
||||||
|
FLUSH_BLOCK(s, 0);
|
||||||
|
return block_done;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef FASTEST
|
#ifndef FASTEST
|
||||||
@@ -1728,8 +1840,14 @@ local block_state deflate_slow(s, flush)
|
|||||||
_tr_tally_lit(s, s->window[s->strstart-1], bflush);
|
_tr_tally_lit(s, s->window[s->strstart-1], bflush);
|
||||||
s->match_available = 0;
|
s->match_available = 0;
|
||||||
}
|
}
|
||||||
FLUSH_BLOCK(s, flush == Z_FINISH);
|
s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1;
|
||||||
return flush == Z_FINISH ? finish_done : block_done;
|
if (flush == Z_FINISH) {
|
||||||
|
FLUSH_BLOCK(s, 1);
|
||||||
|
return finish_done;
|
||||||
|
}
|
||||||
|
if (s->last_lit)
|
||||||
|
FLUSH_BLOCK(s, 0);
|
||||||
|
return block_done;
|
||||||
}
|
}
|
||||||
#endif /* FASTEST */
|
#endif /* FASTEST */
|
||||||
|
|
||||||
@@ -1749,11 +1867,11 @@ local block_state deflate_rle(s, flush)
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
/* Make sure that we always have enough lookahead, except
|
/* Make sure that we always have enough lookahead, except
|
||||||
* at the end of the input file. We need MAX_MATCH bytes
|
* 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);
|
fill_window(s);
|
||||||
if (s->lookahead < MAX_MATCH && flush == Z_NO_FLUSH) {
|
if (s->lookahead <= MAX_MATCH && flush == Z_NO_FLUSH) {
|
||||||
return need_more;
|
return need_more;
|
||||||
}
|
}
|
||||||
if (s->lookahead == 0) break; /* flush the current block */
|
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)
|
if (s->match_length > s->lookahead)
|
||||||
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 */
|
/* 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);
|
if (bflush) FLUSH_BLOCK(s, 0);
|
||||||
}
|
}
|
||||||
FLUSH_BLOCK(s, flush == Z_FINISH);
|
s->insert = 0;
|
||||||
return flush == Z_FINISH ? finish_done : block_done;
|
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++;
|
s->strstart++;
|
||||||
if (bflush) FLUSH_BLOCK(s, 0);
|
if (bflush) FLUSH_BLOCK(s, 0);
|
||||||
}
|
}
|
||||||
FLUSH_BLOCK(s, flush == Z_FINISH);
|
s->insert = 0;
|
||||||
return flush == Z_FINISH ? finish_done : block_done;
|
if (flush == Z_FINISH) {
|
||||||
|
FLUSH_BLOCK(s, 1);
|
||||||
|
return finish_done;
|
||||||
|
}
|
||||||
|
if (s->last_lit)
|
||||||
|
FLUSH_BLOCK(s, 0);
|
||||||
|
return block_done;
|
||||||
}
|
}
|
||||||
|
|||||||
32
deflate.h
32
deflate.h
@@ -1,5 +1,5 @@
|
|||||||
/* deflate.h -- internal compression state
|
/* deflate.h -- internal compression state
|
||||||
* Copyright (C) 1995-2009 Jean-loup Gailly
|
* Copyright (C) 1995-2012 Jean-loup Gailly
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -48,6 +48,9 @@
|
|||||||
#define MAX_BITS 15
|
#define MAX_BITS 15
|
||||||
/* All codes must not exceed MAX_BITS bits */
|
/* All codes must not exceed MAX_BITS bits */
|
||||||
|
|
||||||
|
#define Buf_size 16
|
||||||
|
/* size of bit buffer in bi_buf */
|
||||||
|
|
||||||
#define INIT_STATE 42
|
#define INIT_STATE 42
|
||||||
#define EXTRA_STATE 69
|
#define EXTRA_STATE 69
|
||||||
#define NAME_STATE 73
|
#define NAME_STATE 73
|
||||||
@@ -188,7 +191,7 @@ typedef struct internal_state {
|
|||||||
int nice_match; /* Stop searching when current match exceeds this */
|
int nice_match; /* Stop searching when current match exceeds this */
|
||||||
|
|
||||||
/* used by trees.c: */
|
/* used by trees.c: */
|
||||||
/* Didn't use ct_data typedef below to supress compiler warning */
|
/* Didn't use ct_data typedef below to suppress compiler warning */
|
||||||
struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */
|
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 dyn_dtree[2*D_CODES+1]; /* distance tree */
|
||||||
struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */
|
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 opt_len; /* bit length of current block with optimal trees */
|
||||||
ulg static_len; /* bit length of current block with static trees */
|
ulg static_len; /* bit length of current block with static trees */
|
||||||
uInt matches; /* number of string matches in current block */
|
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
|
#ifdef DEBUG
|
||||||
ulg compressed_len; /* total bit length of compressed file mod 2^32 */
|
ulg compressed_len; /* total bit length of compressed file mod 2^32 */
|
||||||
@@ -290,13 +293,14 @@ typedef struct internal_state {
|
|||||||
memory checker errors from longest match routines */
|
memory checker errors from longest match routines */
|
||||||
|
|
||||||
/* in trees.c */
|
/* in trees.c */
|
||||||
void _tr_init OF((deflate_state *s));
|
void ZLIB_INTERNAL _tr_init OF((deflate_state *s));
|
||||||
int _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
|
int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
|
||||||
void _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len,
|
void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, charf *buf,
|
||||||
int last));
|
ulg stored_len, int last));
|
||||||
void _tr_align OF((deflate_state *s));
|
void ZLIB_INTERNAL _tr_flush_bits OF((deflate_state *s));
|
||||||
void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
|
void ZLIB_INTERNAL _tr_align OF((deflate_state *s));
|
||||||
int last));
|
void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
|
||||||
|
ulg stored_len, int last));
|
||||||
|
|
||||||
#define d_code(dist) \
|
#define d_code(dist) \
|
||||||
((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)])
|
((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)])
|
||||||
@@ -309,11 +313,11 @@ void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
|
|||||||
/* Inline versions of _tr_tally for speed: */
|
/* Inline versions of _tr_tally for speed: */
|
||||||
|
|
||||||
#if defined(GEN_TREES_H) || !defined(STDC)
|
#if defined(GEN_TREES_H) || !defined(STDC)
|
||||||
extern uch _length_code[];
|
extern uch ZLIB_INTERNAL _length_code[];
|
||||||
extern uch _dist_code[];
|
extern uch ZLIB_INTERNAL _dist_code[];
|
||||||
#else
|
#else
|
||||||
extern const uch _length_code[];
|
extern const uch ZLIB_INTERNAL _length_code[];
|
||||||
extern const uch _dist_code[];
|
extern const uch ZLIB_INTERNAL _dist_code[];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# define _tr_tally_lit(s, c, flush) \
|
# define _tr_tally_lit(s, c, flush) \
|
||||||
|
|||||||
@@ -206,4 +206,4 @@ Compression,'' IEEE Transactions on Information Theory, Vol. 23, No. 3,
|
|||||||
pp. 337-343.
|
pp. 337-343.
|
||||||
|
|
||||||
``DEFLATE Compressed Data Format Specification'' available in
|
``DEFLATE Compressed Data Format Specification'' available in
|
||||||
http://www.ietf.org/rfc/rfc1951.txt
|
http://tools.ietf.org/html/rfc1951
|
||||||
|
|||||||
107
gzguts.h
107
gzguts.h
@@ -1,9 +1,9 @@
|
|||||||
/* gzguts.h -- zlib internal header definitions for gz* operations
|
/* 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
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if _LARGEFILE64_SOURCE == 1
|
#ifdef _LARGEFILE64_SOURCE
|
||||||
# ifndef _LARGEFILE_SOURCE
|
# ifndef _LARGEFILE_SOURCE
|
||||||
# define _LARGEFILE_SOURCE 1
|
# define _LARGEFILE_SOURCE 1
|
||||||
# endif
|
# endif
|
||||||
@@ -12,7 +12,11 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ZLIB_INTERNAL
|
#ifdef HAVE_HIDDEN
|
||||||
|
# define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
|
||||||
|
#else
|
||||||
|
# define ZLIB_INTERNAL
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "zlib.h"
|
#include "zlib.h"
|
||||||
@@ -23,13 +27,65 @@
|
|||||||
#endif
|
#endif
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
# include <stddef.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32)
|
||||||
|
# include <io.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef NO_DEFLATE /* for compatibility with old definition */
|
#ifdef NO_DEFLATE /* for compatibility with old definition */
|
||||||
# define NO_GZCOMPRESS
|
# define NO_GZCOMPRESS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
|
||||||
# include <io.h>
|
# ifndef HAVE_VSNPRINTF
|
||||||
# define vsnprintf _vsnprintf
|
# define HAVE_VSNPRINTF
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#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 )
|
||||||
|
# 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
|
#endif
|
||||||
|
|
||||||
#ifndef local
|
#ifndef local
|
||||||
@@ -48,7 +104,7 @@
|
|||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
# define zstrerror() gz_strwinerror((DWORD)GetLastError())
|
# define zstrerror() gz_strwinerror((DWORD)GetLastError())
|
||||||
#else
|
#else
|
||||||
# ifdef STDC
|
# ifndef NO_STRERROR
|
||||||
# include <errno.h>
|
# include <errno.h>
|
||||||
# define zstrerror() strerror(errno)
|
# define zstrerror() strerror(errno)
|
||||||
# else
|
# else
|
||||||
@@ -56,10 +112,19 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if _LARGEFILE64_SOURCE == 1
|
/* provide prototypes for these when building zlib without LFS */
|
||||||
# define z_off64_t off64_t
|
#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0
|
||||||
|
ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
|
||||||
|
ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
|
||||||
|
ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
|
||||||
|
ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* default memLevel */
|
||||||
|
#if MAX_MEM_LEVEL >= 8
|
||||||
|
# define DEF_MEM_LEVEL 8
|
||||||
#else
|
#else
|
||||||
# define z_off64_t z_off_t
|
# define DEF_MEM_LEVEL MAX_MEM_LEVEL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* default i/o buffer size -- double this for output when reading */
|
/* default i/o buffer size -- double this for output when reading */
|
||||||
@@ -78,23 +143,25 @@
|
|||||||
|
|
||||||
/* internal gzip file state data structure */
|
/* internal gzip file state data structure */
|
||||||
typedef struct {
|
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 */
|
/* used for both reading and writing */
|
||||||
int mode; /* see gzip modes above */
|
int mode; /* see gzip modes above */
|
||||||
int fd; /* file descriptor */
|
int fd; /* file descriptor */
|
||||||
char *path; /* path or fd for error messages */
|
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 size; /* buffer size, zero if not allocated yet */
|
||||||
unsigned want; /* requested buffer size, default is GZBUFSIZE */
|
unsigned want; /* requested buffer size, default is GZBUFSIZE */
|
||||||
unsigned char *in; /* input buffer */
|
unsigned char *in; /* input buffer */
|
||||||
unsigned char *out; /* output buffer (double-sized when reading) */
|
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 */
|
/* 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 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 */
|
/* just for writing */
|
||||||
int level; /* compression level */
|
int level; /* compression level */
|
||||||
int strategy; /* compression strategy */
|
int strategy; /* compression strategy */
|
||||||
@@ -110,9 +177,9 @@ typedef struct {
|
|||||||
typedef gz_state FAR *gz_statep;
|
typedef gz_state FAR *gz_statep;
|
||||||
|
|
||||||
/* shared functions */
|
/* shared functions */
|
||||||
ZEXTERN void ZEXPORT gz_error OF((gz_statep, int, const char *));
|
void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *));
|
||||||
#if defined UNDER_CE
|
#if defined UNDER_CE
|
||||||
ZEXTERN char ZEXPORT *gz_strwinerror OF((DWORD error));
|
char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
|
/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
|
||||||
@@ -121,6 +188,6 @@ ZEXTERN char ZEXPORT *gz_strwinerror OF((DWORD error));
|
|||||||
#ifdef INT_MAX
|
#ifdef INT_MAX
|
||||||
# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX)
|
# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX)
|
||||||
#else
|
#else
|
||||||
ZEXTERN unsigned ZEXPORT gz_intmax OF((void));
|
unsigned ZLIB_INTERNAL gz_intmax OF((void));
|
||||||
# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
|
# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
173
gzlib.c
173
gzlib.c
@@ -1,19 +1,23 @@
|
|||||||
/* gzlib.c -- zlib functions common to reading and writing gzip files
|
/* gzlib.c -- zlib functions common to reading and writing gzip files
|
||||||
* Copyright (C) 2004, 2010 Mark Adler
|
* Copyright (C) 2004, 2010, 2011, 2012 Mark Adler
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "gzguts.h"
|
#include "gzguts.h"
|
||||||
|
|
||||||
#if _LARGEFILE64_SOURCE == 1 && _LFS64_LARGEFILE == 1
|
#if defined(_WIN32) && !defined(__BORLANDC__)
|
||||||
|
# define LSEEK _lseeki64
|
||||||
|
#else
|
||||||
|
#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
|
||||||
# define LSEEK lseek64
|
# define LSEEK lseek64
|
||||||
#else
|
#else
|
||||||
# define LSEEK lseek
|
# define LSEEK lseek
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Local functions */
|
/* Local functions */
|
||||||
local void gz_reset OF((gz_statep));
|
local void gz_reset OF((gz_statep));
|
||||||
local gzFile gz_open OF((const char *, int, const char *));
|
local gzFile gz_open OF((const void *, int, const char *));
|
||||||
|
|
||||||
#if defined UNDER_CE
|
#if defined UNDER_CE
|
||||||
|
|
||||||
@@ -26,7 +30,7 @@ local gzFile gz_open OF((const char *, int, const char *));
|
|||||||
|
|
||||||
The gz_strwinerror function does not change the current setting of
|
The gz_strwinerror function does not change the current setting of
|
||||||
GetLastError. */
|
GetLastError. */
|
||||||
char ZEXPORT *gz_strwinerror (error)
|
char ZLIB_INTERNAL *gz_strwinerror (error)
|
||||||
DWORD error;
|
DWORD error;
|
||||||
{
|
{
|
||||||
static char buf[1024];
|
static char buf[1024];
|
||||||
@@ -71,25 +75,37 @@ char ZEXPORT *gz_strwinerror (error)
|
|||||||
local void gz_reset(state)
|
local void gz_reset(state)
|
||||||
gz_statep state;
|
gz_statep state;
|
||||||
{
|
{
|
||||||
|
state->x.have = 0; /* no output data available */
|
||||||
if (state->mode == GZ_READ) { /* for reading ... */
|
if (state->mode == GZ_READ) { /* for reading ... */
|
||||||
state->have = 0; /* no output data available */
|
|
||||||
state->eof = 0; /* not at end of file */
|
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->how = LOOK; /* look for gzip header */
|
||||||
state->direct = 1; /* default for empty file */
|
|
||||||
}
|
}
|
||||||
state->seek = 0; /* no seek request pending */
|
state->seek = 0; /* no seek request pending */
|
||||||
gz_error(state, Z_OK, NULL); /* clear error */
|
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 */
|
state->strm.avail_in = 0; /* no input data yet */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Open a gzip file either by name or file descriptor. */
|
/* Open a gzip file either by name or file descriptor. */
|
||||||
local gzFile gz_open(path, fd, mode)
|
local gzFile gz_open(path, fd, mode)
|
||||||
const char *path;
|
const void *path;
|
||||||
int fd;
|
int fd;
|
||||||
const char *mode;
|
const char *mode;
|
||||||
{
|
{
|
||||||
gz_statep state;
|
gz_statep state;
|
||||||
|
size_t len;
|
||||||
|
int oflag;
|
||||||
|
#ifdef O_CLOEXEC
|
||||||
|
int cloexec = 0;
|
||||||
|
#endif
|
||||||
|
#ifdef O_EXCL
|
||||||
|
int exclusive = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* check input */
|
||||||
|
if (path == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
/* allocate gzFile structure to return */
|
/* allocate gzFile structure to return */
|
||||||
state = malloc(sizeof(gz_state));
|
state = malloc(sizeof(gz_state));
|
||||||
@@ -103,6 +119,7 @@ local gzFile gz_open(path, fd, mode)
|
|||||||
state->mode = GZ_NONE;
|
state->mode = GZ_NONE;
|
||||||
state->level = Z_DEFAULT_COMPRESSION;
|
state->level = Z_DEFAULT_COMPRESSION;
|
||||||
state->strategy = Z_DEFAULT_STRATEGY;
|
state->strategy = Z_DEFAULT_STRATEGY;
|
||||||
|
state->direct = 0;
|
||||||
while (*mode) {
|
while (*mode) {
|
||||||
if (*mode >= '0' && *mode <= '9')
|
if (*mode >= '0' && *mode <= '9')
|
||||||
state->level = *mode - '0';
|
state->level = *mode - '0';
|
||||||
@@ -124,6 +141,16 @@ local gzFile gz_open(path, fd, mode)
|
|||||||
return NULL;
|
return NULL;
|
||||||
case 'b': /* ignore -- will request binary anyway */
|
case 'b': /* ignore -- will request binary anyway */
|
||||||
break;
|
break;
|
||||||
|
#ifdef O_CLOEXEC
|
||||||
|
case 'e':
|
||||||
|
cloexec = 1;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef O_EXCL
|
||||||
|
case 'x':
|
||||||
|
exclusive = 1;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case 'f':
|
case 'f':
|
||||||
state->strategy = Z_FILTERED;
|
state->strategy = Z_FILTERED;
|
||||||
break;
|
break;
|
||||||
@@ -135,6 +162,8 @@ local gzFile gz_open(path, fd, mode)
|
|||||||
break;
|
break;
|
||||||
case 'F':
|
case 'F':
|
||||||
state->strategy = Z_FIXED;
|
state->strategy = Z_FIXED;
|
||||||
|
case 'T':
|
||||||
|
state->direct = 1;
|
||||||
default: /* could consider as an error, but just ignore */
|
default: /* could consider as an error, but just ignore */
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
@@ -147,31 +176,69 @@ local gzFile gz_open(path, fd, mode)
|
|||||||
return NULL;
|
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 */
|
/* save the path name for error messages */
|
||||||
state->path = malloc(strlen(path) + 1);
|
#ifdef _WIN32
|
||||||
|
if (fd == -2) {
|
||||||
|
len = wcstombs(NULL, path, 0);
|
||||||
|
if (len == (size_t)-1)
|
||||||
|
len = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
len = strlen(path);
|
||||||
|
state->path = malloc(len + 1);
|
||||||
if (state->path == NULL) {
|
if (state->path == NULL) {
|
||||||
free(state);
|
free(state);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
strcpy(state->path, path);
|
#ifdef _WIN32
|
||||||
|
if (fd == -2)
|
||||||
|
if (len)
|
||||||
|
wcstombs(state->path, path, len + 1);
|
||||||
|
else
|
||||||
|
*(state->path) = 0;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
strcpy(state->path, path);
|
||||||
|
|
||||||
/* open the file with the appropriate mode (or just use fd) */
|
/* compute the flags for open() */
|
||||||
state->fd = fd != -1 ? fd :
|
oflag =
|
||||||
open(path,
|
|
||||||
#ifdef O_LARGEFILE
|
#ifdef O_LARGEFILE
|
||||||
O_LARGEFILE |
|
O_LARGEFILE |
|
||||||
#endif
|
#endif
|
||||||
#ifdef O_BINARY
|
#ifdef O_BINARY
|
||||||
O_BINARY |
|
O_BINARY |
|
||||||
#endif
|
#endif
|
||||||
(state->mode == GZ_READ ?
|
#ifdef O_CLOEXEC
|
||||||
O_RDONLY :
|
(cloexec ? O_CLOEXEC : 0) |
|
||||||
(O_WRONLY | O_CREAT | (
|
#endif
|
||||||
state->mode == GZ_WRITE ?
|
(state->mode == GZ_READ ?
|
||||||
O_TRUNC :
|
O_RDONLY :
|
||||||
O_APPEND))),
|
(O_WRONLY | O_CREAT |
|
||||||
0666);
|
#ifdef O_EXCL
|
||||||
|
(exclusive ? O_EXCL : 0) |
|
||||||
|
#endif
|
||||||
|
(state->mode == GZ_WRITE ?
|
||||||
|
O_TRUNC :
|
||||||
|
O_APPEND)));
|
||||||
|
|
||||||
|
/* open the file with the appropriate flags (or just use fd) */
|
||||||
|
state->fd = fd > -1 ? fd : (
|
||||||
|
#ifdef _WIN32
|
||||||
|
fd == -2 ? _wopen(path, oflag, 0666) :
|
||||||
|
#endif
|
||||||
|
open(path, oflag, 0666));
|
||||||
if (state->fd == -1) {
|
if (state->fd == -1) {
|
||||||
|
free(state->path);
|
||||||
free(state);
|
free(state);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -223,6 +290,16 @@ gzFile ZEXPORT gzdopen(fd, mode)
|
|||||||
return gz;
|
return gz;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -- see zlib.h -- */
|
||||||
|
#ifdef _WIN32
|
||||||
|
gzFile ZEXPORT gzopen_w(path, mode)
|
||||||
|
const wchar_t *path;
|
||||||
|
const char *mode;
|
||||||
|
{
|
||||||
|
return gz_open(path, -2, mode);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* -- see zlib.h -- */
|
/* -- see zlib.h -- */
|
||||||
int ZEXPORT gzbuffer(file, size)
|
int ZEXPORT gzbuffer(file, size)
|
||||||
gzFile file;
|
gzFile file;
|
||||||
@@ -242,8 +319,8 @@ int ZEXPORT gzbuffer(file, size)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* check and set requested size */
|
/* check and set requested size */
|
||||||
if (size == 0)
|
if (size < 2)
|
||||||
return -1;
|
size = 2; /* need two bytes to check magic header */
|
||||||
state->want = size;
|
state->want = size;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -260,7 +337,8 @@ int ZEXPORT gzrewind(file)
|
|||||||
state = (gz_statep)file;
|
state = (gz_statep)file;
|
||||||
|
|
||||||
/* check that we're reading and that there's no error */
|
/* 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;
|
return -1;
|
||||||
|
|
||||||
/* back up and start over */
|
/* back up and start over */
|
||||||
@@ -288,7 +366,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* check that there's no error */
|
/* check that there's no error */
|
||||||
if (state->err != Z_OK)
|
if (state->err != Z_OK && state->err != Z_BUF_ERROR)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* can only seek from start or relative to current position */
|
/* can only seek from start or relative to current position */
|
||||||
@@ -297,31 +375,32 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
|
|||||||
|
|
||||||
/* normalize offset to a SEEK_CUR specification */
|
/* normalize offset to a SEEK_CUR specification */
|
||||||
if (whence == SEEK_SET)
|
if (whence == SEEK_SET)
|
||||||
offset -= state->pos;
|
offset -= state->x.pos;
|
||||||
else if (state->seek)
|
else if (state->seek)
|
||||||
offset += state->skip;
|
offset += state->skip;
|
||||||
state->seek = 0;
|
state->seek = 0;
|
||||||
|
|
||||||
/* if within raw area while reading, just go there */
|
/* if within raw area while reading, just go there */
|
||||||
if (state->mode == GZ_READ && state->how == COPY &&
|
if (state->mode == GZ_READ && state->how == COPY &&
|
||||||
state->pos + offset >= state->raw) {
|
state->x.pos + offset >= 0) {
|
||||||
ret = LSEEK(state->fd, offset - state->have, SEEK_CUR);
|
ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR);
|
||||||
if (ret == -1)
|
if (ret == -1)
|
||||||
return -1;
|
return -1;
|
||||||
state->have = 0;
|
state->x.have = 0;
|
||||||
state->eof = 0;
|
state->eof = 0;
|
||||||
|
state->past = 0;
|
||||||
state->seek = 0;
|
state->seek = 0;
|
||||||
gz_error(state, Z_OK, NULL);
|
gz_error(state, Z_OK, NULL);
|
||||||
state->strm.avail_in = 0;
|
state->strm.avail_in = 0;
|
||||||
state->pos += offset;
|
state->x.pos += offset;
|
||||||
return state->pos;
|
return state->x.pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* calculate skip amount, rewinding if needed for back seek when reading */
|
/* calculate skip amount, rewinding if needed for back seek when reading */
|
||||||
if (offset < 0) {
|
if (offset < 0) {
|
||||||
if (state->mode != GZ_READ) /* writing -- can't go backwards */
|
if (state->mode != GZ_READ) /* writing -- can't go backwards */
|
||||||
return -1;
|
return -1;
|
||||||
offset += state->pos;
|
offset += state->x.pos;
|
||||||
if (offset < 0) /* before start of file! */
|
if (offset < 0) /* before start of file! */
|
||||||
return -1;
|
return -1;
|
||||||
if (gzrewind(file) == -1) /* rewind, then skip to offset */
|
if (gzrewind(file) == -1) /* rewind, then skip to offset */
|
||||||
@@ -330,11 +409,11 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
|
|||||||
|
|
||||||
/* if reading, skip what's in output buffer (one less gzgetc() check) */
|
/* if reading, skip what's in output buffer (one less gzgetc() check) */
|
||||||
if (state->mode == GZ_READ) {
|
if (state->mode == GZ_READ) {
|
||||||
n = GT_OFF(state->have) || (z_off64_t)state->have > offset ?
|
n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > offset ?
|
||||||
(unsigned)offset : state->have;
|
(unsigned)offset : state->x.have;
|
||||||
state->have -= n;
|
state->x.have -= n;
|
||||||
state->next += n;
|
state->x.next += n;
|
||||||
state->pos += n;
|
state->x.pos += n;
|
||||||
offset -= n;
|
offset -= n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -343,7 +422,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
|
|||||||
state->seek = 1;
|
state->seek = 1;
|
||||||
state->skip = offset;
|
state->skip = offset;
|
||||||
}
|
}
|
||||||
return state->pos + offset;
|
return state->x.pos + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -- see zlib.h -- */
|
/* -- see zlib.h -- */
|
||||||
@@ -372,7 +451,7 @@ z_off64_t ZEXPORT gztell64(file)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* return position */
|
/* return position */
|
||||||
return state->pos + (state->seek ? state->skip : 0);
|
return state->x.pos + (state->seek ? state->skip : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -- see zlib.h -- */
|
/* -- see zlib.h -- */
|
||||||
@@ -432,7 +511,7 @@ int ZEXPORT gzeof(file)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* return end-of-file state */
|
/* return end-of-file state */
|
||||||
return state->mode == GZ_READ ? (state->eof && state->have == 0) : 0;
|
return state->mode == GZ_READ ? state->past : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -- see zlib.h -- */
|
/* -- see zlib.h -- */
|
||||||
@@ -469,8 +548,10 @@ void ZEXPORT gzclearerr(file)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
/* clear error and end-of-file */
|
/* clear error and end-of-file */
|
||||||
if (state->mode == GZ_READ)
|
if (state->mode == GZ_READ) {
|
||||||
state->eof = 0;
|
state->eof = 0;
|
||||||
|
state->past = 0;
|
||||||
|
}
|
||||||
gz_error(state, Z_OK, NULL);
|
gz_error(state, Z_OK, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -480,7 +561,7 @@ void ZEXPORT gzclearerr(file)
|
|||||||
memory). Simply save the error message as a static string. If there is an
|
memory). Simply save the error message as a static string. If there is an
|
||||||
allocation failure constructing the error message, then convert the error to
|
allocation failure constructing the error message, then convert the error to
|
||||||
out of memory. */
|
out of memory. */
|
||||||
void ZEXPORT gz_error(state, err, msg)
|
void ZLIB_INTERNAL gz_error(state, err, msg)
|
||||||
gz_statep state;
|
gz_statep state;
|
||||||
int err;
|
int err;
|
||||||
const char *msg;
|
const char *msg;
|
||||||
@@ -492,6 +573,10 @@ void ZEXPORT gz_error(state, err, msg)
|
|||||||
state->msg = NULL;
|
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 */
|
/* set error code, and if no message, then done */
|
||||||
state->err = err;
|
state->err = err;
|
||||||
if (msg == NULL)
|
if (msg == NULL)
|
||||||
@@ -520,7 +605,7 @@ void ZEXPORT gz_error(state, err, msg)
|
|||||||
available) -- we need to do this to cover cases where 2's complement not
|
available) -- we need to do this to cover cases where 2's complement not
|
||||||
used, since C standard permits 1's complement and sign-bit representations,
|
used, since C standard permits 1's complement and sign-bit representations,
|
||||||
otherwise we could just use ((unsigned)-1) >> 1 */
|
otherwise we could just use ((unsigned)-1) >> 1 */
|
||||||
unsigned ZEXPORT gz_intmax()
|
unsigned ZLIB_INTERNAL gz_intmax()
|
||||||
{
|
{
|
||||||
unsigned p, q;
|
unsigned p, q;
|
||||||
|
|
||||||
|
|||||||
418
gzread.c
418
gzread.c
@@ -1,5 +1,5 @@
|
|||||||
/* gzread.c -- zlib functions for reading gzip files
|
/* gzread.c -- zlib functions for reading 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
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -8,10 +8,9 @@
|
|||||||
/* Local functions */
|
/* Local functions */
|
||||||
local int gz_load OF((gz_statep, unsigned char *, unsigned, unsigned *));
|
local int gz_load OF((gz_statep, unsigned char *, unsigned, unsigned *));
|
||||||
local int gz_avail OF((gz_statep));
|
local int gz_avail OF((gz_statep));
|
||||||
local int gz_next4 OF((gz_statep, unsigned long *));
|
local int gz_look OF((gz_statep));
|
||||||
local int gz_head OF((gz_statep));
|
|
||||||
local int gz_decomp 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));
|
local int gz_skip OF((gz_statep, z_off64_t));
|
||||||
|
|
||||||
/* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from
|
/* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from
|
||||||
@@ -46,67 +45,47 @@ local int gz_load(state, buf, len, have)
|
|||||||
error, 0 otherwise. Note that the eof flag is set when the end of the input
|
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
|
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.
|
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)
|
local int gz_avail(state)
|
||||||
gz_statep state;
|
gz_statep state;
|
||||||
{
|
{
|
||||||
|
unsigned got;
|
||||||
z_streamp strm = &(state->strm);
|
z_streamp strm = &(state->strm);
|
||||||
|
|
||||||
if (state->err != Z_OK)
|
if (state->err != Z_OK && state->err != Z_BUF_ERROR)
|
||||||
return -1;
|
return -1;
|
||||||
if (state->eof == 0) {
|
if (state->eof == 0) {
|
||||||
if (gz_load(state, state->in, state->size,
|
if (strm->avail_in) { /* copy what's there to the start */
|
||||||
(unsigned *)&(strm->avail_in)) == -1)
|
unsigned char *p = state->in, *q = strm->next_in;
|
||||||
|
unsigned n = strm->avail_in;
|
||||||
|
do {
|
||||||
|
*p++ = *q++;
|
||||||
|
} while (--n);
|
||||||
|
}
|
||||||
|
if (gz_load(state, state->in + strm->avail_in,
|
||||||
|
state->size - strm->avail_in, &got) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
|
strm->avail_in += got;
|
||||||
strm->next_in = state->in;
|
strm->next_in = state->in;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get next byte from input, or -1 if end or error. */
|
/* Look for gzip header, set up for inflate or copy. state->x.have must be 0.
|
||||||
#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.
|
|
||||||
If this is the first time in, allocate required memory. state->how will be
|
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
|
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
|
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
|
be set to GZIP for decompression. If direct copying, then leftover input
|
||||||
that the next available input data is the raw deflate stream. If direct
|
data from the input buffer will be copied to the output buffer. In that
|
||||||
copying, then leftover input data from the input buffer will be copied to
|
case, all further file reads will be directly to either the output buffer or
|
||||||
the output buffer. In that case, all further file reads will be directly to
|
a user buffer. If decompressing, the inflate state will be initialized.
|
||||||
either the output buffer or a user buffer. If decompressing, the inflate
|
gz_look() will return 0 on success or -1 on failure. */
|
||||||
state and the check value will be initialized. gz_head() will return 0 on
|
local int gz_look(state)
|
||||||
success or -1 on failure. Failures may include read errors or gzip header
|
|
||||||
errors. */
|
|
||||||
local int gz_head(state)
|
|
||||||
gz_statep state;
|
gz_statep state;
|
||||||
{
|
{
|
||||||
z_streamp strm = &(state->strm);
|
z_streamp strm = &(state->strm);
|
||||||
int flags;
|
|
||||||
unsigned len;
|
|
||||||
|
|
||||||
/* allocate read buffers and inflate memory */
|
/* allocate read buffers and inflate memory */
|
||||||
if (state->size == 0) {
|
if (state->size == 0) {
|
||||||
@@ -129,7 +108,7 @@ local int gz_head(state)
|
|||||||
state->strm.opaque = Z_NULL;
|
state->strm.opaque = Z_NULL;
|
||||||
state->strm.avail_in = 0;
|
state->strm.avail_in = 0;
|
||||||
state->strm.next_in = Z_NULL;
|
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->out);
|
||||||
free(state->in);
|
free(state->in);
|
||||||
state->size = 0;
|
state->size = 0;
|
||||||
@@ -138,83 +117,45 @@ local int gz_head(state)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get some data in the input buffer */
|
/* get at least the magic bytes in the input buffer */
|
||||||
if (strm->avail_in == 0) {
|
if (strm->avail_in < 2) {
|
||||||
if (gz_avail(state) == -1)
|
if (gz_avail(state) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
if (strm->avail_in == 0)
|
if (strm->avail_in == 0)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* look for the gzip magic header bytes 31 and 139 */
|
/* look for gzip magic bytes -- if there, do gzip decoding (note: there is
|
||||||
if (strm->next_in[0] == 31) {
|
a logical dilemma here when considering the case of a partially written
|
||||||
strm->avail_in--;
|
gzip file, to wit, if a single 31 byte is written, then we cannot tell
|
||||||
strm->next_in++;
|
whether this is a single-byte file, or just a partially written gzip
|
||||||
if (strm->avail_in == 0 && gz_avail(state) == -1)
|
file -- for here we assume that if a gzip file is being written, then
|
||||||
return -1;
|
the header will be written in a single operation, so that reading a
|
||||||
if (strm->avail_in && strm->next_in[0] == 139) {
|
single byte is sufficient indication that it is not a gzip file) */
|
||||||
/* we have a gzip header, woo hoo! */
|
if (strm->avail_in > 1 &&
|
||||||
strm->avail_in--;
|
strm->next_in[0] == 31 && strm->next_in[1] == 139) {
|
||||||
strm->next_in++;
|
inflateReset(strm);
|
||||||
|
state->how = GZIP;
|
||||||
/* skip rest of header */
|
state->direct = 0;
|
||||||
if (NEXT() != 8) { /* compression method */
|
return 0;
|
||||||
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 */
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* doing raw i/o, save start of raw data for seeking, copy any leftover
|
/* no gzip header -- if we were decoding gzip before, then this is trailing
|
||||||
input to output -- this assumes that the output buffer is larger than
|
garbage. Ignore the trailing garbage and finish. */
|
||||||
the input buffer, which also assures space for gzungetc() */
|
if (state->direct == 0) {
|
||||||
state->raw = state->pos;
|
strm->avail_in = 0;
|
||||||
state->next = state->out;
|
state->eof = 1;
|
||||||
|
state->x.have = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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) {
|
if (strm->avail_in) {
|
||||||
memcpy(state->next + state->have, strm->next_in, strm->avail_in);
|
memcpy(state->x.next, strm->next_in, strm->avail_in);
|
||||||
state->have += strm->avail_in;
|
state->x.have = strm->avail_in;
|
||||||
strm->avail_in = 0;
|
strm->avail_in = 0;
|
||||||
}
|
}
|
||||||
state->how = COPY;
|
state->how = COPY;
|
||||||
@@ -223,19 +164,15 @@ local int gz_head(state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Decompress from input to the provided next_out and avail_out in the 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
|
On return, state->x.have and state->x.next point to the just decompressed
|
||||||
check value and length (modulo 2^32). state->have and state->next are set
|
data. If the gzip stream completes, state->how is reset to LOOK to look for
|
||||||
to point to the just decompressed data, and the crc is updated. If the
|
the next gzip stream or raw data, once state->x.have is depleted. Returns 0
|
||||||
trailer is verified, state->how is reset to LOOK to look for the next gzip
|
on success, -1 on failure. */
|
||||||
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. */
|
|
||||||
local int gz_decomp(state)
|
local int gz_decomp(state)
|
||||||
gz_statep state;
|
gz_statep state;
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = Z_OK;
|
||||||
unsigned had;
|
unsigned had;
|
||||||
unsigned long crc, len;
|
|
||||||
z_streamp strm = &(state->strm);
|
z_streamp strm = &(state->strm);
|
||||||
|
|
||||||
/* fill output buffer up to end of deflate stream */
|
/* fill output buffer up to end of deflate stream */
|
||||||
@@ -245,15 +182,15 @@ local int gz_decomp(state)
|
|||||||
if (strm->avail_in == 0 && gz_avail(state) == -1)
|
if (strm->avail_in == 0 && gz_avail(state) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
if (strm->avail_in == 0) {
|
if (strm->avail_in == 0) {
|
||||||
gz_error(state, Z_DATA_ERROR, "unexpected end of file");
|
gz_error(state, Z_BUF_ERROR, "unexpected end of file");
|
||||||
return -1;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* decompress and handle errors */
|
/* decompress and handle errors */
|
||||||
ret = inflate(strm, Z_NO_FLUSH);
|
ret = inflate(strm, Z_NO_FLUSH);
|
||||||
if (ret == Z_STREAM_ERROR || ret == Z_NEED_DICT) {
|
if (ret == Z_STREAM_ERROR || ret == Z_NEED_DICT) {
|
||||||
gz_error(state, Z_STREAM_ERROR,
|
gz_error(state, Z_STREAM_ERROR,
|
||||||
"internal error: inflate stream corrupt");
|
"internal error: inflate stream corrupt");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (ret == Z_MEM_ERROR) {
|
if (ret == Z_MEM_ERROR) {
|
||||||
@@ -262,67 +199,55 @@ local int gz_decomp(state)
|
|||||||
}
|
}
|
||||||
if (ret == Z_DATA_ERROR) { /* deflate stream invalid */
|
if (ret == Z_DATA_ERROR) { /* deflate stream invalid */
|
||||||
gz_error(state, Z_DATA_ERROR,
|
gz_error(state, Z_DATA_ERROR,
|
||||||
strm->msg == NULL ? "compressed data error" : strm->msg);
|
strm->msg == NULL ? "compressed data error" : strm->msg);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} while (strm->avail_out && ret != Z_STREAM_END);
|
} while (strm->avail_out && ret != Z_STREAM_END);
|
||||||
|
|
||||||
/* update available output and crc check value */
|
/* update available output */
|
||||||
state->have = had - strm->avail_out;
|
state->x.have = had - strm->avail_out;
|
||||||
state->next = strm->next_out - state->have;
|
state->x.next = strm->next_out - state->x.have;
|
||||||
strm->adler = crc32(strm->adler, state->next, state->have);
|
|
||||||
|
|
||||||
/* check gzip trailer if at end of deflate stream */
|
/* if the gzip stream completed successfully, look for another */
|
||||||
if (ret == Z_STREAM_END) {
|
if (ret == Z_STREAM_END)
|
||||||
if (gz_next4(state, &crc) == -1 || gz_next4(state, &len) == -1) {
|
state->how = LOOK;
|
||||||
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) */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* good decompression */
|
/* good decompression */
|
||||||
return 0;
|
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
|
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
|
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.
|
looked for to determine whether to copy or decompress. Returns -1 on error,
|
||||||
Returns -1 on error, otherwise 0. gz_make() will leave state->have as COPY
|
otherwise 0. gz_fetch() will leave state->how as COPY or GZIP unless the
|
||||||
or GZIP unless the end of the input file has been reached and all data has
|
end of the input file has been reached and all data has been processed. */
|
||||||
been processed. */
|
local int gz_fetch(state)
|
||||||
local int gz_make(state)
|
|
||||||
gz_statep state;
|
gz_statep state;
|
||||||
{
|
{
|
||||||
z_streamp strm = &(state->strm);
|
z_streamp strm = &(state->strm);
|
||||||
|
|
||||||
if (state->how == LOOK) { /* look for gzip header */
|
do {
|
||||||
if (gz_head(state) == -1)
|
switch(state->how) {
|
||||||
return -1;
|
case LOOK: /* -> LOOK, COPY (only if never GZIP), or GZIP */
|
||||||
if (state->have) /* got some data from gz_head() */
|
if (gz_look(state) == -1)
|
||||||
|
return -1;
|
||||||
|
if (state->how == LOOK)
|
||||||
|
return 0;
|
||||||
|
break;
|
||||||
|
case COPY: /* -> COPY */
|
||||||
|
if (gz_load(state, state->out, state->size << 1, &(state->x.have))
|
||||||
|
== -1)
|
||||||
|
return -1;
|
||||||
|
state->x.next = state->out;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
case GZIP: /* -> GZIP or LOOK (if end of gzip stream) */
|
||||||
if (state->how == COPY) { /* straight copy */
|
strm->avail_out = state->size << 1;
|
||||||
if (gz_load(state, state->out, state->size << 1, &(state->have)) == -1)
|
strm->next_out = state->out;
|
||||||
return -1;
|
if (gz_decomp(state) == -1)
|
||||||
state->next = state->out;
|
return -1;
|
||||||
}
|
}
|
||||||
else if (state->how == GZIP) { /* decompress */
|
} while (state->x.have == 0 && (!state->eof || strm->avail_in));
|
||||||
strm->avail_out = state->size << 1;
|
|
||||||
strm->next_out = state->out;
|
|
||||||
if (gz_decomp(state) == -1)
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -336,12 +261,12 @@ local int gz_skip(state, len)
|
|||||||
/* skip over len bytes or reach end-of-file, whichever comes first */
|
/* skip over len bytes or reach end-of-file, whichever comes first */
|
||||||
while (len)
|
while (len)
|
||||||
/* skip over whatever is in output buffer */
|
/* skip over whatever is in output buffer */
|
||||||
if (state->have) {
|
if (state->x.have) {
|
||||||
n = GT_OFF(state->have) || (z_off64_t)state->have > len ?
|
n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > len ?
|
||||||
(unsigned)len : state->have;
|
(unsigned)len : state->x.have;
|
||||||
state->have -= n;
|
state->x.have -= n;
|
||||||
state->next += n;
|
state->x.next += n;
|
||||||
state->pos += n;
|
state->x.pos += n;
|
||||||
len -= n;
|
len -= n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -352,7 +277,7 @@ local int gz_skip(state, len)
|
|||||||
/* need more data to skip -- load up output buffer */
|
/* need more data to skip -- load up output buffer */
|
||||||
else {
|
else {
|
||||||
/* get more output, looking for header if required */
|
/* get more output, looking for header if required */
|
||||||
if (gz_make(state) == -1)
|
if (gz_fetch(state) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -374,14 +299,15 @@ int ZEXPORT gzread(file, buf, len)
|
|||||||
state = (gz_statep)file;
|
state = (gz_statep)file;
|
||||||
strm = &(state->strm);
|
strm = &(state->strm);
|
||||||
|
|
||||||
/* check that we're reading and that there's no error */
|
/* check that we're reading and that there's no (serious) 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;
|
return -1;
|
||||||
|
|
||||||
/* since an int is returned, make sure len fits in one, otherwise return
|
/* since an int is returned, make sure len fits in one, otherwise return
|
||||||
with an error (this avoids the flaw in the interface) */
|
with an error (this avoids the flaw in the interface) */
|
||||||
if ((int)len < 0) {
|
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;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -400,24 +326,26 @@ int ZEXPORT gzread(file, buf, len)
|
|||||||
got = 0;
|
got = 0;
|
||||||
do {
|
do {
|
||||||
/* first just try copying data from the output buffer */
|
/* first just try copying data from the output buffer */
|
||||||
if (state->have) {
|
if (state->x.have) {
|
||||||
n = state->have > len ? len : state->have;
|
n = state->x.have > len ? len : state->x.have;
|
||||||
memcpy(buf, state->next, n);
|
memcpy(buf, state->x.next, n);
|
||||||
state->next += n;
|
state->x.next += n;
|
||||||
state->have -= n;
|
state->x.have -= n;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* output buffer empty -- return if we're at the end of the input */
|
/* 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;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* need output data -- for small len or new stream load up our output
|
/* need output data -- for small len or new stream load up our output
|
||||||
buffer */
|
buffer */
|
||||||
else if (state->how == LOOK || len < (state->size << 1)) {
|
else if (state->how == LOOK || len < (state->size << 1)) {
|
||||||
/* get more output, looking for header if required */
|
/* get more output, looking for header if required */
|
||||||
if (gz_make(state) == -1)
|
if (gz_fetch(state) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
continue; /* no progress yet -- go back to memcpy() above */
|
continue; /* no progress yet -- go back to copy above */
|
||||||
/* the copy above assures that we will leave with space in the
|
/* the copy above assures that we will leave with space in the
|
||||||
output buffer, allowing at least one gzungetc() to succeed */
|
output buffer, allowing at least one gzungetc() to succeed */
|
||||||
}
|
}
|
||||||
@@ -434,15 +362,15 @@ int ZEXPORT gzread(file, buf, len)
|
|||||||
strm->next_out = buf;
|
strm->next_out = buf;
|
||||||
if (gz_decomp(state) == -1)
|
if (gz_decomp(state) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
n = state->have;
|
n = state->x.have;
|
||||||
state->have = 0;
|
state->x.have = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* update progress */
|
/* update progress */
|
||||||
len -= n;
|
len -= n;
|
||||||
buf = (char *)buf + n;
|
buf = (char *)buf + n;
|
||||||
got += n;
|
got += n;
|
||||||
state->pos += n;
|
state->x.pos += n;
|
||||||
} while (len);
|
} while (len);
|
||||||
|
|
||||||
/* return number of bytes read into user buffer (will fit in int) */
|
/* return number of bytes read into user buffer (will fit in int) */
|
||||||
@@ -450,6 +378,7 @@ int ZEXPORT gzread(file, buf, len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -- see zlib.h -- */
|
/* -- see zlib.h -- */
|
||||||
|
#undef gzgetc
|
||||||
int ZEXPORT gzgetc(file)
|
int ZEXPORT gzgetc(file)
|
||||||
gzFile file;
|
gzFile file;
|
||||||
{
|
{
|
||||||
@@ -462,15 +391,16 @@ int ZEXPORT gzgetc(file)
|
|||||||
return -1;
|
return -1;
|
||||||
state = (gz_statep)file;
|
state = (gz_statep)file;
|
||||||
|
|
||||||
/* check that we're reading and that there's no error */
|
/* check that we're reading and that there's no (serious) 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;
|
return -1;
|
||||||
|
|
||||||
/* try output buffer (no need to check for skip request) */
|
/* try output buffer (no need to check for skip request) */
|
||||||
if (state->have) {
|
if (state->x.have) {
|
||||||
state->have--;
|
state->x.have--;
|
||||||
state->pos++;
|
state->x.pos++;
|
||||||
return *(state->next)++;
|
return *(state->x.next)++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* nothing there -- try gzread() */
|
/* nothing there -- try gzread() */
|
||||||
@@ -478,6 +408,12 @@ int ZEXPORT gzgetc(file)
|
|||||||
return ret < 1 ? -1 : buf[0];
|
return ret < 1 ? -1 : buf[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ZEXPORT gzgetc_(file)
|
||||||
|
gzFile file;
|
||||||
|
{
|
||||||
|
return gzgetc(file);
|
||||||
|
}
|
||||||
|
|
||||||
/* -- see zlib.h -- */
|
/* -- see zlib.h -- */
|
||||||
int ZEXPORT gzungetc(c, file)
|
int ZEXPORT gzungetc(c, file)
|
||||||
int c;
|
int c;
|
||||||
@@ -490,8 +426,9 @@ int ZEXPORT gzungetc(c, file)
|
|||||||
return -1;
|
return -1;
|
||||||
state = (gz_statep)file;
|
state = (gz_statep)file;
|
||||||
|
|
||||||
/* check that we're reading and that there's no error */
|
/* check that we're reading and that there's no (serious) 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;
|
return -1;
|
||||||
|
|
||||||
/* process a skip request */
|
/* process a skip request */
|
||||||
@@ -506,32 +443,34 @@ int ZEXPORT gzungetc(c, file)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* if output buffer empty, put byte at end (allows more pushing) */
|
/* if output buffer empty, put byte at end (allows more pushing) */
|
||||||
if (state->have == 0) {
|
if (state->x.have == 0) {
|
||||||
state->have = 1;
|
state->x.have = 1;
|
||||||
state->next = state->out + (state->size << 1) - 1;
|
state->x.next = state->out + (state->size << 1) - 1;
|
||||||
state->next[0] = c;
|
state->x.next[0] = c;
|
||||||
state->pos--;
|
state->x.pos--;
|
||||||
|
state->past = 0;
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if no room, give up (must have already done a gzungetc()) */
|
/* if no room, give up (must have already done a gzungetc()) */
|
||||||
if (state->have == (state->size << 1)) {
|
if (state->x.have == (state->size << 1)) {
|
||||||
gz_error(state, Z_BUF_ERROR, "out of room to push characters");
|
gz_error(state, Z_DATA_ERROR, "out of room to push characters");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* slide output data if needed and insert byte before existing data */
|
/* slide output data if needed and insert byte before existing data */
|
||||||
if (state->next == state->out) {
|
if (state->x.next == state->out) {
|
||||||
unsigned char *src = state->out + state->have;
|
unsigned char *src = state->out + state->x.have;
|
||||||
unsigned char *dest = state->out + (state->size << 1);
|
unsigned char *dest = state->out + (state->size << 1);
|
||||||
while (src > state->out)
|
while (src > state->out)
|
||||||
*--dest = *--src;
|
*--dest = *--src;
|
||||||
state->next = dest;
|
state->x.next = dest;
|
||||||
}
|
}
|
||||||
state->have++;
|
state->x.have++;
|
||||||
state->next--;
|
state->x.next--;
|
||||||
state->next[0] = c;
|
state->x.next[0] = c;
|
||||||
state->pos--;
|
state->x.pos--;
|
||||||
|
state->past = 0;
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -551,8 +490,9 @@ char * ZEXPORT gzgets(file, buf, len)
|
|||||||
return NULL;
|
return NULL;
|
||||||
state = (gz_statep)file;
|
state = (gz_statep)file;
|
||||||
|
|
||||||
/* check that we're reading and that there's no error */
|
/* check that we're reading and that there's no (serious) 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 NULL;
|
return NULL;
|
||||||
|
|
||||||
/* process a skip request */
|
/* process a skip request */
|
||||||
@@ -569,32 +509,31 @@ char * ZEXPORT gzgets(file, buf, len)
|
|||||||
left = (unsigned)len - 1;
|
left = (unsigned)len - 1;
|
||||||
if (left) do {
|
if (left) do {
|
||||||
/* assure that something is in the output buffer */
|
/* assure that something is in the output buffer */
|
||||||
if (state->have == 0) {
|
if (state->x.have == 0 && gz_fetch(state) == -1)
|
||||||
if (gz_make(state) == -1)
|
return NULL; /* error */
|
||||||
return NULL; /* error */
|
if (state->x.have == 0) { /* end of file */
|
||||||
if (state->have == 0) { /* end of file */
|
state->past = 1; /* read past end */
|
||||||
if (buf == str) /* got bupkus */
|
break; /* return what we have */
|
||||||
return NULL;
|
|
||||||
break; /* got something -- return it */
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* look for end-of-line in current output buffer */
|
/* look for end-of-line in current output buffer */
|
||||||
n = state->have > left ? left : state->have;
|
n = state->x.have > left ? left : state->x.have;
|
||||||
eol = memchr(state->next, '\n', n);
|
eol = memchr(state->x.next, '\n', n);
|
||||||
if (eol != NULL)
|
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 */
|
/* copy through end-of-line, or remainder if not found */
|
||||||
memcpy(buf, state->next, n);
|
memcpy(buf, state->x.next, n);
|
||||||
state->have -= n;
|
state->x.have -= n;
|
||||||
state->next += n;
|
state->x.next += n;
|
||||||
state->pos += n;
|
state->x.pos += n;
|
||||||
left -= n;
|
left -= n;
|
||||||
buf += n;
|
buf += n;
|
||||||
} while (left && eol == NULL);
|
} 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;
|
buf[0] = 0;
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
@@ -610,16 +549,12 @@ int ZEXPORT gzdirect(file)
|
|||||||
return 0;
|
return 0;
|
||||||
state = (gz_statep)file;
|
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
|
/* if the state is not known, but we can find out, then do so (this is
|
||||||
mainly for right after a gzopen() or gzdopen()) */
|
mainly for right after a gzopen() or gzdopen()) */
|
||||||
if (state->how == LOOK && state->have == 0)
|
if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0)
|
||||||
(void)gz_head(state);
|
(void)gz_look(state);
|
||||||
|
|
||||||
/* return 1 if reading direct, 0 if decompressing a gzip stream */
|
/* return 1 if transparent, 0 if processing a gzip stream */
|
||||||
return state->direct;
|
return state->direct;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -627,7 +562,7 @@ int ZEXPORT gzdirect(file)
|
|||||||
int ZEXPORT gzclose_r(file)
|
int ZEXPORT gzclose_r(file)
|
||||||
gzFile file;
|
gzFile file;
|
||||||
{
|
{
|
||||||
int ret;
|
int ret, err;
|
||||||
gz_statep state;
|
gz_statep state;
|
||||||
|
|
||||||
/* get internal structure */
|
/* get internal structure */
|
||||||
@@ -645,9 +580,10 @@ int ZEXPORT gzclose_r(file)
|
|||||||
free(state->out);
|
free(state->out);
|
||||||
free(state->in);
|
free(state->in);
|
||||||
}
|
}
|
||||||
|
err = state->err == Z_BUF_ERROR ? Z_BUF_ERROR : Z_OK;
|
||||||
gz_error(state, Z_OK, NULL);
|
gz_error(state, Z_OK, NULL);
|
||||||
free(state->path);
|
free(state->path);
|
||||||
ret = close(state->fd);
|
ret = close(state->fd);
|
||||||
free(state);
|
free(state);
|
||||||
return ret ? Z_ERRNO : Z_OK;
|
return ret ? Z_ERRNO : err;
|
||||||
}
|
}
|
||||||
|
|||||||
146
gzwrite.c
146
gzwrite.c
@@ -1,5 +1,5 @@
|
|||||||
/* gzwrite.c -- zlib functions for writing gzip files
|
/* 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
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -18,44 +18,55 @@ local int gz_init(state)
|
|||||||
int ret;
|
int ret;
|
||||||
z_streamp strm = &(state->strm);
|
z_streamp strm = &(state->strm);
|
||||||
|
|
||||||
/* allocate input and output buffers */
|
/* allocate input buffer */
|
||||||
state->in = malloc(state->want);
|
state->in = malloc(state->want);
|
||||||
state->out = malloc(state->want);
|
if (state->in == NULL) {
|
||||||
if (state->in == NULL || state->out == NULL) {
|
|
||||||
if (state->out != NULL)
|
|
||||||
free(state->out);
|
|
||||||
if (state->in != NULL)
|
|
||||||
free(state->in);
|
|
||||||
gz_error(state, Z_MEM_ERROR, "out of memory");
|
gz_error(state, Z_MEM_ERROR, "out of memory");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* allocate deflate memory, set up for gzip compression */
|
/* only need output buffer and deflate state if compressing */
|
||||||
strm->zalloc = Z_NULL;
|
if (!state->direct) {
|
||||||
strm->zfree = Z_NULL;
|
/* allocate output buffer */
|
||||||
strm->opaque = Z_NULL;
|
state->out = malloc(state->want);
|
||||||
ret = deflateInit2(strm, state->level, Z_DEFLATED,
|
if (state->out == NULL) {
|
||||||
15 + 16, 8, state->strategy);
|
free(state->in);
|
||||||
if (ret != Z_OK) {
|
gz_error(state, Z_MEM_ERROR, "out of memory");
|
||||||
free(state->in);
|
return -1;
|
||||||
gz_error(state, Z_MEM_ERROR, "out of memory");
|
}
|
||||||
return -1;
|
|
||||||
|
/* allocate deflate memory, set up for gzip compression */
|
||||||
|
strm->zalloc = Z_NULL;
|
||||||
|
strm->zfree = Z_NULL;
|
||||||
|
strm->opaque = Z_NULL;
|
||||||
|
ret = deflateInit2(strm, state->level, Z_DEFLATED,
|
||||||
|
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 */
|
/* mark state as initialized */
|
||||||
state->size = state->want;
|
state->size = state->want;
|
||||||
|
|
||||||
/* initialize write buffer */
|
/* initialize write buffer if compressing */
|
||||||
strm->avail_out = state->size;
|
if (!state->direct) {
|
||||||
strm->next_out = state->out;
|
strm->avail_out = state->size;
|
||||||
state->next = strm->next_out;
|
strm->next_out = state->out;
|
||||||
|
state->x.next = strm->next_out;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Compress whatever is at avail_in and next_in and write to the output file.
|
/* 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.
|
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,
|
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)
|
local int gz_comp(state, flush)
|
||||||
gz_statep state;
|
gz_statep state;
|
||||||
int flush;
|
int flush;
|
||||||
@@ -68,6 +79,17 @@ local int gz_comp(state, flush)
|
|||||||
if (state->size == 0 && gz_init(state) == -1)
|
if (state->size == 0 && gz_init(state) == -1)
|
||||||
return -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 */
|
/* run deflate() on provided input until it produces no more output */
|
||||||
ret = Z_OK;
|
ret = Z_OK;
|
||||||
do {
|
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 */
|
doing Z_FINISH then don't write until we get to Z_STREAM_END */
|
||||||
if (strm->avail_out == 0 || (flush != Z_NO_FLUSH &&
|
if (strm->avail_out == 0 || (flush != Z_NO_FLUSH &&
|
||||||
(flush != Z_FINISH || ret == Z_STREAM_END))) {
|
(flush != Z_FINISH || ret == Z_STREAM_END))) {
|
||||||
have = (unsigned)(strm->next_out - state->next);
|
have = (unsigned)(strm->next_out - state->x.next);
|
||||||
if (have && ((got = write(state->fd, state->next, have)) < 0 ||
|
if (have && ((got = write(state->fd, state->x.next, have)) < 0 ||
|
||||||
(unsigned)got != have)) {
|
(unsigned)got != have)) {
|
||||||
gz_error(state, Z_ERRNO, zstrerror());
|
gz_error(state, Z_ERRNO, zstrerror());
|
||||||
return -1;
|
return -1;
|
||||||
@@ -85,7 +107,7 @@ local int gz_comp(state, flush)
|
|||||||
strm->avail_out = state->size;
|
strm->avail_out = state->size;
|
||||||
strm->next_out = state->out;
|
strm->next_out = state->out;
|
||||||
}
|
}
|
||||||
state->next = strm->next_out;
|
state->x.next = strm->next_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* compress */
|
/* compress */
|
||||||
@@ -131,7 +153,7 @@ local int gz_zero(state, len)
|
|||||||
}
|
}
|
||||||
strm->avail_in = n;
|
strm->avail_in = n;
|
||||||
strm->next_in = state->in;
|
strm->next_in = state->in;
|
||||||
state->pos += n;
|
state->x.pos += n;
|
||||||
if (gz_comp(state, Z_NO_FLUSH) == -1)
|
if (gz_comp(state, Z_NO_FLUSH) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
len -= n;
|
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
|
/* since an int is returned, make sure len fits in one, otherwise return
|
||||||
with an error (this avoids the flaw in the interface) */
|
with an error (this avoids the flaw in the interface) */
|
||||||
if ((int)len < 0) {
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,7 +215,7 @@ int ZEXPORT gzwrite(file, buf, len)
|
|||||||
n = len;
|
n = len;
|
||||||
memcpy(strm->next_in + strm->avail_in, buf, n);
|
memcpy(strm->next_in + strm->avail_in, buf, n);
|
||||||
strm->avail_in += n;
|
strm->avail_in += n;
|
||||||
state->pos += n;
|
state->x.pos += n;
|
||||||
buf = (char *)buf + n;
|
buf = (char *)buf + n;
|
||||||
len -= n;
|
len -= n;
|
||||||
if (len && gz_comp(state, Z_NO_FLUSH) == -1)
|
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 */
|
/* directly compress user buffer to file */
|
||||||
strm->avail_in = len;
|
strm->avail_in = len;
|
||||||
strm->next_in = (voidp)buf;
|
strm->next_in = (voidp)buf;
|
||||||
state->pos += len;
|
state->x.pos += len;
|
||||||
if (gz_comp(state, Z_NO_FLUSH) == -1)
|
if (gz_comp(state, Z_NO_FLUSH) == -1)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -249,15 +271,15 @@ int ZEXPORT gzputc(file, c)
|
|||||||
if (strm->avail_in == 0)
|
if (strm->avail_in == 0)
|
||||||
strm->next_in = state->in;
|
strm->next_in = state->in;
|
||||||
strm->next_in[strm->avail_in++] = c;
|
strm->next_in[strm->avail_in++] = c;
|
||||||
state->pos++;
|
state->x.pos++;
|
||||||
return c;
|
return c & 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* no room in buffer or not initialized, use gz_write() */
|
/* no room in buffer or not initialized, use gz_write() */
|
||||||
buf[0] = c;
|
buf[0] = c;
|
||||||
if (gzwrite(file, buf, 1) != 1)
|
if (gzwrite(file, buf, 1) != 1)
|
||||||
return -1;
|
return -1;
|
||||||
return c;
|
return c & 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -- see zlib.h -- */
|
/* -- see zlib.h -- */
|
||||||
@@ -274,7 +296,7 @@ int ZEXPORT gzputs(file, str)
|
|||||||
return ret == 0 && len != 0 ? -1 : ret;
|
return ret == 0 && len != 0 ? -1 : ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef STDC
|
#if defined(STDC) || defined(Z_HAVE_STDARG_H)
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
/* -- see zlib.h -- */
|
/* -- see zlib.h -- */
|
||||||
@@ -316,19 +338,19 @@ int ZEXPORTVA gzprintf (gzFile file, const char *format, ...)
|
|||||||
va_start(va, format);
|
va_start(va, format);
|
||||||
#ifdef NO_vsnprintf
|
#ifdef NO_vsnprintf
|
||||||
# ifdef HAS_vsprintf_void
|
# ifdef HAS_vsprintf_void
|
||||||
(void)vsprintf(state->in, format, va);
|
(void)vsprintf((char *)(state->in), format, va);
|
||||||
va_end(va);
|
va_end(va);
|
||||||
for (len = 0; len < size; len++)
|
for (len = 0; len < size; len++)
|
||||||
if (state->in[len] == 0) break;
|
if (state->in[len] == 0) break;
|
||||||
# else
|
# else
|
||||||
len = vsprintf(state->in, format, va);
|
len = vsprintf((char *)(state->in), format, va);
|
||||||
va_end(va);
|
va_end(va);
|
||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
# ifdef HAS_vsnprintf_void
|
# ifdef HAS_vsnprintf_void
|
||||||
(void)vsnprintf(state->in, size, format, va);
|
(void)vsnprintf((char *)(state->in), size, format, va);
|
||||||
va_end(va);
|
va_end(va);
|
||||||
len = strlen(state->in);
|
len = strlen((char *)(state->in));
|
||||||
# else
|
# else
|
||||||
len = vsnprintf((char *)(state->in), size, format, va);
|
len = vsnprintf((char *)(state->in), size, format, va);
|
||||||
va_end(va);
|
va_end(va);
|
||||||
@@ -342,11 +364,11 @@ int ZEXPORTVA gzprintf (gzFile file, const char *format, ...)
|
|||||||
/* update buffer and position, defer compression until needed */
|
/* update buffer and position, defer compression until needed */
|
||||||
strm->avail_in = (unsigned)len;
|
strm->avail_in = (unsigned)len;
|
||||||
strm->next_in = state->in;
|
strm->next_in = state->in;
|
||||||
state->pos += len;
|
state->x.pos += len;
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* !STDC */
|
#else /* !STDC && !Z_HAVE_STDARG_H */
|
||||||
|
|
||||||
/* -- see zlib.h -- */
|
/* -- see zlib.h -- */
|
||||||
int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
|
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;
|
state = (gz_statep)file;
|
||||||
strm = &(state->strm);
|
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 */
|
/* check that we're writing and that there's no error */
|
||||||
if (state->mode != GZ_WRITE || state->err != Z_OK)
|
if (state->mode != GZ_WRITE || state->err != Z_OK)
|
||||||
return 0;
|
return 0;
|
||||||
@@ -390,22 +416,23 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
|
|||||||
state->in[size - 1] = 0;
|
state->in[size - 1] = 0;
|
||||||
#ifdef NO_snprintf
|
#ifdef NO_snprintf
|
||||||
# ifdef HAS_sprintf_void
|
# ifdef HAS_sprintf_void
|
||||||
sprintf(state->in, format, a1, a2, a3, a4, a5, a6, a7, a8,
|
sprintf((char *)(state->in), format, a1, a2, a3, a4, a5, a6, a7, a8,
|
||||||
a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
|
a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
|
||||||
for (len = 0; len < size; len++)
|
for (len = 0; len < size; len++)
|
||||||
if (state->in[len] == 0) break;
|
if (state->in[len] == 0) break;
|
||||||
# else
|
# else
|
||||||
len = sprintf(state->in, format, a1, a2, a3, a4, a5, a6, a7, a8,
|
len = sprintf((char *)(state->in), format, a1, a2, a3, a4, a5, a6, a7, a8,
|
||||||
a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
|
a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
|
||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
# ifdef HAS_snprintf_void
|
# ifdef HAS_snprintf_void
|
||||||
snprintf(state->in, size, format, a1, a2, a3, a4, a5, a6, a7, a8,
|
snprintf((char *)(state->in), size, format, a1, a2, a3, a4, a5, a6, a7, a8,
|
||||||
a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
|
a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
|
||||||
len = strlen(state->in);
|
len = strlen((char *)(state->in));
|
||||||
# else
|
# else
|
||||||
len = snprintf(state->in, size, format, a1, a2, a3, a4, a5, a6, a7, a8,
|
len = snprintf((char *)(state->in), size, format, a1, a2, a3, a4, a5, a6,
|
||||||
a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
|
a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18,
|
||||||
|
a19, a20);
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -416,7 +443,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
|
|||||||
/* update buffer and position, defer compression until needed */
|
/* update buffer and position, defer compression until needed */
|
||||||
strm->avail_in = (unsigned)len;
|
strm->avail_in = (unsigned)len;
|
||||||
strm->next_in = state->in;
|
strm->next_in = state->in;
|
||||||
state->pos += len;
|
state->x.pos += len;
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -500,7 +527,7 @@ int ZEXPORT gzsetparams(file, level, strategy)
|
|||||||
int ZEXPORT gzclose_w(file)
|
int ZEXPORT gzclose_w(file)
|
||||||
gzFile file;
|
gzFile file;
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = Z_OK;
|
||||||
gz_statep state;
|
gz_statep state;
|
||||||
|
|
||||||
/* get internal structure */
|
/* get internal structure */
|
||||||
@@ -515,17 +542,24 @@ int ZEXPORT gzclose_w(file)
|
|||||||
/* check for seek request */
|
/* check for seek request */
|
||||||
if (state->seek) {
|
if (state->seek) {
|
||||||
state->seek = 0;
|
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 */
|
/* flush, free memory, and close file */
|
||||||
ret += gz_comp(state, Z_FINISH);
|
if (state->size) {
|
||||||
(void)deflateEnd(&(state->strm));
|
if (gz_comp(state, Z_FINISH) == -1)
|
||||||
free(state->out);
|
ret = state->err;
|
||||||
free(state->in);
|
if (!state->direct) {
|
||||||
|
(void)deflateEnd(&(state->strm));
|
||||||
|
free(state->out);
|
||||||
|
}
|
||||||
|
free(state->in);
|
||||||
|
}
|
||||||
gz_error(state, Z_OK, NULL);
|
gz_error(state, Z_OK, NULL);
|
||||||
free(state->path);
|
free(state->path);
|
||||||
ret += close(state->fd);
|
if (close(state->fd) == -1)
|
||||||
|
ret = Z_ERRNO;
|
||||||
free(state);
|
free(state);
|
||||||
return ret ? Z_ERRNO : Z_OK;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
14
infback.c
14
infback.c
@@ -1,5 +1,5 @@
|
|||||||
/* infback.c -- inflate using a call-back interface
|
/* infback.c -- inflate using a call-back interface
|
||||||
* Copyright (C) 1995-2009 Mark Adler
|
* Copyright (C) 1995-2011 Mark Adler
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -42,10 +42,19 @@ int stream_size;
|
|||||||
return Z_STREAM_ERROR;
|
return Z_STREAM_ERROR;
|
||||||
strm->msg = Z_NULL; /* in case we return an error */
|
strm->msg = Z_NULL; /* in case we return an error */
|
||||||
if (strm->zalloc == (alloc_func)0) {
|
if (strm->zalloc == (alloc_func)0) {
|
||||||
|
#ifdef Z_SOLO
|
||||||
|
return Z_STREAM_ERROR;
|
||||||
|
#else
|
||||||
strm->zalloc = zcalloc;
|
strm->zalloc = zcalloc;
|
||||||
strm->opaque = (voidpf)0;
|
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,
|
state = (struct inflate_state FAR *)ZALLOC(strm, 1,
|
||||||
sizeof(struct inflate_state));
|
sizeof(struct inflate_state));
|
||||||
if (state == Z_NULL) return Z_MEM_ERROR;
|
if (state == Z_NULL) return Z_MEM_ERROR;
|
||||||
@@ -394,7 +403,6 @@ void FAR *out_desc;
|
|||||||
PULLBYTE();
|
PULLBYTE();
|
||||||
}
|
}
|
||||||
if (here.val < 16) {
|
if (here.val < 16) {
|
||||||
NEEDBITS(here.bits);
|
|
||||||
DROPBITS(here.bits);
|
DROPBITS(here.bits);
|
||||||
state->lens[state->have++] = here.val;
|
state->lens[state->have++] = here.val;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* inffast.c -- fast decoding
|
/* inffast.c -- fast decoding
|
||||||
* Copyright (C) 1995-2008 Mark Adler
|
* Copyright (C) 1995-2008, 2010 Mark Adler
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
requires strm->avail_out >= 258 for each loop to avoid checking for
|
requires strm->avail_out >= 258 for each loop to avoid checking for
|
||||||
output space.
|
output space.
|
||||||
*/
|
*/
|
||||||
void inflate_fast(strm, start)
|
void ZLIB_INTERNAL inflate_fast(strm, start)
|
||||||
z_streamp strm;
|
z_streamp strm;
|
||||||
unsigned start; /* inflate()'s starting value for strm->avail_out */
|
unsigned start; /* inflate()'s starting value for strm->avail_out */
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* inffast.h -- header to use inffast.c
|
/* inffast.h -- header to use inffast.c
|
||||||
* Copyright (C) 1995-2003 Mark Adler
|
* Copyright (C) 1995-2003, 2010 Mark Adler
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -8,4 +8,4 @@
|
|||||||
subject to change. Applications should only use zlib.h.
|
subject to change. Applications should only use zlib.h.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void inflate_fast OF((z_streamp strm, unsigned start));
|
void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start));
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
* Generated automatically by makefixed().
|
* Generated automatically by makefixed().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* WARNING: this file should *not* be used by applications. It
|
/* WARNING: this file should *not* be used by applications.
|
||||||
is part of the implementation of the compression library and
|
It is part of the implementation of this library and is
|
||||||
is subject to change. Applications should only use zlib.h.
|
subject to change. Applications should only use zlib.h.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const code lenfix[512] = {
|
static const code lenfix[512] = {
|
||||||
|
|||||||
90
inflate.c
90
inflate.c
@@ -1,5 +1,5 @@
|
|||||||
/* inflate.c -- zlib decompression
|
/* inflate.c -- zlib decompression
|
||||||
* Copyright (C) 1995-2010 Mark Adler
|
* Copyright (C) 1995-2012 Mark Adler
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* 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,
|
local unsigned syncsearch OF((unsigned FAR *have, unsigned char FAR *buf,
|
||||||
unsigned len));
|
unsigned len));
|
||||||
|
|
||||||
int ZEXPORT inflateReset(strm)
|
int ZEXPORT inflateResetKeep(strm)
|
||||||
z_streamp strm;
|
z_streamp strm;
|
||||||
{
|
{
|
||||||
struct inflate_state FAR *state;
|
struct inflate_state FAR *state;
|
||||||
@@ -109,15 +109,13 @@ z_streamp strm;
|
|||||||
state = (struct inflate_state FAR *)strm->state;
|
state = (struct inflate_state FAR *)strm->state;
|
||||||
strm->total_in = strm->total_out = state->total = 0;
|
strm->total_in = strm->total_out = state->total = 0;
|
||||||
strm->msg = Z_NULL;
|
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->mode = HEAD;
|
||||||
state->last = 0;
|
state->last = 0;
|
||||||
state->havedict = 0;
|
state->havedict = 0;
|
||||||
state->dmax = 32768U;
|
state->dmax = 32768U;
|
||||||
state->head = Z_NULL;
|
state->head = Z_NULL;
|
||||||
state->wsize = 0;
|
|
||||||
state->whave = 0;
|
|
||||||
state->wnext = 0;
|
|
||||||
state->hold = 0;
|
state->hold = 0;
|
||||||
state->bits = 0;
|
state->bits = 0;
|
||||||
state->lencode = state->distcode = state->next = state->codes;
|
state->lencode = state->distcode = state->next = state->codes;
|
||||||
@@ -127,6 +125,19 @@ z_streamp strm;
|
|||||||
return Z_OK;
|
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)
|
int ZEXPORT inflateReset2(strm, windowBits)
|
||||||
z_streamp strm;
|
z_streamp strm;
|
||||||
int windowBits;
|
int windowBits;
|
||||||
@@ -180,10 +191,19 @@ int stream_size;
|
|||||||
if (strm == Z_NULL) return Z_STREAM_ERROR;
|
if (strm == Z_NULL) return Z_STREAM_ERROR;
|
||||||
strm->msg = Z_NULL; /* in case we return an error */
|
strm->msg = Z_NULL; /* in case we return an error */
|
||||||
if (strm->zalloc == (alloc_func)0) {
|
if (strm->zalloc == (alloc_func)0) {
|
||||||
|
#ifdef Z_SOLO
|
||||||
|
return Z_STREAM_ERROR;
|
||||||
|
#else
|
||||||
strm->zalloc = zcalloc;
|
strm->zalloc = zcalloc;
|
||||||
strm->opaque = (voidpf)0;
|
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 *)
|
state = (struct inflate_state FAR *)
|
||||||
ZALLOC(strm, 1, sizeof(struct inflate_state));
|
ZALLOC(strm, 1, sizeof(struct inflate_state));
|
||||||
if (state == Z_NULL) return Z_MEM_ERROR;
|
if (state == Z_NULL) return Z_MEM_ERROR;
|
||||||
@@ -321,8 +341,8 @@ void makefixed()
|
|||||||
low = 0;
|
low = 0;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if ((low % 7) == 0) printf("\n ");
|
if ((low % 7) == 0) printf("\n ");
|
||||||
printf("{%u,%u,%d}", state.lencode[low].op, state.lencode[low].bits,
|
printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op,
|
||||||
state.lencode[low].val);
|
state.lencode[low].bits, state.lencode[low].val);
|
||||||
if (++low == size) break;
|
if (++low == size) break;
|
||||||
putchar(',');
|
putchar(',');
|
||||||
}
|
}
|
||||||
@@ -499,11 +519,6 @@ unsigned out;
|
|||||||
bits -= bits & 7; \
|
bits -= bits & 7; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/* Reverse the bytes in a 32-bit value */
|
|
||||||
#define REVERSE(q) \
|
|
||||||
((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \
|
|
||||||
(((q) & 0xff00) << 8) + (((q) & 0xff) << 24))
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
inflate() uses a state machine to process as much input data and generate as
|
inflate() uses a state machine to process as much input data and generate as
|
||||||
much output data as possible before returning. The state machine is
|
much output data as possible before returning. The state machine is
|
||||||
@@ -797,7 +812,7 @@ int flush;
|
|||||||
#endif
|
#endif
|
||||||
case DICTID:
|
case DICTID:
|
||||||
NEEDBITS(32);
|
NEEDBITS(32);
|
||||||
strm->adler = state->check = REVERSE(hold);
|
strm->adler = state->check = ZSWAP32(hold);
|
||||||
INITBITS();
|
INITBITS();
|
||||||
state->mode = DICT;
|
state->mode = DICT;
|
||||||
case DICT:
|
case DICT:
|
||||||
@@ -925,7 +940,6 @@ int flush;
|
|||||||
PULLBYTE();
|
PULLBYTE();
|
||||||
}
|
}
|
||||||
if (here.val < 16) {
|
if (here.val < 16) {
|
||||||
NEEDBITS(here.bits);
|
|
||||||
DROPBITS(here.bits);
|
DROPBITS(here.bits);
|
||||||
state->lens[state->have++] = here.val;
|
state->lens[state->have++] = here.val;
|
||||||
}
|
}
|
||||||
@@ -1170,7 +1184,7 @@ int flush;
|
|||||||
#ifdef GUNZIP
|
#ifdef GUNZIP
|
||||||
state->flags ? hold :
|
state->flags ? hold :
|
||||||
#endif
|
#endif
|
||||||
REVERSE(hold)) != state->check) {
|
ZSWAP32(hold)) != state->check) {
|
||||||
strm->msg = (char *)"incorrect data check";
|
strm->msg = (char *)"incorrect data check";
|
||||||
state->mode = BAD;
|
state->mode = BAD;
|
||||||
break;
|
break;
|
||||||
@@ -1214,7 +1228,8 @@ int flush;
|
|||||||
*/
|
*/
|
||||||
inf_leave:
|
inf_leave:
|
||||||
RESTORE();
|
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)) {
|
if (updatewindow(strm, out)) {
|
||||||
state->mode = MEM;
|
state->mode = MEM;
|
||||||
return Z_MEM_ERROR;
|
return Z_MEM_ERROR;
|
||||||
@@ -1255,7 +1270,10 @@ const Bytef *dictionary;
|
|||||||
uInt dictLength;
|
uInt dictLength;
|
||||||
{
|
{
|
||||||
struct inflate_state FAR *state;
|
struct inflate_state FAR *state;
|
||||||
unsigned long id;
|
unsigned long dictid;
|
||||||
|
unsigned char *next;
|
||||||
|
unsigned avail;
|
||||||
|
int ret;
|
||||||
|
|
||||||
/* check state */
|
/* check state */
|
||||||
if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
|
if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
|
||||||
@@ -1263,29 +1281,27 @@ uInt dictLength;
|
|||||||
if (state->wrap != 0 && state->mode != DICT)
|
if (state->wrap != 0 && state->mode != DICT)
|
||||||
return Z_STREAM_ERROR;
|
return Z_STREAM_ERROR;
|
||||||
|
|
||||||
/* check for correct dictionary id */
|
/* check for correct dictionary identifier */
|
||||||
if (state->mode == DICT) {
|
if (state->mode == DICT) {
|
||||||
id = adler32(0L, Z_NULL, 0);
|
dictid = adler32(0L, Z_NULL, 0);
|
||||||
id = adler32(id, dictionary, dictLength);
|
dictid = adler32(dictid, dictionary, dictLength);
|
||||||
if (id != state->check)
|
if (dictid != state->check)
|
||||||
return Z_DATA_ERROR;
|
return Z_DATA_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* copy dictionary to window */
|
/* copy dictionary to window using updatewindow(), which will amend the
|
||||||
if (updatewindow(strm, strm->avail_out)) {
|
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;
|
state->mode = MEM;
|
||||||
return Z_MEM_ERROR;
|
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;
|
state->havedict = 1;
|
||||||
Tracev((stderr, "inflate: dictionary set\n"));
|
Tracev((stderr, "inflate: dictionary set\n"));
|
||||||
return Z_OK;
|
return Z_OK;
|
||||||
@@ -1433,8 +1449,8 @@ z_streamp source;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* copy state */
|
/* copy state */
|
||||||
zmemcpy(dest, source, sizeof(z_stream));
|
zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream));
|
||||||
zmemcpy(copy, state, sizeof(struct inflate_state));
|
zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state));
|
||||||
if (state->lencode >= state->codes &&
|
if (state->lencode >= state->codes &&
|
||||||
state->lencode <= state->codes + ENOUGH - 1) {
|
state->lencode <= state->codes + ENOUGH - 1) {
|
||||||
copy->lencode = copy->codes + (state->lencode - state->codes);
|
copy->lencode = copy->codes + (state->lencode - state->codes);
|
||||||
|
|||||||
48
inftrees.c
48
inftrees.c
@@ -1,5 +1,5 @@
|
|||||||
/* inftrees.c -- generate Huffman trees for efficient decoding
|
/* inftrees.c -- generate Huffman trees for efficient decoding
|
||||||
* Copyright (C) 1995-2010 Mark Adler
|
* Copyright (C) 1995-2012 Mark Adler
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
#define MAXBITS 15
|
#define MAXBITS 15
|
||||||
|
|
||||||
const char inflate_copyright[] =
|
const char inflate_copyright[] =
|
||||||
" inflate 1.2.4.1 Copyright 1995-2010 Mark Adler ";
|
" inflate 1.2.7 Copyright 1995-2012 Mark Adler ";
|
||||||
/*
|
/*
|
||||||
If you use the zlib library in a product, an acknowledgment is welcome
|
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
|
in the documentation of your product. If for some reason you cannot
|
||||||
@@ -29,7 +29,7 @@ const char inflate_copyright[] =
|
|||||||
table index bits. It will differ if the request is greater than the
|
table index bits. It will differ if the request is greater than the
|
||||||
longest code or if it is less than the shortest code.
|
longest code or if it is less than the shortest code.
|
||||||
*/
|
*/
|
||||||
int inflate_table(type, lens, codes, table, bits, work)
|
int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work)
|
||||||
codetype type;
|
codetype type;
|
||||||
unsigned short FAR *lens;
|
unsigned short FAR *lens;
|
||||||
unsigned codes;
|
unsigned codes;
|
||||||
@@ -62,7 +62,7 @@ unsigned short FAR *work;
|
|||||||
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
|
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 */
|
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,
|
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, 67, 206};
|
19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 78, 68};
|
||||||
static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
|
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,
|
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,
|
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
|
||||||
@@ -289,38 +289,14 @@ unsigned short FAR *work;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/* fill in remaining table entry if code is incomplete (guaranteed to have
|
||||||
Fill in rest of table for incomplete codes. This loop is similar to the
|
at most one remaining entry, since if the code is incomplete, the
|
||||||
loop above in incrementing huff for table indices. It is assumed that
|
maximum code length that was allowed to get this far is one bit) */
|
||||||
len is equal to curr + drop, so there is no loop needed to increment
|
if (huff != 0) {
|
||||||
through high index bits. When the current sub-table is filled, the loop
|
here.op = (unsigned char)64; /* invalid code marker */
|
||||||
drops back to the root table to fill in any remaining entries there.
|
here.bits = (unsigned char)(len - drop);
|
||||||
*/
|
here.val = (unsigned short)0;
|
||||||
here.op = (unsigned char)64; /* invalid code marker */
|
next[huff] = here;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set return parameters */
|
/* set return parameters */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* inftrees.h -- header to use inftrees.c
|
/* inftrees.h -- header to use inftrees.c
|
||||||
* Copyright (C) 1995-2005 Mark Adler
|
* Copyright (C) 1995-2005, 2010 Mark Adler
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -57,6 +57,6 @@ typedef enum {
|
|||||||
DISTS
|
DISTS
|
||||||
} codetype;
|
} codetype;
|
||||||
|
|
||||||
extern int inflate_table OF((codetype type, unsigned short FAR *lens,
|
int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens,
|
||||||
unsigned codes, code FAR * FAR *table,
|
unsigned codes, code FAR * FAR *table,
|
||||||
unsigned FAR *bits, unsigned short FAR *work));
|
unsigned FAR *bits, unsigned short FAR *work));
|
||||||
|
|||||||
407
make_vms.com
407
make_vms.com
@@ -3,7 +3,7 @@ $! Martin P.J. Zinser
|
|||||||
$!
|
$!
|
||||||
$! In case of problems with the install you might contact me at
|
$! In case of problems with the install you might contact me at
|
||||||
$! zinser@zinser.no-ip.info(preferred) or
|
$! zinser@zinser.no-ip.info(preferred) or
|
||||||
$! zinser@sysdev.deutsche-boerse.com (work)
|
$! martin.zinser@eurexchange.com (work)
|
||||||
$!
|
$!
|
||||||
$! Make procedure history for Zlib
|
$! Make procedure history for Zlib
|
||||||
$!
|
$!
|
||||||
@@ -14,9 +14,16 @@ $! 0.02 20061008 Adapt to new Makefile.in
|
|||||||
$! 0.03 20091224 Add support for large file check
|
$! 0.03 20091224 Add support for large file check
|
||||||
$! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite
|
$! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite
|
||||||
$! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in
|
$! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in
|
||||||
|
$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new exmples
|
||||||
|
$! subdir path, update module search in makefile.in
|
||||||
|
$! 0.07 20120115 Triggered by work done by Alexey Chupahin completly redesigned
|
||||||
|
$! shared image creation
|
||||||
|
$! 0.08 20120219 Make it work on VAX again, pre-load missing symbols to shared
|
||||||
|
$! image
|
||||||
|
$! 0.09 20120305 SMS. P1 sets builder ("MMK", "MMS", " " (built-in)).
|
||||||
|
$! "" -> automatic, preference: MMK, MMS, built-in.
|
||||||
$!
|
$!
|
||||||
$ on error then goto err_exit
|
$ on error then goto err_exit
|
||||||
$ set proc/parse=ext
|
|
||||||
$!
|
$!
|
||||||
$ true = 1
|
$ true = 1
|
||||||
$ false = 0
|
$ false = 0
|
||||||
@@ -32,31 +39,43 @@ $ s_case = False
|
|||||||
$!
|
$!
|
||||||
$! Setup variables holding "config" information
|
$! Setup variables holding "config" information
|
||||||
$!
|
$!
|
||||||
$ Make = ""
|
$ Make = "''p1'"
|
||||||
$ name = "Zlib"
|
$ name = "Zlib"
|
||||||
$ version = "?.?.?"
|
$ version = "?.?.?"
|
||||||
$ v_string = "ZLIB_VERSION"
|
$ v_string = "ZLIB_VERSION"
|
||||||
$ v_file = "zlib.h"
|
$ v_file = "zlib.h"
|
||||||
$ ccopt = ""
|
$ ccopt = "/include = []"
|
||||||
$ lopts = ""
|
$ lopts = ""
|
||||||
$ dnsrl = ""
|
$ dnsrl = ""
|
||||||
$ aconf_in_file = "zconf.h.in#zconf.h_in"
|
$ aconf_in_file = "zconf.h.in#zconf.h_in#zconf_h.in"
|
||||||
$ conf_check_string = ""
|
$ conf_check_string = ""
|
||||||
$ linkonly = false
|
$ linkonly = false
|
||||||
$ optfile = name + ".opt"
|
$ optfile = name + ".opt"
|
||||||
|
$ mapfile = name + ".map"
|
||||||
$ libdefs = ""
|
$ libdefs = ""
|
||||||
|
$ vax = f$getsyi("HW_MODEL").lt.1024
|
||||||
$ axp = f$getsyi("HW_MODEL").ge.1024 .and. f$getsyi("HW_MODEL").lt.4096
|
$ axp = f$getsyi("HW_MODEL").ge.1024 .and. f$getsyi("HW_MODEL").lt.4096
|
||||||
|
$ ia64 = f$getsyi("HW_MODEL").ge.4096
|
||||||
$!
|
$!
|
||||||
$ whoami = f$parse(f$enviornment("Procedure"),,,,"NO_CONCEAL")
|
$! 2012-03-05 SMS.
|
||||||
|
$! Why is this needed? And if it is needed, why not simply ".not. vax"?
|
||||||
|
$!
|
||||||
|
$!!! if axp .or. ia64 then set proc/parse=extended
|
||||||
|
$!
|
||||||
|
$ whoami = f$parse(f$environment("Procedure"),,,,"NO_CONCEAL")
|
||||||
$ mydef = F$parse(whoami,,,"DEVICE")
|
$ mydef = F$parse(whoami,,,"DEVICE")
|
||||||
$ mydir = f$parse(whoami,,,"DIRECTORY") - "]["
|
$ mydir = f$parse(whoami,,,"DIRECTORY") - "]["
|
||||||
$ myproc = f$parse(whoami,,,"Name") + f$parse(whoami,,,"type")
|
$ myproc = f$parse(whoami,,,"Name") + f$parse(whoami,,,"type")
|
||||||
$!
|
$!
|
||||||
$! Check for MMK/MMS
|
$! Check for MMK/MMS
|
||||||
$!
|
$!
|
||||||
$ If F$Search ("Sys$System:MMS.EXE") .nes. "" Then Make = "MMS"
|
$ if (Make .eqs. "")
|
||||||
$ If F$Type (MMK) .eqs. "STRING" Then Make = "MMK"
|
$ then
|
||||||
$!
|
$ If F$Search ("Sys$System:MMS.EXE") .nes. "" Then Make = "MMS"
|
||||||
|
$ If F$Type (MMK) .eqs. "STRING" Then Make = "MMK"
|
||||||
|
$ else
|
||||||
|
$ Make = f$edit( Make, "trim")
|
||||||
|
$ endif
|
||||||
$!
|
$!
|
||||||
$ gosub find_version
|
$ gosub find_version
|
||||||
$!
|
$!
|
||||||
@@ -69,6 +88,7 @@ $! Look for the compiler used
|
|||||||
$!
|
$!
|
||||||
$ gosub check_compiler
|
$ gosub check_compiler
|
||||||
$ close topt
|
$ close topt
|
||||||
|
$ close optf
|
||||||
$!
|
$!
|
||||||
$ if its_decc
|
$ if its_decc
|
||||||
$ then
|
$ then
|
||||||
@@ -83,6 +103,15 @@ $ ccopt = "/decc" + ccopt
|
|||||||
$ define sys decc$library_include:
|
$ define sys decc$library_include:
|
||||||
$ endif
|
$ endif
|
||||||
$ endif
|
$ endif
|
||||||
|
$!
|
||||||
|
$! 2012-03-05 SMS.
|
||||||
|
$! Why /NAMES = AS_IS? Why not simply ".not. vax"? And why not on VAX?
|
||||||
|
$!
|
||||||
|
$ if axp .or. ia64
|
||||||
|
$ then
|
||||||
|
$ ccopt = ccopt + "/name=as_is/opt=(inline=speed)"
|
||||||
|
$ s_case = true
|
||||||
|
$ endif
|
||||||
$ endif
|
$ endif
|
||||||
$ if its_vaxc .or. its_gnuc
|
$ if its_vaxc .or. its_gnuc
|
||||||
$ then
|
$ then
|
||||||
@@ -122,15 +151,20 @@ $ gosub check_config
|
|||||||
$ endif
|
$ endif
|
||||||
$ goto aconf_loop
|
$ goto aconf_loop
|
||||||
$ACONF_EXIT:
|
$ACONF_EXIT:
|
||||||
|
$ write aconf ""
|
||||||
|
$ write aconf "/* VMS specifics added by make_vms.com: */"
|
||||||
$ write aconf "#define VMS 1"
|
$ write aconf "#define VMS 1"
|
||||||
$ write aconf "#include <unistd.h>"
|
$ write aconf "#include <unistd.h>"
|
||||||
$ write aconf "#include <unixio.h>"
|
$ write aconf "#include <unixio.h>"
|
||||||
$ write aconf "#ifdef _LARGEFILE"
|
$ write aconf "#ifdef _LARGEFILE"
|
||||||
$ write aconf "#define off64_t __off64_t"
|
$ write aconf "# define off64_t __off64_t"
|
||||||
$ write aconf "#define fopen64 fopen"
|
$ write aconf "# define fopen64 fopen"
|
||||||
$ write aconf "#define fseeko64 fseeko"
|
$ write aconf "# define fseeko64 fseeko"
|
||||||
$ write aconf "#define lseek64 lseek"
|
$ write aconf "# define lseek64 lseek"
|
||||||
$ write aconf "#define ftello64 ftell"
|
$ write aconf "# define ftello64 ftell"
|
||||||
|
$ write aconf "#endif"
|
||||||
|
$ write aconf "#if !defined( __VAX) && (__CRTL_VER >= 70312000)"
|
||||||
|
$ write aconf "# define HAVE_VSNPRINTF"
|
||||||
$ write aconf "#endif"
|
$ write aconf "#endif"
|
||||||
$ close aconf_in
|
$ close aconf_in
|
||||||
$ close aconf
|
$ close aconf
|
||||||
@@ -139,8 +173,9 @@ $! Build the thing plain or with mms
|
|||||||
$!
|
$!
|
||||||
$ write sys$output "Compiling Zlib sources ..."
|
$ write sys$output "Compiling Zlib sources ..."
|
||||||
$ if make.eqs.""
|
$ if make.eqs.""
|
||||||
$ then
|
$ then
|
||||||
$ dele example.obj;*,minigzip.obj;*
|
$ if (f$search( "example.obj;*") .nes. "") then delete example.obj;*
|
||||||
|
$ if (f$search( "minigzip.obj;*") .nes. "") then delete minigzip.obj;*
|
||||||
$ CALL MAKE adler32.OBJ "CC ''CCOPT' adler32" -
|
$ CALL MAKE adler32.OBJ "CC ''CCOPT' adler32" -
|
||||||
adler32.c zlib.h zconf.h
|
adler32.c zlib.h zconf.h
|
||||||
$ CALL MAKE compress.OBJ "CC ''CCOPT' compress" -
|
$ CALL MAKE compress.OBJ "CC ''CCOPT' compress" -
|
||||||
@@ -174,41 +209,34 @@ $ CALL MAKE zutil.OBJ "CC ''CCOPT' zutil" -
|
|||||||
$ write sys$output "Building Zlib ..."
|
$ write sys$output "Building Zlib ..."
|
||||||
$ CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ
|
$ CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ
|
||||||
$ write sys$output "Building example..."
|
$ write sys$output "Building example..."
|
||||||
$ CALL MAKE example.OBJ "CC ''CCOPT' example" -
|
$ CALL MAKE example.OBJ "CC ''CCOPT' [.test]example" -
|
||||||
example.c zlib.h zconf.h
|
[.test]example.c zlib.h zconf.h
|
||||||
$ call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb
|
$ call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb
|
||||||
$ if f$search("x11vms:xvmsutils.olb") .nes. ""
|
$ write sys$output "Building minigzip..."
|
||||||
$ then
|
$ CALL MAKE minigzip.OBJ "CC ''CCOPT' [.test]minigzip" -
|
||||||
$ write sys$output "Building minigzip..."
|
[.test]minigzip.c zlib.h zconf.h
|
||||||
$ CALL MAKE minigzip.OBJ "CC ''CCOPT' minigzip" -
|
$ call make minigzip.exe -
|
||||||
minigzip.c zlib.h zconf.h
|
"LINK minigzip,libz.olb/lib" -
|
||||||
$ call make minigzip.exe -
|
minigzip.obj libz.olb
|
||||||
"LINK minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib" -
|
$ else
|
||||||
minigzip.obj libz.olb
|
|
||||||
$ endif
|
|
||||||
$ else
|
|
||||||
$ gosub crea_mms
|
$ gosub crea_mms
|
||||||
$ write sys$output "Make ''name' ''version' with ''Make' "
|
$ write sys$output "Make ''name' ''version' with ''Make' "
|
||||||
$ 'make'
|
$ 'make'
|
||||||
$ endif
|
|
||||||
$!
|
|
||||||
$! Alpha gets a shareable image
|
|
||||||
$!
|
|
||||||
$ If axp
|
|
||||||
$ Then
|
|
||||||
$ gosub crea_olist
|
|
||||||
$ write sys$output "Creating libzshr.exe"
|
|
||||||
$ call anal_obj_axp modules.opt _link.opt
|
|
||||||
$ if s_case
|
|
||||||
$ then
|
|
||||||
$ open/append optf modules.opt
|
|
||||||
$ write optf "case_sensitive=YES"
|
|
||||||
$ close optf
|
|
||||||
$ endif
|
|
||||||
$ LINK_'lopts'/SHARE=libzshr.exe modules.opt/opt,_link.opt/opt
|
|
||||||
$ endif
|
$ endif
|
||||||
|
$!
|
||||||
|
$! Create shareable image
|
||||||
|
$!
|
||||||
|
$ gosub crea_olist
|
||||||
|
$ write sys$output "Creating libzshr.exe"
|
||||||
|
$ call map_2_shopt 'mapfile' 'optfile'
|
||||||
|
$ LINK_'lopts'/SHARE=libzshr.exe modules.opt/opt,'optfile'/opt
|
||||||
$ write sys$output "Zlib build completed"
|
$ write sys$output "Zlib build completed"
|
||||||
|
$ delete/nolog tmp.opt;*
|
||||||
$ exit
|
$ exit
|
||||||
|
$AMISS_ERR:
|
||||||
|
$ write sys$output "No source for config.hin found."
|
||||||
|
$ write sys$output "Tried any of ''aconf_in_file'"
|
||||||
|
$ goto err_exit
|
||||||
$CC_ERR:
|
$CC_ERR:
|
||||||
$ write sys$output "C compiler required to build ''name'"
|
$ write sys$output "C compiler required to build ''name'"
|
||||||
$ goto err_exit
|
$ goto err_exit
|
||||||
@@ -216,7 +244,6 @@ $ERR_EXIT:
|
|||||||
$ set message/facil/ident/sever/text
|
$ set message/facil/ident/sever/text
|
||||||
$ close/nolog optf
|
$ close/nolog optf
|
||||||
$ close/nolog topt
|
$ close/nolog topt
|
||||||
$ close/nolog conf_hin
|
|
||||||
$ close/nolog aconf_in
|
$ close/nolog aconf_in
|
||||||
$ close/nolog aconf
|
$ close/nolog aconf
|
||||||
$ close/nolog out
|
$ close/nolog out
|
||||||
@@ -397,7 +424,7 @@ $ copy sys$input: out
|
|||||||
$ deck
|
$ deck
|
||||||
# descrip.mms: MMS description file for building zlib on VMS
|
# descrip.mms: MMS description file for building zlib on VMS
|
||||||
# written by Martin P.J. Zinser
|
# written by Martin P.J. Zinser
|
||||||
# <zinser@zinser.no-ip.info or zinser@sysdev.deutsche-boerse.com>
|
# <zinser@zinser.no-ip.info or martin.zinser@eurexchange.com>
|
||||||
|
|
||||||
OBJS = adler32.obj, compress.obj, crc32.obj, gzclose.obj, gzlib.obj\
|
OBJS = adler32.obj, compress.obj, crc32.obj, gzclose.obj, gzlib.obj\
|
||||||
gzread.obj, gzwrite.obj, uncompr.obj, infback.obj\
|
gzread.obj, gzwrite.obj, uncompr.obj, infback.obj\
|
||||||
@@ -407,10 +434,9 @@ OBJS = adler32.obj, compress.obj, crc32.obj, gzclose.obj, gzlib.obj\
|
|||||||
$ eod
|
$ eod
|
||||||
$ write out "CFLAGS=", ccopt
|
$ write out "CFLAGS=", ccopt
|
||||||
$ write out "LOPTS=", lopts
|
$ write out "LOPTS=", lopts
|
||||||
|
$ write out "all : example.exe minigzip.exe libz.olb"
|
||||||
$ copy sys$input: out
|
$ copy sys$input: out
|
||||||
$ deck
|
$ deck
|
||||||
|
|
||||||
all : example.exe minigzip.exe libz.olb
|
|
||||||
@ write sys$output " Example applications available"
|
@ write sys$output " Example applications available"
|
||||||
|
|
||||||
libz.olb : libz.olb($(OBJS))
|
libz.olb : libz.olb($(OBJS))
|
||||||
@@ -420,7 +446,7 @@ example.exe : example.obj libz.olb
|
|||||||
link $(LOPTS) example,libz.olb/lib
|
link $(LOPTS) example,libz.olb/lib
|
||||||
|
|
||||||
minigzip.exe : minigzip.obj libz.olb
|
minigzip.exe : minigzip.obj libz.olb
|
||||||
link $(LOPTS) minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib
|
link $(LOPTS) minigzip,libz.olb/lib
|
||||||
|
|
||||||
clean :
|
clean :
|
||||||
delete *.obj;*,libz.olb;*,*.opt;*,*.exe;*
|
delete *.obj;*,libz.olb;*,*.opt;*,*.exe;*
|
||||||
@@ -431,7 +457,7 @@ adler32.obj : adler32.c zutil.h zlib.h zconf.h
|
|||||||
compress.obj : compress.c zlib.h zconf.h
|
compress.obj : compress.c zlib.h zconf.h
|
||||||
crc32.obj : crc32.c zutil.h zlib.h zconf.h
|
crc32.obj : crc32.c zutil.h zlib.h zconf.h
|
||||||
deflate.obj : deflate.c deflate.h zutil.h zlib.h zconf.h
|
deflate.obj : deflate.c deflate.h zutil.h zlib.h zconf.h
|
||||||
example.obj : example.c zlib.h zconf.h
|
example.obj : [.test]example.c zlib.h zconf.h
|
||||||
gzclose.obj : gzclose.c zutil.h zlib.h zconf.h
|
gzclose.obj : gzclose.c zutil.h zlib.h zconf.h
|
||||||
gzlib.obj : gzlib.c zutil.h zlib.h zconf.h
|
gzlib.obj : gzlib.c zutil.h zlib.h zconf.h
|
||||||
gzread.obj : gzread.c zutil.h zlib.h zconf.h
|
gzread.obj : gzread.c zutil.h zlib.h zconf.h
|
||||||
@@ -439,7 +465,7 @@ gzwrite.obj : gzwrite.c zutil.h zlib.h zconf.h
|
|||||||
inffast.obj : inffast.c zutil.h zlib.h zconf.h inftrees.h inffast.h
|
inffast.obj : inffast.c zutil.h zlib.h zconf.h inftrees.h inffast.h
|
||||||
inflate.obj : inflate.c zutil.h zlib.h zconf.h
|
inflate.obj : inflate.c zutil.h zlib.h zconf.h
|
||||||
inftrees.obj : inftrees.c zutil.h zlib.h zconf.h inftrees.h
|
inftrees.obj : inftrees.c zutil.h zlib.h zconf.h inftrees.h
|
||||||
minigzip.obj : minigzip.c zlib.h zconf.h
|
minigzip.obj : [.test]minigzip.c zlib.h zconf.h
|
||||||
trees.obj : trees.c deflate.h zutil.h zlib.h zconf.h
|
trees.obj : trees.c deflate.h zutil.h zlib.h zconf.h
|
||||||
uncompr.obj : uncompr.c zlib.h zconf.h
|
uncompr.obj : uncompr.c zlib.h zconf.h
|
||||||
zutil.obj : zutil.c zutil.h zlib.h zconf.h
|
zutil.obj : zutil.c zutil.h zlib.h zconf.h
|
||||||
@@ -455,13 +481,18 @@ $!
|
|||||||
$CREA_OLIST:
|
$CREA_OLIST:
|
||||||
$ open/read min makefile.in
|
$ open/read min makefile.in
|
||||||
$ open/write mod modules.opt
|
$ open/write mod modules.opt
|
||||||
$ src_check = "OBJC ="
|
$ src_check_list = "OBJZ =#OBJG ="
|
||||||
$MRLOOP:
|
$MRLOOP:
|
||||||
$ read/end=mrdone min rec
|
$ read/end=mrdone min rec
|
||||||
$ if (f$extract(0,6,rec) .nes. src_check) then goto mrloop
|
$ i = 0
|
||||||
|
$SRC_CHECK_LOOP:
|
||||||
|
$ src_check = f$element(i, "#", src_check_list)
|
||||||
|
$ i = i+1
|
||||||
|
$ if src_check .eqs. "#" then goto mrloop
|
||||||
|
$ if (f$extract(0,6,rec) .nes. src_check) then goto src_check_loop
|
||||||
$ rec = rec - src_check
|
$ rec = rec - src_check
|
||||||
$ gosub extra_filnam
|
$ gosub extra_filnam
|
||||||
$ if (f$element(1,"\",rec) .eqs. "\") then goto mrdone
|
$ if (f$element(1,"\",rec) .eqs. "\") then goto mrloop
|
||||||
$MRSLOOP:
|
$MRSLOOP:
|
||||||
$ read/end=mrdone min rec
|
$ read/end=mrdone min rec
|
||||||
$ gosub extra_filnam
|
$ gosub extra_filnam
|
||||||
@@ -672,124 +703,6 @@ $ endif
|
|||||||
$ return
|
$ return
|
||||||
$!------------------------------------------------------------------------------
|
$!------------------------------------------------------------------------------
|
||||||
$!
|
$!
|
||||||
$! Analyze Object files for OpenVMS AXP to extract Procedure and Data
|
|
||||||
$! information to build a symbol vector for a shareable image
|
|
||||||
$! All the "brains" of this logic was suggested by Hartmut Becker
|
|
||||||
$! (Hartmut.Becker@compaq.com). All the bugs were introduced by me
|
|
||||||
$! (zinser@zinser.no-ip.info), so if you do have problem reports please do not
|
|
||||||
$! bother Hartmut/HP, but get in touch with me
|
|
||||||
$!
|
|
||||||
$! Version history
|
|
||||||
$! 0.01 20040406 Skip over shareable images in option file
|
|
||||||
$! 0.02 20041109 Fix option file for shareable images with case_sensitive=YES
|
|
||||||
$! 0.03 20050107 Skip over Identification labels in option file
|
|
||||||
$! 0.04 20060117 Add uppercase alias to code compiled with /name=as_is
|
|
||||||
$!
|
|
||||||
$ ANAL_OBJ_AXP: Subroutine
|
|
||||||
$ V = 'F$Verify(0)
|
|
||||||
$ SAY := "WRITE_ SYS$OUTPUT"
|
|
||||||
$
|
|
||||||
$ IF F$SEARCH("''P1'") .EQS. ""
|
|
||||||
$ THEN
|
|
||||||
$ SAY "ANAL_OBJ_AXP-E-NOSUCHFILE: Error, inputfile ''p1' not available"
|
|
||||||
$ goto exit_aa
|
|
||||||
$ ENDIF
|
|
||||||
$ IF "''P2'" .EQS. ""
|
|
||||||
$ THEN
|
|
||||||
$ SAY "ANAL_OBJ_AXP: Error, no output file provided"
|
|
||||||
$ goto exit_aa
|
|
||||||
$ ENDIF
|
|
||||||
$
|
|
||||||
$ open/read in 'p1
|
|
||||||
$ create a.tmp
|
|
||||||
$ open/append atmp a.tmp
|
|
||||||
$ loop:
|
|
||||||
$ read/end=end_loop in line
|
|
||||||
$ if f$locate("/SHARE",f$edit(line,"upcase")) .lt. f$length(line)
|
|
||||||
$ then
|
|
||||||
$ write sys$output "ANAL_SKP_SHR-i-skipshare, ''line'"
|
|
||||||
$ goto loop
|
|
||||||
$ endif
|
|
||||||
$ if f$locate("IDENTIFICATION=",f$edit(line,"upcase")) .lt. f$length(line)
|
|
||||||
$ then
|
|
||||||
$ write sys$output "ANAL_OBJ_AXP-i-ident: Identification ", -
|
|
||||||
f$element(1,"=",line)
|
|
||||||
$ goto loop
|
|
||||||
$ endif
|
|
||||||
$ f= f$search(line)
|
|
||||||
$ if f .eqs. ""
|
|
||||||
$ then
|
|
||||||
$ write sys$output "ANAL_OBJ_AXP-w-nosuchfile, ''line'"
|
|
||||||
$ goto loop
|
|
||||||
$ endif
|
|
||||||
$ define/user sys$output nl:
|
|
||||||
$ define/user sys$error nl:
|
|
||||||
$ anal/obj/gsd 'f /out=x.tmp
|
|
||||||
$ open/read xtmp x.tmp
|
|
||||||
$ XLOOP:
|
|
||||||
$ read/end=end_xloop xtmp xline
|
|
||||||
$ xline = f$edit(xline,"compress")
|
|
||||||
$ write atmp xline
|
|
||||||
$ goto xloop
|
|
||||||
$ END_XLOOP:
|
|
||||||
$ close xtmp
|
|
||||||
$ goto loop
|
|
||||||
$ end_loop:
|
|
||||||
$ close in
|
|
||||||
$ close atmp
|
|
||||||
$ if f$search("a.tmp") .eqs. "" -
|
|
||||||
then $ exit
|
|
||||||
$ ! all global definitions
|
|
||||||
$ search a.tmp "symbol:","EGSY$V_DEF 1","EGSY$V_NORM 1"/out=b.tmp
|
|
||||||
$ ! all procedures
|
|
||||||
$ search b.tmp "EGSY$V_NORM 1"/wind=(0,1) /out=c.tmp
|
|
||||||
$ search c.tmp "symbol:"/out=d.tmp
|
|
||||||
$ define/user sys$output nl:
|
|
||||||
$ edito/edt/command=sys$input d.tmp
|
|
||||||
sub/symbol: "/symbol_vector=(/whole
|
|
||||||
sub/"/=PROCEDURE)/whole
|
|
||||||
exit
|
|
||||||
$ ! all data
|
|
||||||
$ search b.tmp "EGSY$V_DEF 1"/wind=(0,1) /out=e.tmp
|
|
||||||
$ search e.tmp "symbol:"/out=f.tmp
|
|
||||||
$ define/user sys$output nl:
|
|
||||||
$ edito/edt/command=sys$input f.tmp
|
|
||||||
sub/symbol: "/symbol_vector=(/whole
|
|
||||||
sub/"/=DATA)/whole
|
|
||||||
exit
|
|
||||||
$ sort/nodupl d.tmp,f.tmp g.tmp
|
|
||||||
$ open/read raw_vector g.tmp
|
|
||||||
$ open/write case_vector 'p2'
|
|
||||||
$ RAWLOOP:
|
|
||||||
$ read/end=end_rawloop raw_vector raw_element
|
|
||||||
$ write case_vector raw_element
|
|
||||||
$ if f$locate("=PROCEDURE)",raw_element) .lt. f$length(raw_element)
|
|
||||||
$ then
|
|
||||||
$ name = f$element(1,"=",raw_element) - "("
|
|
||||||
$ if f$edit(name,"UPCASE") .nes. name then -
|
|
||||||
write case_vector f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)", -
|
|
||||||
f$edit(name,"UPCASE"), name)
|
|
||||||
$ endif
|
|
||||||
$ if f$locate("=DATA)",raw_element) .lt. f$length(raw_element)
|
|
||||||
$ then
|
|
||||||
$ name = f$element(1,"=",raw_element) - "("
|
|
||||||
$ if f$edit(name,"UPCASE") .nes. name then -
|
|
||||||
write case_vector f$fao(" symbol_vector=(!AS/!AS=DATA)", -
|
|
||||||
f$edit(name,"UPCASE"), name)
|
|
||||||
$ endif
|
|
||||||
$ goto rawloop
|
|
||||||
$ END_RAWLOOP:
|
|
||||||
$ close raw_vector
|
|
||||||
$ close case_vector
|
|
||||||
$ delete a.tmp;*,b.tmp;*,c.tmp;*,d.tmp;*,e.tmp;*,f.tmp;*,g.tmp;*
|
|
||||||
$ if f$search("x.tmp") .nes. "" -
|
|
||||||
then $ delete x.tmp;*
|
|
||||||
$!
|
|
||||||
$ EXIT_AA:
|
|
||||||
$ if V then set verify
|
|
||||||
$ endsubroutine
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$! Write configuration to both permanent and temporary config file
|
$! Write configuration to both permanent and temporary config file
|
||||||
$!
|
$!
|
||||||
$! Version history
|
$! Version history
|
||||||
@@ -802,3 +715,153 @@ $ write confh 'p1'
|
|||||||
$ close confh
|
$ close confh
|
||||||
$ENDSUBROUTINE
|
$ENDSUBROUTINE
|
||||||
$!------------------------------------------------------------------------------
|
$!------------------------------------------------------------------------------
|
||||||
|
$!
|
||||||
|
$! Analyze the project map file and create the symbol vector for a shareable
|
||||||
|
$! image from it
|
||||||
|
$!
|
||||||
|
$! Version history
|
||||||
|
$! 0.01 20120128 First version
|
||||||
|
$! 0.02 20120226 Add pre-load logic
|
||||||
|
$!
|
||||||
|
$ MAP_2_SHOPT: Subroutine
|
||||||
|
$!
|
||||||
|
$ SAY := "WRITE_ SYS$OUTPUT"
|
||||||
|
$!
|
||||||
|
$ IF F$SEARCH("''P1'") .EQS. ""
|
||||||
|
$ THEN
|
||||||
|
$ SAY "MAP_2_SHOPT-E-NOSUCHFILE: Error, inputfile ''p1' not available"
|
||||||
|
$ goto exit_m2s
|
||||||
|
$ ENDIF
|
||||||
|
$ IF "''P2'" .EQS. ""
|
||||||
|
$ THEN
|
||||||
|
$ SAY "MAP_2_SHOPT: Error, no output file provided"
|
||||||
|
$ goto exit_m2s
|
||||||
|
$ ENDIF
|
||||||
|
$!
|
||||||
|
$ module1 = "deflate#deflateEnd#deflateInit_#deflateParams#deflateSetDictionary"
|
||||||
|
$ module2 = "gzclose#gzerror#gzgetc#gzgets#gzopen#gzprintf#gzputc#gzputs#gzread"
|
||||||
|
$ module3 = "gzseek#gztell#inflate#inflateEnd#inflateInit_#inflateSetDictionary"
|
||||||
|
$ module4 = "inflateSync#uncompress#zlibVersion#compress"
|
||||||
|
$ open/read map 'p1
|
||||||
|
$ if axp .or. ia64
|
||||||
|
$ then
|
||||||
|
$ open/write aopt a.opt
|
||||||
|
$ open/write bopt b.opt
|
||||||
|
$ write aopt " CASE_SENSITIVE=YES"
|
||||||
|
$ write bopt "SYMBOL_VECTOR= (-"
|
||||||
|
$ mod_sym_num = 1
|
||||||
|
$ MOD_SYM_LOOP:
|
||||||
|
$ if f$type(module'mod_sym_num') .nes. ""
|
||||||
|
$ then
|
||||||
|
$ mod_in = 0
|
||||||
|
$ MOD_SYM_IN:
|
||||||
|
$ shared_proc = f$element(mod_in, "#", module'mod_sym_num')
|
||||||
|
$ if shared_proc .nes. "#"
|
||||||
|
$ then
|
||||||
|
$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",-
|
||||||
|
f$edit(shared_proc,"upcase"),shared_proc)
|
||||||
|
$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc)
|
||||||
|
$ mod_in = mod_in + 1
|
||||||
|
$ goto mod_sym_in
|
||||||
|
$ endif
|
||||||
|
$ mod_sym_num = mod_sym_num + 1
|
||||||
|
$ goto mod_sym_loop
|
||||||
|
$ endif
|
||||||
|
$MAP_LOOP:
|
||||||
|
$ read/end=map_end map line
|
||||||
|
$ if (f$locate("{",line).lt. f$length(line)) .or. -
|
||||||
|
(f$locate("global:", line) .lt. f$length(line))
|
||||||
|
$ then
|
||||||
|
$ proc = true
|
||||||
|
$ goto map_loop
|
||||||
|
$ endif
|
||||||
|
$ if f$locate("}",line).lt. f$length(line) then proc = false
|
||||||
|
$ if f$locate("local:", line) .lt. f$length(line) then proc = false
|
||||||
|
$ if proc
|
||||||
|
$ then
|
||||||
|
$ shared_proc = f$edit(line,"collapse")
|
||||||
|
$ chop_semi = f$locate(";", shared_proc)
|
||||||
|
$ if chop_semi .lt. f$length(shared_proc) then -
|
||||||
|
shared_proc = f$extract(0, chop_semi, shared_proc)
|
||||||
|
$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",-
|
||||||
|
f$edit(shared_proc,"upcase"),shared_proc)
|
||||||
|
$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc)
|
||||||
|
$ endif
|
||||||
|
$ goto map_loop
|
||||||
|
$MAP_END:
|
||||||
|
$ close/nolog aopt
|
||||||
|
$ close/nolog bopt
|
||||||
|
$ open/append libopt 'p2'
|
||||||
|
$ open/read aopt a.opt
|
||||||
|
$ open/read bopt b.opt
|
||||||
|
$ALOOP:
|
||||||
|
$ read/end=aloop_end aopt line
|
||||||
|
$ write libopt line
|
||||||
|
$ goto aloop
|
||||||
|
$ALOOP_END:
|
||||||
|
$ close/nolog aopt
|
||||||
|
$ sv = ""
|
||||||
|
$BLOOP:
|
||||||
|
$ read/end=bloop_end bopt svn
|
||||||
|
$ if (svn.nes."")
|
||||||
|
$ then
|
||||||
|
$ if (sv.nes."") then write libopt sv
|
||||||
|
$ sv = svn
|
||||||
|
$ endif
|
||||||
|
$ goto bloop
|
||||||
|
$BLOOP_END:
|
||||||
|
$ write libopt f$extract(0,f$length(sv)-2,sv), "-"
|
||||||
|
$ write libopt ")"
|
||||||
|
$ close/nolog bopt
|
||||||
|
$ delete/nolog/noconf a.opt;*,b.opt;*
|
||||||
|
$ else
|
||||||
|
$ if vax
|
||||||
|
$ then
|
||||||
|
$ open/append libopt 'p2'
|
||||||
|
$ mod_sym_num = 1
|
||||||
|
$ VMOD_SYM_LOOP:
|
||||||
|
$ if f$type(module'mod_sym_num') .nes. ""
|
||||||
|
$ then
|
||||||
|
$ mod_in = 0
|
||||||
|
$ VMOD_SYM_IN:
|
||||||
|
$ shared_proc = f$element(mod_in, "#", module'mod_sym_num')
|
||||||
|
$ if shared_proc .nes. "#"
|
||||||
|
$ then
|
||||||
|
$ write libopt f$fao("UNIVERSAL=!AS",-
|
||||||
|
f$edit(shared_proc,"upcase"))
|
||||||
|
$ mod_in = mod_in + 1
|
||||||
|
$ goto vmod_sym_in
|
||||||
|
$ endif
|
||||||
|
$ mod_sym_num = mod_sym_num + 1
|
||||||
|
$ goto vmod_sym_loop
|
||||||
|
$ endif
|
||||||
|
$VMAP_LOOP:
|
||||||
|
$ read/end=vmap_end map line
|
||||||
|
$ if (f$locate("{",line).lt. f$length(line)) .or. -
|
||||||
|
(f$locate("global:", line) .lt. f$length(line))
|
||||||
|
$ then
|
||||||
|
$ proc = true
|
||||||
|
$ goto vmap_loop
|
||||||
|
$ endif
|
||||||
|
$ if f$locate("}",line).lt. f$length(line) then proc = false
|
||||||
|
$ if f$locate("local:", line) .lt. f$length(line) then proc = false
|
||||||
|
$ if proc
|
||||||
|
$ then
|
||||||
|
$ shared_proc = f$edit(line,"collapse")
|
||||||
|
$ chop_semi = f$locate(";", shared_proc)
|
||||||
|
$ if chop_semi .lt. f$length(shared_proc) then -
|
||||||
|
shared_proc = f$extract(0, chop_semi, shared_proc)
|
||||||
|
$ write libopt f$fao("UNIVERSAL=!AS",-
|
||||||
|
f$edit(shared_proc,"upcase"))
|
||||||
|
$ endif
|
||||||
|
$ goto vmap_loop
|
||||||
|
$VMAP_END:
|
||||||
|
$ else
|
||||||
|
$ write sys$output "Unknown Architecture (Not VAX, AXP, or IA64)"
|
||||||
|
$ write sys$output "No options file created"
|
||||||
|
$ endif
|
||||||
|
$ endif
|
||||||
|
$ EXIT_M2S:
|
||||||
|
$ close/nolog map
|
||||||
|
$ close/nolog libopt
|
||||||
|
$ endsubroutine
|
||||||
|
|||||||
@@ -86,9 +86,9 @@ uncompr.obj: uncompr.c zlib.h zconf.h
|
|||||||
|
|
||||||
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
||||||
|
|
||||||
example.obj: example.c zlib.h zconf.h
|
example.obj: test/example.c zlib.h zconf.h
|
||||||
|
|
||||||
minigzip.obj: minigzip.c zlib.h zconf.h
|
minigzip.obj: test/minigzip.c zlib.h zconf.h
|
||||||
|
|
||||||
|
|
||||||
# the command line is cut to fit in the MS-DOS 128 byte limit:
|
# the command line is cut to fit in the MS-DOS 128 byte limit:
|
||||||
|
|||||||
@@ -80,10 +80,10 @@ uncompr.obj: uncompr.c zlib.h zconf.h
|
|||||||
|
|
||||||
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
||||||
|
|
||||||
example.obj: example.c zlib.h zconf.h
|
example.obj: test/example.c zlib.h zconf.h
|
||||||
$(CC) -c $(CFLAGS) $*.c
|
$(CC) -c $(CFLAGS) $*.c
|
||||||
|
|
||||||
minigzip.obj: minigzip.c zlib.h zconf.h
|
minigzip.obj: test/minigzip.c zlib.h zconf.h
|
||||||
$(CC) -c $(CFLAGS) $*.c
|
$(CC) -c $(CFLAGS) $*.c
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -71,9 +71,9 @@ uncompr.obj: uncompr.c zlib.h zconf.h
|
|||||||
|
|
||||||
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
||||||
|
|
||||||
example.obj: example.c zlib.h zconf.h
|
example.obj: test/example.c zlib.h zconf.h
|
||||||
|
|
||||||
minigzip.obj: minigzip.c zlib.h zconf.h
|
minigzip.obj: test/minigzip.c zlib.h zconf.h
|
||||||
|
|
||||||
|
|
||||||
# the command line is cut to fit in the MS-DOS 128 byte limit:
|
# the command line is cut to fit in the MS-DOS 128 byte limit:
|
||||||
|
|||||||
@@ -1,123 +0,0 @@
|
|||||||
/******************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ZLIB */
|
|
||||||
/* */
|
|
||||||
/* Compile sources into modules and link them into a service program. */
|
|
||||||
/* */
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
PGM
|
|
||||||
|
|
||||||
/* Configuration adjustable parameters. */
|
|
||||||
|
|
||||||
DCL VAR(&SRCLIB) TYPE(*CHAR) LEN(10) +
|
|
||||||
VALUE('ZLIB') /* Source library. */
|
|
||||||
DCL VAR(&SRCFILE) TYPE(*CHAR) LEN(10) +
|
|
||||||
VALUE('SOURCES') /* Source member file. */
|
|
||||||
DCL VAR(&CTLFILE) TYPE(*CHAR) LEN(10) +
|
|
||||||
VALUE('TOOLS') /* Control member file. */
|
|
||||||
|
|
||||||
DCL VAR(&MODLIB) TYPE(*CHAR) LEN(10) +
|
|
||||||
VALUE('ZLIB') /* Module library. */
|
|
||||||
|
|
||||||
DCL VAR(&SRVLIB) TYPE(*CHAR) LEN(10) +
|
|
||||||
VALUE('LGPL') /* Service program library. */
|
|
||||||
|
|
||||||
DCL VAR(&CFLAGS) TYPE(*CHAR) +
|
|
||||||
VALUE('OPTIMIZE(40)') /* Compile options. */
|
|
||||||
|
|
||||||
|
|
||||||
/* Working storage. */
|
|
||||||
|
|
||||||
DCL VAR(&CMDLEN) TYPE(*DEC) LEN(15 5) VALUE(300) /* Command length. */
|
|
||||||
DCL VAR(&CMD) TYPE(*CHAR) LEN(512)
|
|
||||||
|
|
||||||
|
|
||||||
/* Compile sources into modules. */
|
|
||||||
|
|
||||||
CHGVAR VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT +
|
|
||||||
'/ADLER32) SRCFILE(' *TCAT +
|
|
||||||
&SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT +
|
|
||||||
') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
|
|
||||||
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
|
||||||
|
|
||||||
CHGVAR VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT +
|
|
||||||
'/COMPRESS) SRCFILE(' *TCAT +
|
|
||||||
&SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT +
|
|
||||||
') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
|
|
||||||
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
|
||||||
|
|
||||||
CHGVAR VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT +
|
|
||||||
'/CRC32) SRCFILE(' *TCAT +
|
|
||||||
&SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT +
|
|
||||||
') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
|
|
||||||
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
|
||||||
|
|
||||||
CHGVAR VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT +
|
|
||||||
'/DEFLATE) SRCFILE(' *TCAT +
|
|
||||||
&SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT +
|
|
||||||
') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
|
|
||||||
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
|
||||||
|
|
||||||
CHGVAR VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT +
|
|
||||||
'/GZIO) SRCFILE(' *TCAT +
|
|
||||||
&SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT +
|
|
||||||
') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
|
|
||||||
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
|
||||||
|
|
||||||
CHGVAR VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT +
|
|
||||||
'/INFBACK) SRCFILE(' *TCAT +
|
|
||||||
&SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT +
|
|
||||||
') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
|
|
||||||
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
|
||||||
|
|
||||||
CHGVAR VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT +
|
|
||||||
'/INFFAST) SRCFILE(' *TCAT +
|
|
||||||
&SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT +
|
|
||||||
') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
|
|
||||||
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
|
||||||
|
|
||||||
CHGVAR VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT +
|
|
||||||
'/INFLATE) SRCFILE(' *TCAT +
|
|
||||||
&SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT +
|
|
||||||
') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
|
|
||||||
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
|
||||||
|
|
||||||
CHGVAR VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT +
|
|
||||||
'/INFTREES) SRCFILE(' *TCAT +
|
|
||||||
&SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT +
|
|
||||||
') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
|
|
||||||
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
|
||||||
|
|
||||||
CHGVAR VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT +
|
|
||||||
'/TREES) SRCFILE(' *TCAT +
|
|
||||||
&SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT +
|
|
||||||
') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
|
|
||||||
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
|
||||||
|
|
||||||
CHGVAR VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT +
|
|
||||||
'/UNCOMPR) SRCFILE(' *TCAT +
|
|
||||||
&SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT +
|
|
||||||
') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
|
|
||||||
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
|
||||||
|
|
||||||
CHGVAR VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT +
|
|
||||||
'/ZUTIL) SRCFILE(' *TCAT +
|
|
||||||
&SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT +
|
|
||||||
') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
|
|
||||||
CALL PGM(QCMDEXC) PARM(&CMD &CMDLEN)
|
|
||||||
|
|
||||||
|
|
||||||
/* Link modules into a service program. */
|
|
||||||
|
|
||||||
CRTSRVPGM SRVPGM(&SRVLIB/ZLIB) +
|
|
||||||
MODULE(&MODLIB/ADLER32 &MODLIB/COMPRESS +
|
|
||||||
&MODLIB/CRC32 &MODLIB/DEFLATE +
|
|
||||||
&MODLIB/GZIO &MODLIB/INFBACK +
|
|
||||||
&MODLIB/INFFAST &MODLIB/INFLATE +
|
|
||||||
&MODLIB/INFTREES &MODLIB/TREES +
|
|
||||||
&MODLIB/UNCOMPR &MODLIB/ZUTIL) +
|
|
||||||
SRCFILE(&SRCLIB/&CTLFILE) SRCMBR(BNDSRC) +
|
|
||||||
TEXT('ZLIB 1.2.3') TGTRLS(V4R4M0)
|
|
||||||
|
|
||||||
ENDPGM
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
This directory contains project files for building zlib under various
|
|
||||||
Integrated Development Environments (IDE).
|
|
||||||
|
|
||||||
If you wish to submit a new project to this directory, you should comply
|
|
||||||
to the following requirements. Otherwise (e.g. if you wish to integrate
|
|
||||||
a custom piece of code that changes the zlib interface or its behavior),
|
|
||||||
please consider submitting the project to the contrib directory.
|
|
||||||
|
|
||||||
|
|
||||||
Requirements
|
|
||||||
============
|
|
||||||
|
|
||||||
- The project must build zlib using the source files from the official
|
|
||||||
zlib source distribution, exclusively.
|
|
||||||
|
|
||||||
- If the project produces redistributable builds (e.g. shared objects
|
|
||||||
or DLL files), these builds must be compatible to those produced by
|
|
||||||
makefiles, if such makefiles exist in the zlib distribution.
|
|
||||||
In particular, if the project produces a DLL build for the Win32
|
|
||||||
platform, this build must comply to the officially-ammended Win32 DLL
|
|
||||||
Application Binary Interface (ABI), described in win32/DLL_FAQ.txt.
|
|
||||||
|
|
||||||
- The project may provide additional build targets, which depend on
|
|
||||||
3rd-party (unofficially-supported) software, present in the contrib
|
|
||||||
directory. For example, it is possible to provide an "ASM build",
|
|
||||||
besides the officially-supported build, and have ASM source files
|
|
||||||
among its dependencies.
|
|
||||||
|
|
||||||
- If there are significant differences between the project files created
|
|
||||||
by different versions of an IDE (e.g. Visual C++ 6.0 vs. 7.0), the name
|
|
||||||
of the project directory should contain the version number of the IDE
|
|
||||||
for which the project is intended (e.g. "visualc6" for Visual C++ 6.0,
|
|
||||||
or "visualc7" for Visual C++ 7.0 and 7.1).
|
|
||||||
|
|
||||||
|
|
||||||
Current projects
|
|
||||||
================
|
|
||||||
|
|
||||||
visualc6/ by Simon-Pierre Cadieux <methodex@methodex.ca>
|
|
||||||
and Cosmin Truta <cosmint@cs.ubbcluj.ro>
|
|
||||||
Project for Microsoft Visual C++ 6.0
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
Microsoft Developer Studio Project Files, Format Version 6.00 for zlib.
|
|
||||||
|
|
||||||
Copyright (C) 2000-2004 Simon-Pierre Cadieux.
|
|
||||||
Copyright (C) 2004 Cosmin Truta.
|
|
||||||
For conditions of distribution and use, see copyright notice in zlib.h.
|
|
||||||
|
|
||||||
|
|
||||||
This project builds the zlib binaries as follows:
|
|
||||||
|
|
||||||
* Win32_DLL_Release\zlib1.dll DLL build
|
|
||||||
* Win32_DLL_Debug\zlib1d.dll DLL build (debug version)
|
|
||||||
* Win32_DLL_ASM_Release\zlib1.dll DLL build using ASM code
|
|
||||||
* Win32_DLL_ASM_Debug\zlib1d.dll DLL build using ASM code (debug version)
|
|
||||||
* Win32_LIB_Release\zlib.lib static build
|
|
||||||
* Win32_LIB_Debug\zlibd.lib static build (debug version)
|
|
||||||
* Win32_LIB_ASM_Release\zlib.lib static build using ASM code
|
|
||||||
* Win32_LIB_ASM_Debug\zlibd.lib static build using ASM code (debug version)
|
|
||||||
|
|
||||||
|
|
||||||
For more information regarding the DLL builds, please see the DLL FAQ
|
|
||||||
in ..\..\win32\DLL_FAQ.txt.
|
|
||||||
|
|
||||||
|
|
||||||
To build and test:
|
|
||||||
|
|
||||||
1) On the main menu, select "File | Open Workspace".
|
|
||||||
Open "zlib.dsw".
|
|
||||||
|
|
||||||
2) Select "Build | Set Active Configuration".
|
|
||||||
Choose the configuration you wish to build.
|
|
||||||
|
|
||||||
3) Select "Build | Clean".
|
|
||||||
|
|
||||||
4) Select "Build | Build ... (F7)". Ignore warning messages about
|
|
||||||
not being able to find certain include files (e.g. alloc.h).
|
|
||||||
|
|
||||||
5) If you built one of the sample programs (example or minigzip),
|
|
||||||
select "Build | Execute ... (Ctrl+F5)".
|
|
||||||
|
|
||||||
|
|
||||||
To use:
|
|
||||||
|
|
||||||
1) Select "Project | Settings (Alt+F7)".
|
|
||||||
Make note of the configuration names used in your project.
|
|
||||||
Usually, these names are "Win32 Release" and "Win32 Debug".
|
|
||||||
|
|
||||||
2) In the Workspace window, select the "FileView" tab.
|
|
||||||
Right-click on the root item "Workspace '...'".
|
|
||||||
Select "Insert Project into Workspace".
|
|
||||||
Switch on the checkbox "Dependency of:", and select the name
|
|
||||||
of your project. Open "zlib.dsp".
|
|
||||||
|
|
||||||
3) Select "Build | Configurations".
|
|
||||||
For each configuration of your project:
|
|
||||||
3.1) Choose the zlib configuration you wish to use.
|
|
||||||
3.2) Click on "Add".
|
|
||||||
3.3) Set the new zlib configuration name to the name used by
|
|
||||||
the configuration from the current iteration.
|
|
||||||
|
|
||||||
4) Select "Build | Set Active Configuration".
|
|
||||||
Choose the configuration you wish to build.
|
|
||||||
|
|
||||||
5) Select "Build | Build ... (F7)".
|
|
||||||
|
|
||||||
6) If you built an executable program, select
|
|
||||||
"Build | Execute ... (Ctrl+F5)".
|
|
||||||
|
|
||||||
|
|
||||||
Note:
|
|
||||||
|
|
||||||
To build the ASM-enabled code, you need Microsoft Assembler
|
|
||||||
(ML.EXE). You can get it by downloading and installing the
|
|
||||||
latest Processor Pack for Visual C++ 6.0.
|
|
||||||
@@ -1,278 +0,0 @@
|
|||||||
# Microsoft Developer Studio Project File - Name="example" - Package Owner=<4>
|
|
||||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
|
||||||
# ** DO NOT EDIT **
|
|
||||||
|
|
||||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
|
||||||
|
|
||||||
CFG=example - Win32 LIB Debug
|
|
||||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
|
||||||
!MESSAGE use the Export Makefile command and run
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE NMAKE /f "example.mak".
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE You can specify a configuration when running NMAKE
|
|
||||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE NMAKE /f "example.mak" CFG="example - Win32 LIB Debug"
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE Possible choices for configuration are:
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE "example - Win32 DLL ASM Release" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "example - Win32 DLL ASM Debug" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "example - Win32 DLL Release" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "example - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "example - Win32 LIB ASM Release" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "example - Win32 LIB ASM Debug" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "example - Win32 LIB Release" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "example - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE
|
|
||||||
|
|
||||||
# Begin Project
|
|
||||||
# PROP AllowPerConfigDependencies 0
|
|
||||||
# PROP Scc_ProjName ""
|
|
||||||
# PROP Scc_LocalPath ""
|
|
||||||
CPP=cl.exe
|
|
||||||
RSC=rc.exe
|
|
||||||
|
|
||||||
!IF "$(CFG)" == "example - Win32 DLL ASM Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "example___Win32_DLL_ASM_Release"
|
|
||||||
# PROP BASE Intermediate_Dir "example___Win32_DLL_ASM_Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Win32_DLL_ASM_Release"
|
|
||||||
# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /machine:I386
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "example - Win32 DLL ASM Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "example___Win32_DLL_ASM_Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "example___Win32_DLL_ASM_Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Win32_DLL_ASM_Debug"
|
|
||||||
# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "example - Win32 DLL Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "example___Win32_DLL_Release"
|
|
||||||
# PROP BASE Intermediate_Dir "example___Win32_DLL_Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Win32_DLL_Release"
|
|
||||||
# PROP Intermediate_Dir "Win32_DLL_Release"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /machine:I386
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "example - Win32 DLL Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "example___Win32_DLL_Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "example___Win32_DLL_Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Win32_DLL_Debug"
|
|
||||||
# PROP Intermediate_Dir "Win32_DLL_Debug"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "example - Win32 LIB ASM Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "example___Win32_LIB_ASM_Release"
|
|
||||||
# PROP BASE Intermediate_Dir "example___Win32_LIB_ASM_Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Win32_LIB_ASM_Release"
|
|
||||||
# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /machine:I386
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "example - Win32 LIB ASM Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "example___Win32_LIB_ASM_Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "example___Win32_LIB_ASM_Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Win32_LIB_ASM_Debug"
|
|
||||||
# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "example - Win32 LIB Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "example___Win32_LIB_Release"
|
|
||||||
# PROP BASE Intermediate_Dir "example___Win32_LIB_Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Win32_LIB_Release"
|
|
||||||
# PROP Intermediate_Dir "Win32_LIB_Release"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /machine:I386
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "example - Win32 LIB Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "example___Win32_LIB_Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "example___Win32_LIB_Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Win32_LIB_Debug"
|
|
||||||
# PROP Intermediate_Dir "Win32_LIB_Debug"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
|
|
||||||
!ENDIF
|
|
||||||
|
|
||||||
# Begin Target
|
|
||||||
|
|
||||||
# Name "example - Win32 DLL ASM Release"
|
|
||||||
# Name "example - Win32 DLL ASM Debug"
|
|
||||||
# Name "example - Win32 DLL Release"
|
|
||||||
# Name "example - Win32 DLL Debug"
|
|
||||||
# Name "example - Win32 LIB ASM Release"
|
|
||||||
# Name "example - Win32 LIB ASM Debug"
|
|
||||||
# Name "example - Win32 LIB Release"
|
|
||||||
# Name "example - Win32 LIB Debug"
|
|
||||||
# Begin Group "Source Files"
|
|
||||||
|
|
||||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\example.c
|
|
||||||
# End Source File
|
|
||||||
# End Group
|
|
||||||
# Begin Group "Header Files"
|
|
||||||
|
|
||||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\zconf.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\zlib.h
|
|
||||||
# End Source File
|
|
||||||
# End Group
|
|
||||||
# End Target
|
|
||||||
# End Project
|
|
||||||
@@ -1,278 +0,0 @@
|
|||||||
# Microsoft Developer Studio Project File - Name="minigzip" - Package Owner=<4>
|
|
||||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
|
||||||
# ** DO NOT EDIT **
|
|
||||||
|
|
||||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
|
||||||
|
|
||||||
CFG=minigzip - Win32 LIB Debug
|
|
||||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
|
||||||
!MESSAGE use the Export Makefile command and run
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE NMAKE /f "minigzip.mak".
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE You can specify a configuration when running NMAKE
|
|
||||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE NMAKE /f "minigzip.mak" CFG="minigzip - Win32 LIB Debug"
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE Possible choices for configuration are:
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE "minigzip - Win32 DLL ASM Release" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "minigzip - Win32 DLL ASM Debug" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "minigzip - Win32 DLL Release" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "minigzip - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "minigzip - Win32 LIB ASM Release" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "minigzip - Win32 LIB ASM Debug" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "minigzip - Win32 LIB Release" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "minigzip - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE
|
|
||||||
|
|
||||||
# Begin Project
|
|
||||||
# PROP AllowPerConfigDependencies 0
|
|
||||||
# PROP Scc_ProjName ""
|
|
||||||
# PROP Scc_LocalPath ""
|
|
||||||
CPP=cl.exe
|
|
||||||
RSC=rc.exe
|
|
||||||
|
|
||||||
!IF "$(CFG)" == "minigzip - Win32 DLL ASM Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "minigzip___Win32_DLL_ASM_Release"
|
|
||||||
# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_ASM_Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Win32_DLL_ASM_Release"
|
|
||||||
# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /machine:I386
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "minigzip - Win32 DLL ASM Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "minigzip___Win32_DLL_ASM_Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_ASM_Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Win32_DLL_ASM_Debug"
|
|
||||||
# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "minigzip - Win32 DLL Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "minigzip___Win32_DLL_Release"
|
|
||||||
# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Win32_DLL_Release"
|
|
||||||
# PROP Intermediate_Dir "Win32_DLL_Release"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /machine:I386
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "minigzip - Win32 DLL Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "minigzip___Win32_DLL_Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Win32_DLL_Debug"
|
|
||||||
# PROP Intermediate_Dir "Win32_DLL_Debug"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "minigzip - Win32 LIB ASM Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "minigzip___Win32_LIB_ASM_Release"
|
|
||||||
# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_ASM_Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Win32_LIB_ASM_Release"
|
|
||||||
# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /machine:I386
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "minigzip - Win32 LIB ASM Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "minigzip___Win32_LIB_ASM_Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_ASM_Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Win32_LIB_ASM_Debug"
|
|
||||||
# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "minigzip - Win32 LIB Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "minigzip___Win32_LIB_Release"
|
|
||||||
# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Win32_LIB_Release"
|
|
||||||
# PROP Intermediate_Dir "Win32_LIB_Release"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /machine:I386
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "minigzip - Win32 LIB Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "minigzip___Win32_LIB_Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Win32_LIB_Debug"
|
|
||||||
# PROP Intermediate_Dir "Win32_LIB_Debug"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
|
||||||
# SUBTRACT BASE CPP /YX
|
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
|
|
||||||
# SUBTRACT CPP /YX
|
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
|
|
||||||
!ENDIF
|
|
||||||
|
|
||||||
# Begin Target
|
|
||||||
|
|
||||||
# Name "minigzip - Win32 DLL ASM Release"
|
|
||||||
# Name "minigzip - Win32 DLL ASM Debug"
|
|
||||||
# Name "minigzip - Win32 DLL Release"
|
|
||||||
# Name "minigzip - Win32 DLL Debug"
|
|
||||||
# Name "minigzip - Win32 LIB ASM Release"
|
|
||||||
# Name "minigzip - Win32 LIB ASM Debug"
|
|
||||||
# Name "minigzip - Win32 LIB Release"
|
|
||||||
# Name "minigzip - Win32 LIB Debug"
|
|
||||||
# Begin Group "Source Files"
|
|
||||||
|
|
||||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\minigzip.c
|
|
||||||
# End Source File
|
|
||||||
# End Group
|
|
||||||
# Begin Group "Header Files"
|
|
||||||
|
|
||||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\zconf.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\zlib.h
|
|
||||||
# End Source File
|
|
||||||
# End Group
|
|
||||||
# End Target
|
|
||||||
# End Project
|
|
||||||
@@ -1,621 +0,0 @@
|
|||||||
# Microsoft Developer Studio Project File - Name="zlib" - Package Owner=<4>
|
|
||||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
|
||||||
# ** DO NOT EDIT **
|
|
||||||
|
|
||||||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
|
|
||||||
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
|
||||||
|
|
||||||
CFG=zlib - Win32 LIB Debug
|
|
||||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
|
||||||
!MESSAGE use the Export Makefile command and run
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE NMAKE /f "zlib.mak".
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE You can specify a configuration when running NMAKE
|
|
||||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE NMAKE /f "zlib.mak" CFG="zlib - Win32 LIB Debug"
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE Possible choices for configuration are:
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE "zlib - Win32 DLL ASM Release" (based on "Win32 (x86) Dynamic-Link Library")
|
|
||||||
!MESSAGE "zlib - Win32 DLL ASM Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
|
||||||
!MESSAGE "zlib - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library")
|
|
||||||
!MESSAGE "zlib - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
|
||||||
!MESSAGE "zlib - Win32 LIB ASM Release" (based on "Win32 (x86) Static Library")
|
|
||||||
!MESSAGE "zlib - Win32 LIB ASM Debug" (based on "Win32 (x86) Static Library")
|
|
||||||
!MESSAGE "zlib - Win32 LIB Release" (based on "Win32 (x86) Static Library")
|
|
||||||
!MESSAGE "zlib - Win32 LIB Debug" (based on "Win32 (x86) Static Library")
|
|
||||||
!MESSAGE
|
|
||||||
|
|
||||||
# Begin Project
|
|
||||||
# PROP AllowPerConfigDependencies 0
|
|
||||||
# PROP Scc_ProjName ""
|
|
||||||
# PROP Scc_LocalPath ""
|
|
||||||
|
|
||||||
!IF "$(CFG)" == "zlib - Win32 DLL ASM Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "zlib___Win32_DLL_ASM_Release"
|
|
||||||
# PROP BASE Intermediate_Dir "zlib___Win32_DLL_ASM_Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Win32_DLL_ASM_Release"
|
|
||||||
# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
CPP=cl.exe
|
|
||||||
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT BASE CPP /YX /Yc /Yu
|
|
||||||
# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /D "ASMV" /D "ASMINF" /FD /c
|
|
||||||
# SUBTRACT CPP /YX /Yc /Yu
|
|
||||||
MTL=midl.exe
|
|
||||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
|
||||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
|
||||||
RSC=rc.exe
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
|
||||||
# ADD LINK32 /nologo /dll /machine:I386 /out:"Win32_DLL_ASM_Release\zlib1.dll"
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL ASM Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "zlib___Win32_DLL_ASM_Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "zlib___Win32_DLL_ASM_Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Win32_DLL_ASM_Debug"
|
|
||||||
# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
CPP=cl.exe
|
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
|
||||||
# SUBTRACT BASE CPP /YX /Yc /Yu
|
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /D "ASMV" /D "ASMINF" /FR /FD /GZ /c
|
|
||||||
# SUBTRACT CPP /YX /Yc /Yu
|
|
||||||
MTL=midl.exe
|
|
||||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
|
||||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
|
||||||
RSC=rc.exe
|
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
|
|
||||||
# ADD LINK32 /nologo /dll /debug /machine:I386 /out:"Win32_DLL_ASM_Debug\zlib1d.dll" /pdbtype:sept
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "zlib___Win32_DLL_Release"
|
|
||||||
# PROP BASE Intermediate_Dir "zlib___Win32_DLL_Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Win32_DLL_Release"
|
|
||||||
# PROP Intermediate_Dir "Win32_DLL_Release"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
CPP=cl.exe
|
|
||||||
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT BASE CPP /YX /Yc /Yu
|
|
||||||
# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT CPP /YX /Yc /Yu
|
|
||||||
MTL=midl.exe
|
|
||||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
|
||||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
|
||||||
RSC=rc.exe
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
|
||||||
# ADD LINK32 /nologo /dll /machine:I386 /out:"Win32_DLL_Release\zlib1.dll"
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "zlib___Win32_DLL_Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "zlib___Win32_DLL_Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Win32_DLL_Debug"
|
|
||||||
# PROP Intermediate_Dir "Win32_DLL_Debug"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
CPP=cl.exe
|
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
|
||||||
# SUBTRACT BASE CPP /YX /Yc /Yu
|
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
|
|
||||||
# SUBTRACT CPP /YX /Yc /Yu
|
|
||||||
MTL=midl.exe
|
|
||||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
|
||||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
|
||||||
RSC=rc.exe
|
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
|
|
||||||
# ADD LINK32 /nologo /dll /debug /machine:I386 /out:"Win32_DLL_Debug\zlib1d.dll" /pdbtype:sept
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB ASM Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "zlib___Win32_LIB_ASM_Release"
|
|
||||||
# PROP BASE Intermediate_Dir "zlib___Win32_LIB_ASM_Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Win32_LIB_ASM_Release"
|
|
||||||
# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
CPP=cl.exe
|
|
||||||
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT BASE CPP /YX /Yc /Yu
|
|
||||||
# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /D "ASMV" /D "ASMINF" /FD /c
|
|
||||||
# SUBTRACT CPP /YX /Yc /Yu
|
|
||||||
RSC=rc.exe
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LIB32=link.exe -lib
|
|
||||||
# ADD BASE LIB32 /nologo
|
|
||||||
# ADD LIB32 /nologo
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB ASM Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "zlib___Win32_LIB_ASM_Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "zlib___Win32_LIB_ASM_Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Win32_LIB_ASM_Debug"
|
|
||||||
# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
CPP=cl.exe
|
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
|
||||||
# SUBTRACT BASE CPP /YX /Yc /Yu
|
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /D "ASMV" /D "ASMINF" /FR /FD /GZ /c
|
|
||||||
# SUBTRACT CPP /YX /Yc /Yu
|
|
||||||
RSC=rc.exe
|
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LIB32=link.exe -lib
|
|
||||||
# ADD BASE LIB32 /nologo
|
|
||||||
# ADD LIB32 /nologo /out:"Win32_LIB_ASM_Debug\zlibd.lib"
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "zlib___Win32_LIB_Release"
|
|
||||||
# PROP BASE Intermediate_Dir "zlib___Win32_LIB_Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Win32_LIB_Release"
|
|
||||||
# PROP Intermediate_Dir "Win32_LIB_Release"
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
CPP=cl.exe
|
|
||||||
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT BASE CPP /YX /Yc /Yu
|
|
||||||
# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
|
|
||||||
# SUBTRACT CPP /YX /Yc /Yu
|
|
||||||
RSC=rc.exe
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LIB32=link.exe -lib
|
|
||||||
# ADD BASE LIB32 /nologo
|
|
||||||
# ADD LIB32 /nologo
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "zlib___Win32_LIB_Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "zlib___Win32_LIB_Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Win32_LIB_Debug"
|
|
||||||
# PROP Intermediate_Dir "Win32_LIB_Debug"
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
CPP=cl.exe
|
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
|
||||||
# SUBTRACT BASE CPP /YX /Yc /Yu
|
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
|
|
||||||
# SUBTRACT CPP /YX /Yc /Yu
|
|
||||||
RSC=rc.exe
|
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LIB32=link.exe -lib
|
|
||||||
# ADD BASE LIB32 /nologo
|
|
||||||
# ADD LIB32 /nologo /out:"Win32_LIB_Debug\zlibd.lib"
|
|
||||||
|
|
||||||
!ENDIF
|
|
||||||
|
|
||||||
# Begin Target
|
|
||||||
|
|
||||||
# Name "zlib - Win32 DLL ASM Release"
|
|
||||||
# Name "zlib - Win32 DLL ASM Debug"
|
|
||||||
# Name "zlib - Win32 DLL Release"
|
|
||||||
# Name "zlib - Win32 DLL Debug"
|
|
||||||
# Name "zlib - Win32 LIB ASM Release"
|
|
||||||
# Name "zlib - Win32 LIB ASM Debug"
|
|
||||||
# Name "zlib - Win32 LIB Release"
|
|
||||||
# Name "zlib - Win32 LIB Debug"
|
|
||||||
# Begin Group "Source Files"
|
|
||||||
|
|
||||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\adler32.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\compress.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\crc32.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\deflate.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\gzclose.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\gzlib.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\gzread.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\gzwrite.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\infback.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\inffast.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\inflate.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\inftrees.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\trees.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\uncompr.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\win32\zlib.def
|
|
||||||
|
|
||||||
!IF "$(CFG)" == "zlib - Win32 DLL ASM Release"
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL ASM Debug"
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Release"
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug"
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB ASM Release"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB ASM Debug"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Release"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Debug"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
|
|
||||||
!ENDIF
|
|
||||||
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\zutil.c
|
|
||||||
# End Source File
|
|
||||||
# End Group
|
|
||||||
# Begin Group "Header Files"
|
|
||||||
|
|
||||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\crc32.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\deflate.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\inffast.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\inffixed.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\inflate.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\inftrees.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\trees.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\zconf.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\zlib.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\zutil.h
|
|
||||||
# End Source File
|
|
||||||
# End Group
|
|
||||||
# Begin Group "Resource Files"
|
|
||||||
|
|
||||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\win32\zlib1.rc
|
|
||||||
# End Source File
|
|
||||||
# End Group
|
|
||||||
# Begin Group "Assembler Files (Unsupported)"
|
|
||||||
|
|
||||||
# PROP Default_Filter "asm;obj;c;cpp;cxx;h;hpp;hxx"
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\contrib\masmx86\gvmat32.asm
|
|
||||||
|
|
||||||
!IF "$(CFG)" == "zlib - Win32 DLL ASM Release"
|
|
||||||
|
|
||||||
# Begin Custom Build - Assembling...
|
|
||||||
IntDir=.\Win32_DLL_ASM_Release
|
|
||||||
InputPath=..\..\contrib\masmx86\gvmat32.asm
|
|
||||||
InputName=gvmat32
|
|
||||||
|
|
||||||
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
|
||||||
ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
|
|
||||||
|
|
||||||
# End Custom Build
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL ASM Debug"
|
|
||||||
|
|
||||||
# Begin Custom Build - Assembling...
|
|
||||||
IntDir=.\Win32_DLL_ASM_Debug
|
|
||||||
InputPath=..\..\contrib\masmx86\gvmat32.asm
|
|
||||||
InputName=gvmat32
|
|
||||||
|
|
||||||
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
|
||||||
ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
|
|
||||||
|
|
||||||
# End Custom Build
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Release"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB ASM Release"
|
|
||||||
|
|
||||||
# Begin Custom Build - Assembling...
|
|
||||||
IntDir=.\Win32_LIB_ASM_Release
|
|
||||||
InputPath=..\..\contrib\masmx86\gvmat32.asm
|
|
||||||
InputName=gvmat32
|
|
||||||
|
|
||||||
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
|
||||||
ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
|
|
||||||
|
|
||||||
# End Custom Build
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB ASM Debug"
|
|
||||||
|
|
||||||
# Begin Custom Build - Assembling...
|
|
||||||
IntDir=.\Win32_LIB_ASM_Debug
|
|
||||||
InputPath=..\..\contrib\masmx86\gvmat32.asm
|
|
||||||
InputName=gvmat32
|
|
||||||
|
|
||||||
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
|
||||||
ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
|
|
||||||
|
|
||||||
# End Custom Build
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Release"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Debug"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
|
|
||||||
!ENDIF
|
|
||||||
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\contrib\masmx86\gvmat32c.c
|
|
||||||
|
|
||||||
!IF "$(CFG)" == "zlib - Win32 DLL ASM Release"
|
|
||||||
|
|
||||||
# ADD CPP /I "..\.."
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL ASM Debug"
|
|
||||||
|
|
||||||
# ADD CPP /I "..\.."
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Release"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
# ADD CPP /I "..\.."
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
# ADD CPP /I "..\.."
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB ASM Release"
|
|
||||||
|
|
||||||
# ADD CPP /I "..\.."
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB ASM Debug"
|
|
||||||
|
|
||||||
# ADD CPP /I "..\.."
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Release"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
# ADD CPP /I "..\.."
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Debug"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
# ADD CPP /I "..\.."
|
|
||||||
|
|
||||||
!ENDIF
|
|
||||||
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\contrib\masmx86\inffas32.asm
|
|
||||||
|
|
||||||
!IF "$(CFG)" == "zlib - Win32 DLL ASM Release"
|
|
||||||
|
|
||||||
# Begin Custom Build - Assembling...
|
|
||||||
IntDir=.\Win32_DLL_ASM_Release
|
|
||||||
InputPath=..\..\contrib\masmx86\inffas32.asm
|
|
||||||
InputName=inffas32
|
|
||||||
|
|
||||||
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
|
||||||
ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
|
|
||||||
|
|
||||||
# End Custom Build
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL ASM Debug"
|
|
||||||
|
|
||||||
# Begin Custom Build - Assembling...
|
|
||||||
IntDir=.\Win32_DLL_ASM_Debug
|
|
||||||
InputPath=..\..\contrib\masmx86\inffas32.asm
|
|
||||||
InputName=inffas32
|
|
||||||
|
|
||||||
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
|
||||||
ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
|
|
||||||
|
|
||||||
# End Custom Build
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Release"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB ASM Release"
|
|
||||||
|
|
||||||
# Begin Custom Build - Assembling...
|
|
||||||
IntDir=.\Win32_LIB_ASM_Release
|
|
||||||
InputPath=..\..\contrib\masmx86\inffas32.asm
|
|
||||||
InputName=inffas32
|
|
||||||
|
|
||||||
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
|
||||||
ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
|
|
||||||
|
|
||||||
# End Custom Build
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB ASM Debug"
|
|
||||||
|
|
||||||
# Begin Custom Build - Assembling...
|
|
||||||
IntDir=.\Win32_LIB_ASM_Debug
|
|
||||||
InputPath=..\..\contrib\masmx86\inffas32.asm
|
|
||||||
InputName=inffas32
|
|
||||||
|
|
||||||
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
|
||||||
ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
|
|
||||||
|
|
||||||
# End Custom Build
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Release"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Debug"
|
|
||||||
|
|
||||||
# PROP Exclude_From_Build 1
|
|
||||||
|
|
||||||
!ENDIF
|
|
||||||
|
|
||||||
# End Source File
|
|
||||||
# End Group
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\README.txt
|
|
||||||
# End Source File
|
|
||||||
# End Target
|
|
||||||
# End Project
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
|
||||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "example"=.\example.dsp - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name zlib
|
|
||||||
End Project Dependency
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "minigzip"=.\minigzip.dsp - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name zlib
|
|
||||||
End Project Dependency
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "zlib"=.\zlib.dsp - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Global:
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<3>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
@@ -25,10 +25,10 @@
|
|||||||
<QPG:Files>
|
<QPG:Files>
|
||||||
<QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/>
|
<QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/>
|
||||||
<QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/>
|
<QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/>
|
||||||
<QPG:Add file="../libz.so.1.2.4.1" install="/opt/lib/" user="root:bin" permission="644"/>
|
<QPG:Add file="../libz.so.1.2.7" install="/opt/lib/" user="root:bin" permission="644"/>
|
||||||
<QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.4.1"/>
|
<QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.7"/>
|
||||||
<QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.4.1"/>
|
<QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.7"/>
|
||||||
<QPG:Add file="../libz.so.1.2.4.1" install="/opt/lib/" component="slib"/>
|
<QPG:Add file="../libz.so.1.2.7" install="/opt/lib/" component="slib"/>
|
||||||
</QPG:Files>
|
</QPG:Files>
|
||||||
|
|
||||||
<QPG:PackageFilter>
|
<QPG:PackageFilter>
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
</QPM:ProductDescription>
|
</QPM:ProductDescription>
|
||||||
|
|
||||||
<QPM:ReleaseDescription>
|
<QPM:ReleaseDescription>
|
||||||
<QPM:ReleaseVersion>1.2.4.1</QPM:ReleaseVersion>
|
<QPM:ReleaseVersion>1.2.7</QPM:ReleaseVersion>
|
||||||
<QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency>
|
<QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency>
|
||||||
<QPM:ReleaseStability>Stable</QPM:ReleaseStability>
|
<QPM:ReleaseStability>Stable</QPM:ReleaseStability>
|
||||||
<QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor>
|
<QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* example.c -- usage example of the zlib compression library
|
/* example.c -- usage example of the zlib compression library
|
||||||
* Copyright (C) 1995-2006 Jean-loup Gailly.
|
* Copyright (C) 1995-2006, 2011 Jean-loup Gailly.
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -34,10 +34,6 @@ const char hello[] = "hello, hello!";
|
|||||||
const char dictionary[] = "hello";
|
const char dictionary[] = "hello";
|
||||||
uLong dictId; /* Adler32 value of the dictionary */
|
uLong dictId; /* Adler32 value of the dictionary */
|
||||||
|
|
||||||
void test_compress OF((Byte *compr, uLong comprLen,
|
|
||||||
Byte *uncompr, uLong uncomprLen));
|
|
||||||
void test_gzio OF((const char *fname,
|
|
||||||
Byte *uncompr, uLong uncomprLen));
|
|
||||||
void test_deflate OF((Byte *compr, uLong comprLen));
|
void test_deflate OF((Byte *compr, uLong comprLen));
|
||||||
void test_inflate OF((Byte *compr, uLong comprLen,
|
void test_inflate OF((Byte *compr, uLong comprLen,
|
||||||
Byte *uncompr, uLong uncomprLen));
|
Byte *uncompr, uLong uncomprLen));
|
||||||
@@ -53,6 +49,39 @@ void test_dict_inflate OF((Byte *compr, uLong comprLen,
|
|||||||
Byte *uncompr, uLong uncomprLen));
|
Byte *uncompr, uLong uncomprLen));
|
||||||
int main OF((int argc, char *argv[]));
|
int main OF((int argc, char *argv[]));
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef Z_SOLO
|
||||||
|
|
||||||
|
void *myalloc OF((void *, unsigned, unsigned));
|
||||||
|
void myfree OF((void *, void *));
|
||||||
|
|
||||||
|
void *myalloc(q, n, m)
|
||||||
|
void *q;
|
||||||
|
unsigned n, m;
|
||||||
|
{
|
||||||
|
q = Z_NULL;
|
||||||
|
return calloc(n, m);
|
||||||
|
}
|
||||||
|
|
||||||
|
void myfree(void *q, void *p)
|
||||||
|
{
|
||||||
|
q = Z_NULL;
|
||||||
|
free(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
static alloc_func zalloc = myalloc;
|
||||||
|
static free_func zfree = myfree;
|
||||||
|
|
||||||
|
#else /* !Z_SOLO */
|
||||||
|
|
||||||
|
static alloc_func zalloc = (alloc_func)0;
|
||||||
|
static free_func zfree = (free_func)0;
|
||||||
|
|
||||||
|
void test_compress OF((Byte *compr, uLong comprLen,
|
||||||
|
Byte *uncompr, uLong uncomprLen));
|
||||||
|
void test_gzio OF((const char *fname,
|
||||||
|
Byte *uncompr, uLong uncomprLen));
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
* Test compress() and uncompress()
|
* Test compress() and uncompress()
|
||||||
*/
|
*/
|
||||||
@@ -163,6 +192,8 @@ void test_gzio(fname, uncompr, uncomprLen)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* Z_SOLO */
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
* Test deflate() with small buffers
|
* Test deflate() with small buffers
|
||||||
*/
|
*/
|
||||||
@@ -174,8 +205,8 @@ void test_deflate(compr, comprLen)
|
|||||||
int err;
|
int err;
|
||||||
uLong len = (uLong)strlen(hello)+1;
|
uLong len = (uLong)strlen(hello)+1;
|
||||||
|
|
||||||
c_stream.zalloc = (alloc_func)0;
|
c_stream.zalloc = zalloc;
|
||||||
c_stream.zfree = (free_func)0;
|
c_stream.zfree = zfree;
|
||||||
c_stream.opaque = (voidpf)0;
|
c_stream.opaque = (voidpf)0;
|
||||||
|
|
||||||
err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
|
err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
|
||||||
@@ -213,8 +244,8 @@ void test_inflate(compr, comprLen, uncompr, uncomprLen)
|
|||||||
|
|
||||||
strcpy((char*)uncompr, "garbage");
|
strcpy((char*)uncompr, "garbage");
|
||||||
|
|
||||||
d_stream.zalloc = (alloc_func)0;
|
d_stream.zalloc = zalloc;
|
||||||
d_stream.zfree = (free_func)0;
|
d_stream.zfree = zfree;
|
||||||
d_stream.opaque = (voidpf)0;
|
d_stream.opaque = (voidpf)0;
|
||||||
|
|
||||||
d_stream.next_in = compr;
|
d_stream.next_in = compr;
|
||||||
@@ -252,8 +283,8 @@ void test_large_deflate(compr, comprLen, uncompr, uncomprLen)
|
|||||||
z_stream c_stream; /* compression stream */
|
z_stream c_stream; /* compression stream */
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
c_stream.zalloc = (alloc_func)0;
|
c_stream.zalloc = zalloc;
|
||||||
c_stream.zfree = (free_func)0;
|
c_stream.zfree = zfree;
|
||||||
c_stream.opaque = (voidpf)0;
|
c_stream.opaque = (voidpf)0;
|
||||||
|
|
||||||
err = deflateInit(&c_stream, Z_BEST_SPEED);
|
err = deflateInit(&c_stream, Z_BEST_SPEED);
|
||||||
@@ -309,8 +340,8 @@ void test_large_inflate(compr, comprLen, uncompr, uncomprLen)
|
|||||||
|
|
||||||
strcpy((char*)uncompr, "garbage");
|
strcpy((char*)uncompr, "garbage");
|
||||||
|
|
||||||
d_stream.zalloc = (alloc_func)0;
|
d_stream.zalloc = zalloc;
|
||||||
d_stream.zfree = (free_func)0;
|
d_stream.zfree = zfree;
|
||||||
d_stream.opaque = (voidpf)0;
|
d_stream.opaque = (voidpf)0;
|
||||||
|
|
||||||
d_stream.next_in = compr;
|
d_stream.next_in = compr;
|
||||||
@@ -349,8 +380,8 @@ void test_flush(compr, comprLen)
|
|||||||
int err;
|
int err;
|
||||||
uInt len = (uInt)strlen(hello)+1;
|
uInt len = (uInt)strlen(hello)+1;
|
||||||
|
|
||||||
c_stream.zalloc = (alloc_func)0;
|
c_stream.zalloc = zalloc;
|
||||||
c_stream.zfree = (free_func)0;
|
c_stream.zfree = zfree;
|
||||||
c_stream.opaque = (voidpf)0;
|
c_stream.opaque = (voidpf)0;
|
||||||
|
|
||||||
err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
|
err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
|
||||||
@@ -388,8 +419,8 @@ void test_sync(compr, comprLen, uncompr, uncomprLen)
|
|||||||
|
|
||||||
strcpy((char*)uncompr, "garbage");
|
strcpy((char*)uncompr, "garbage");
|
||||||
|
|
||||||
d_stream.zalloc = (alloc_func)0;
|
d_stream.zalloc = zalloc;
|
||||||
d_stream.zfree = (free_func)0;
|
d_stream.zfree = zfree;
|
||||||
d_stream.opaque = (voidpf)0;
|
d_stream.opaque = (voidpf)0;
|
||||||
|
|
||||||
d_stream.next_in = compr;
|
d_stream.next_in = compr;
|
||||||
@@ -430,15 +461,15 @@ void test_dict_deflate(compr, comprLen)
|
|||||||
z_stream c_stream; /* compression stream */
|
z_stream c_stream; /* compression stream */
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
c_stream.zalloc = (alloc_func)0;
|
c_stream.zalloc = zalloc;
|
||||||
c_stream.zfree = (free_func)0;
|
c_stream.zfree = zfree;
|
||||||
c_stream.opaque = (voidpf)0;
|
c_stream.opaque = (voidpf)0;
|
||||||
|
|
||||||
err = deflateInit(&c_stream, Z_BEST_COMPRESSION);
|
err = deflateInit(&c_stream, Z_BEST_COMPRESSION);
|
||||||
CHECK_ERR(err, "deflateInit");
|
CHECK_ERR(err, "deflateInit");
|
||||||
|
|
||||||
err = deflateSetDictionary(&c_stream,
|
err = deflateSetDictionary(&c_stream,
|
||||||
(const Bytef*)dictionary, sizeof(dictionary));
|
(const Bytef*)dictionary, (int)sizeof(dictionary));
|
||||||
CHECK_ERR(err, "deflateSetDictionary");
|
CHECK_ERR(err, "deflateSetDictionary");
|
||||||
|
|
||||||
dictId = c_stream.adler;
|
dictId = c_stream.adler;
|
||||||
@@ -469,8 +500,8 @@ void test_dict_inflate(compr, comprLen, uncompr, uncomprLen)
|
|||||||
|
|
||||||
strcpy((char*)uncompr, "garbage");
|
strcpy((char*)uncompr, "garbage");
|
||||||
|
|
||||||
d_stream.zalloc = (alloc_func)0;
|
d_stream.zalloc = zalloc;
|
||||||
d_stream.zfree = (free_func)0;
|
d_stream.zfree = zfree;
|
||||||
d_stream.opaque = (voidpf)0;
|
d_stream.opaque = (voidpf)0;
|
||||||
|
|
||||||
d_stream.next_in = compr;
|
d_stream.next_in = compr;
|
||||||
@@ -491,7 +522,7 @@ void test_dict_inflate(compr, comprLen, uncompr, uncomprLen)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary,
|
err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary,
|
||||||
sizeof(dictionary));
|
(int)sizeof(dictionary));
|
||||||
}
|
}
|
||||||
CHECK_ERR(err, "inflate with dict");
|
CHECK_ERR(err, "inflate with dict");
|
||||||
}
|
}
|
||||||
@@ -540,10 +571,15 @@ int main(argc, argv)
|
|||||||
printf("out of memory\n");
|
printf("out of memory\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef Z_SOLO
|
||||||
|
argc = strlen(argv[0]);
|
||||||
|
#else
|
||||||
test_compress(compr, comprLen, uncompr, uncomprLen);
|
test_compress(compr, comprLen, uncompr, uncomprLen);
|
||||||
|
|
||||||
test_gzio((argc > 1 ? argv[1] : TESTFILE),
|
test_gzio((argc > 1 ? argv[1] : TESTFILE),
|
||||||
uncompr, uncomprLen);
|
uncompr, uncomprLen);
|
||||||
|
#endif
|
||||||
|
|
||||||
test_deflate(compr, comprLen);
|
test_deflate(compr, comprLen);
|
||||||
test_inflate(compr, comprLen, uncompr, uncomprLen);
|
test_inflate(compr, comprLen, uncompr, uncomprLen);
|
||||||
671
test/infcover.c
Normal file
671
test/infcover.c
Normal file
@@ -0,0 +1,671 @@
|
|||||||
|
/* infcover.c -- test zlib's inflate routines with full code coverage
|
||||||
|
* Copyright (C) 2011 Mark Adler
|
||||||
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* to use, do: ./configure --cover && make cover */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include "zlib.h"
|
||||||
|
|
||||||
|
/* get definition of internal structure so we can mess with it (see pull()),
|
||||||
|
and so we can call inflate_trees() (see cover5()) */
|
||||||
|
#define ZLIB_INTERNAL
|
||||||
|
#include "inftrees.h"
|
||||||
|
#include "inflate.h"
|
||||||
|
|
||||||
|
#define local static
|
||||||
|
|
||||||
|
/* -- memory tracking routines -- */
|
||||||
|
|
||||||
|
/*
|
||||||
|
These memory tracking routines are provided to zlib and track all of zlib's
|
||||||
|
allocations and deallocations, check for LIFO operations, keep a current
|
||||||
|
and high water mark of total bytes requested, optionally set a limit on the
|
||||||
|
total memory that can be allocated, and when done check for memory leaks.
|
||||||
|
|
||||||
|
They are used as follows:
|
||||||
|
|
||||||
|
z_stream strm;
|
||||||
|
mem_setup(&strm) initializes the memory tracking and sets the
|
||||||
|
zalloc, zfree, and opaque members of strm to use
|
||||||
|
memory tracking for all zlib operations on strm
|
||||||
|
mem_limit(&strm, limit) sets a limit on the total bytes requested -- a
|
||||||
|
request that exceeds this limit will result in an
|
||||||
|
allocation failure (returns NULL) -- setting the
|
||||||
|
limit to zero means no limit, which is the default
|
||||||
|
after mem_setup()
|
||||||
|
mem_used(&strm, "msg") prints to stderr "msg" and the total bytes used
|
||||||
|
mem_high(&strm, "msg") prints to stderr "msg" and the high water mark
|
||||||
|
mem_done(&strm, "msg") ends memory tracking, releases all allocations
|
||||||
|
for the tracking as well as leaked zlib blocks, if
|
||||||
|
any. If there was anything unusual, such as leaked
|
||||||
|
blocks, non-FIFO frees, or frees of addresses not
|
||||||
|
allocated, then "msg" and information about the
|
||||||
|
problem is printed to stderr. If everything is
|
||||||
|
normal, nothing is printed. mem_done resets the
|
||||||
|
strm members to Z_NULL to use the default memory
|
||||||
|
allocation routines on the next zlib initialization
|
||||||
|
using strm.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* these items are strung together in a linked list, one for each allocation */
|
||||||
|
struct mem_item {
|
||||||
|
void *ptr; /* pointer to allocated memory */
|
||||||
|
size_t size; /* requested size of allocation */
|
||||||
|
struct mem_item *next; /* pointer to next item in list, or NULL */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* this structure is at the root of the linked list, and tracks statistics */
|
||||||
|
struct mem_zone {
|
||||||
|
struct mem_item *first; /* pointer to first item in list, or NULL */
|
||||||
|
size_t total, highwater; /* total allocations, and largest total */
|
||||||
|
size_t limit; /* memory allocation limit, or 0 if no limit */
|
||||||
|
int notlifo, rogue; /* counts of non-LIFO frees and rogue frees */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* memory allocation routine to pass to zlib */
|
||||||
|
local void *mem_alloc(void *mem, unsigned count, unsigned size)
|
||||||
|
{
|
||||||
|
void *ptr;
|
||||||
|
struct mem_item *item;
|
||||||
|
struct mem_zone *zone = mem;
|
||||||
|
size_t len = count * (size_t)size;
|
||||||
|
|
||||||
|
/* induced allocation failure */
|
||||||
|
if (zone == NULL || (zone->limit && zone->total + len > zone->limit))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* perform allocation using the standard library, fill memory with a
|
||||||
|
non-zero value to make sure that the code isn't depending on zeros */
|
||||||
|
ptr = malloc(len);
|
||||||
|
if (ptr == NULL)
|
||||||
|
return NULL;
|
||||||
|
memset(ptr, 0xa5, len);
|
||||||
|
|
||||||
|
/* create a new item for the list */
|
||||||
|
item = malloc(sizeof(struct mem_item));
|
||||||
|
if (item == NULL) {
|
||||||
|
free(ptr);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
item->ptr = ptr;
|
||||||
|
item->size = len;
|
||||||
|
|
||||||
|
/* insert item at the beginning of the list */
|
||||||
|
item->next = zone->first;
|
||||||
|
zone->first = item;
|
||||||
|
|
||||||
|
/* update the statistics */
|
||||||
|
zone->total += item->size;
|
||||||
|
if (zone->total > zone->highwater)
|
||||||
|
zone->highwater = zone->total;
|
||||||
|
|
||||||
|
/* return the allocated memory */
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* memory free routine to pass to zlib */
|
||||||
|
local void mem_free(void *mem, void *ptr)
|
||||||
|
{
|
||||||
|
struct mem_item *item, *next;
|
||||||
|
struct mem_zone *zone = mem;
|
||||||
|
|
||||||
|
/* if no zone, just do a free */
|
||||||
|
if (zone == NULL) {
|
||||||
|
free(ptr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* point next to the item that matches ptr, or NULL if not found -- remove
|
||||||
|
the item from the linked list if found */
|
||||||
|
next = zone->first;
|
||||||
|
if (next) {
|
||||||
|
if (next->ptr == ptr)
|
||||||
|
zone->first = next->next; /* first one is it, remove from list */
|
||||||
|
else {
|
||||||
|
do { /* search the linked list */
|
||||||
|
item = next;
|
||||||
|
next = item->next;
|
||||||
|
} while (next != NULL && next->ptr != ptr);
|
||||||
|
if (next) { /* if found, remove from linked list */
|
||||||
|
item->next = next->next;
|
||||||
|
zone->notlifo++; /* not a LIFO free */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if found, update the statistics and free the item */
|
||||||
|
if (next) {
|
||||||
|
zone->total -= next->size;
|
||||||
|
free(next);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if not found, update the rogue count */
|
||||||
|
else
|
||||||
|
zone->rogue++;
|
||||||
|
|
||||||
|
/* in any case, do the requested free with the standard library function */
|
||||||
|
free(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set up a controlled memory allocation space for monitoring, set the stream
|
||||||
|
parameters to the controlled routines, with opaque pointing to the space */
|
||||||
|
local void mem_setup(z_stream *strm)
|
||||||
|
{
|
||||||
|
struct mem_zone *zone;
|
||||||
|
|
||||||
|
zone = malloc(sizeof(struct mem_zone));
|
||||||
|
assert(zone != NULL);
|
||||||
|
zone->first = NULL;
|
||||||
|
zone->total = 0;
|
||||||
|
zone->highwater = 0;
|
||||||
|
zone->limit = 0;
|
||||||
|
zone->notlifo = 0;
|
||||||
|
zone->rogue = 0;
|
||||||
|
strm->opaque = zone;
|
||||||
|
strm->zalloc = mem_alloc;
|
||||||
|
strm->zfree = mem_free;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set a limit on the total memory allocation, or 0 to remove the limit */
|
||||||
|
local void mem_limit(z_stream *strm, size_t limit)
|
||||||
|
{
|
||||||
|
struct mem_zone *zone = strm->opaque;
|
||||||
|
|
||||||
|
zone->limit = limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* show the current total requested allocations in bytes */
|
||||||
|
local void mem_used(z_stream *strm, char *prefix)
|
||||||
|
{
|
||||||
|
struct mem_zone *zone = strm->opaque;
|
||||||
|
|
||||||
|
fprintf(stderr, "%s: %lu allocated\n", prefix, zone->total);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* show the high water allocation in bytes */
|
||||||
|
local void mem_high(z_stream *strm, char *prefix)
|
||||||
|
{
|
||||||
|
struct mem_zone *zone = strm->opaque;
|
||||||
|
|
||||||
|
fprintf(stderr, "%s: %lu high water mark\n", prefix, zone->highwater);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* release the memory allocation zone -- if there are any surprises, notify */
|
||||||
|
local void mem_done(z_stream *strm, char *prefix)
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
struct mem_item *item, *next;
|
||||||
|
struct mem_zone *zone = strm->opaque;
|
||||||
|
|
||||||
|
/* show high water mark */
|
||||||
|
mem_high(strm, prefix);
|
||||||
|
|
||||||
|
/* free leftover allocations and item structures, if any */
|
||||||
|
item = zone->first;
|
||||||
|
while (item != NULL) {
|
||||||
|
free(item->ptr);
|
||||||
|
next = item->next;
|
||||||
|
free(item);
|
||||||
|
item = next;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* issue alerts about anything unexpected */
|
||||||
|
if (count || zone->total)
|
||||||
|
fprintf(stderr, "** %s: %lu bytes in %d blocks not freed\n",
|
||||||
|
prefix, zone->total, count);
|
||||||
|
if (zone->notlifo)
|
||||||
|
fprintf(stderr, "** %s: %d frees not LIFO\n", prefix, zone->notlifo);
|
||||||
|
if (zone->rogue)
|
||||||
|
fprintf(stderr, "** %s: %d frees not recognized\n",
|
||||||
|
prefix, zone->rogue);
|
||||||
|
|
||||||
|
/* free the zone and delete from the stream */
|
||||||
|
free(zone);
|
||||||
|
strm->opaque = Z_NULL;
|
||||||
|
strm->zalloc = Z_NULL;
|
||||||
|
strm->zfree = Z_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- inflate test routines -- */
|
||||||
|
|
||||||
|
/* Decode a hexadecimal string, set *len to length, in[] to the bytes. This
|
||||||
|
decodes liberally, in that hex digits can be adjacent, in which case two in
|
||||||
|
a row writes a byte. Or they can delimited by any non-hex character, where
|
||||||
|
the delimiters are ignored except when a single hex digit is followed by a
|
||||||
|
delimiter in which case that single digit writes a byte. The returned
|
||||||
|
data is allocated and must eventually be freed. NULL is returned if out of
|
||||||
|
memory. If the length is not needed, then len can be NULL. */
|
||||||
|
local unsigned char *h2b(const char *hex, unsigned *len)
|
||||||
|
{
|
||||||
|
unsigned char *in;
|
||||||
|
unsigned next, val;
|
||||||
|
|
||||||
|
in = malloc((strlen(hex) + 1) >> 1);
|
||||||
|
if (in == NULL)
|
||||||
|
return NULL;
|
||||||
|
next = 0;
|
||||||
|
val = 1;
|
||||||
|
do {
|
||||||
|
if (*hex >= '0' && *hex <= '9')
|
||||||
|
val = (val << 4) + *hex - '0';
|
||||||
|
else if (*hex >= 'A' && *hex <= 'F')
|
||||||
|
val = (val << 4) + *hex - 'A' + 10;
|
||||||
|
else if (*hex >= 'a' && *hex <= 'f')
|
||||||
|
val = (val << 4) + *hex - 'a' + 10;
|
||||||
|
else if (val != 1 && val < 32) /* one digit followed by delimiter */
|
||||||
|
val += 240; /* make it look like two digits */
|
||||||
|
if (val > 255) { /* have two digits */
|
||||||
|
in[next++] = val & 0xff; /* save the decoded byte */
|
||||||
|
val = 1; /* start over */
|
||||||
|
}
|
||||||
|
} while (*hex++); /* go through the loop with the terminating null */
|
||||||
|
if (len != NULL)
|
||||||
|
*len = next;
|
||||||
|
in = reallocf(in, next);
|
||||||
|
return in;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* generic inflate() run, where hex is the hexadecimal input data, what is the
|
||||||
|
text to include in an error message, step is how much input data to feed
|
||||||
|
inflate() on each call, or zero to feed it all, win is the window bits
|
||||||
|
parameter to inflateInit2(), len is the size of the output buffer, and err
|
||||||
|
is the error code expected from the first inflate() call (the second
|
||||||
|
inflate() call is expected to return Z_STREAM_END). If win is 47, then
|
||||||
|
header information is collected with inflateGetHeader(). If a zlib stream
|
||||||
|
is looking for a dictionary, then an empty dictionary is provided.
|
||||||
|
inflate() is run until all of the input data is consumed. */
|
||||||
|
local void inf(char *hex, char *what, unsigned step, int win, unsigned len,
|
||||||
|
int err)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
unsigned have;
|
||||||
|
unsigned char *in, *out;
|
||||||
|
z_stream strm, copy;
|
||||||
|
gz_header head;
|
||||||
|
|
||||||
|
mem_setup(&strm);
|
||||||
|
strm.avail_in = 0;
|
||||||
|
strm.next_in = Z_NULL;
|
||||||
|
ret = inflateInit2(&strm, win);
|
||||||
|
if (ret != Z_OK) {
|
||||||
|
mem_done(&strm, what);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
out = malloc(len); assert(out != NULL);
|
||||||
|
if (win == 47) {
|
||||||
|
head.extra = out;
|
||||||
|
head.extra_max = len;
|
||||||
|
head.name = out;
|
||||||
|
head.name_max = len;
|
||||||
|
head.comment = out;
|
||||||
|
head.comm_max = len;
|
||||||
|
ret = inflateGetHeader(&strm, &head); assert(ret == Z_OK);
|
||||||
|
}
|
||||||
|
in = h2b(hex, &have); assert(in != NULL);
|
||||||
|
if (step == 0 || step > have)
|
||||||
|
step = have;
|
||||||
|
strm.avail_in = step;
|
||||||
|
have -= step;
|
||||||
|
strm.next_in = in;
|
||||||
|
do {
|
||||||
|
strm.avail_out = len;
|
||||||
|
strm.next_out = out;
|
||||||
|
ret = inflate(&strm, Z_NO_FLUSH); assert(err == 9 || ret == err);
|
||||||
|
if (ret != Z_OK && ret != Z_BUF_ERROR && ret != Z_NEED_DICT)
|
||||||
|
break;
|
||||||
|
if (ret == Z_NEED_DICT) {
|
||||||
|
ret = inflateSetDictionary(&strm, in, 1);
|
||||||
|
assert(ret == Z_DATA_ERROR);
|
||||||
|
mem_limit(&strm, 1);
|
||||||
|
ret = inflateSetDictionary(&strm, out, 0);
|
||||||
|
assert(ret == Z_MEM_ERROR);
|
||||||
|
mem_limit(&strm, 0);
|
||||||
|
((struct inflate_state *)strm.state)->mode = DICT;
|
||||||
|
ret = inflateSetDictionary(&strm, out, 0);
|
||||||
|
assert(ret == Z_OK);
|
||||||
|
ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_BUF_ERROR);
|
||||||
|
}
|
||||||
|
ret = inflateCopy(©, &strm); assert(ret == Z_OK);
|
||||||
|
ret = inflateEnd(©); assert(ret == Z_OK);
|
||||||
|
err = 9; /* don't care next time around */
|
||||||
|
have += strm.avail_in;
|
||||||
|
strm.avail_in = step > have ? have : step;
|
||||||
|
have -= strm.avail_in;
|
||||||
|
} while (strm.avail_in);
|
||||||
|
free(in);
|
||||||
|
free(out);
|
||||||
|
ret = inflateReset2(&strm, -8); assert(ret == Z_OK);
|
||||||
|
ret = inflateEnd(&strm); assert(ret == Z_OK);
|
||||||
|
mem_done(&strm, what);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cover all of the lines in inflate.c up to inflate() */
|
||||||
|
local void cover_support(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
z_stream strm;
|
||||||
|
|
||||||
|
mem_setup(&strm);
|
||||||
|
strm.avail_in = 0;
|
||||||
|
strm.next_in = Z_NULL;
|
||||||
|
ret = inflateInit(&strm); assert(ret == Z_OK);
|
||||||
|
mem_used(&strm, "inflate init");
|
||||||
|
ret = inflatePrime(&strm, 5, 31); assert(ret == Z_OK);
|
||||||
|
ret = inflatePrime(&strm, -1, 0); assert(ret == Z_OK);
|
||||||
|
ret = inflateSetDictionary(&strm, Z_NULL, 0);
|
||||||
|
assert(ret == Z_STREAM_ERROR);
|
||||||
|
ret = inflateEnd(&strm); assert(ret == Z_OK);
|
||||||
|
mem_done(&strm, "prime");
|
||||||
|
|
||||||
|
inf("63 0", "force window allocation", 0, -15, 1, Z_OK);
|
||||||
|
inf("63 18 5", "force window replacement", 0, -8, 259, Z_OK);
|
||||||
|
inf("63 18 68 30 d0 0 0", "force split window update", 4, -8, 259, Z_OK);
|
||||||
|
inf("3 0", "use fixed blocks", 0, -15, 1, Z_STREAM_END);
|
||||||
|
inf("", "bad window size", 0, 1, 0, Z_STREAM_ERROR);
|
||||||
|
|
||||||
|
mem_setup(&strm);
|
||||||
|
strm.avail_in = 0;
|
||||||
|
strm.next_in = Z_NULL;
|
||||||
|
ret = inflateInit_(&strm, ZLIB_VERSION - 1, (int)sizeof(z_stream));
|
||||||
|
assert(ret == Z_VERSION_ERROR);
|
||||||
|
mem_done(&strm, "wrong version");
|
||||||
|
|
||||||
|
strm.avail_in = 0;
|
||||||
|
strm.next_in = Z_NULL;
|
||||||
|
ret = inflateInit(&strm); assert(ret == Z_OK);
|
||||||
|
ret = inflateEnd(&strm); assert(ret == Z_OK);
|
||||||
|
fputs("inflate built-in memory routines\n", stderr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cover all inflate() header and trailer cases and code after inflate() */
|
||||||
|
local void cover_wrap(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
z_stream strm, copy;
|
||||||
|
unsigned char dict[257];
|
||||||
|
|
||||||
|
ret = inflate(Z_NULL, 0); assert(ret == Z_STREAM_ERROR);
|
||||||
|
ret = inflateEnd(Z_NULL); assert(ret == Z_STREAM_ERROR);
|
||||||
|
ret = inflateCopy(Z_NULL, Z_NULL); assert(ret == Z_STREAM_ERROR);
|
||||||
|
fputs("inflate bad parameters\n", stderr);
|
||||||
|
|
||||||
|
inf("1f 8b 0 0", "bad gzip method", 0, 31, 0, Z_DATA_ERROR);
|
||||||
|
inf("1f 8b 8 80", "bad gzip flags", 0, 31, 0, Z_DATA_ERROR);
|
||||||
|
inf("77 85", "bad zlib method", 0, 15, 0, Z_DATA_ERROR);
|
||||||
|
inf("8 99", "set window size from header", 0, 0, 0, Z_OK);
|
||||||
|
inf("78 9c", "bad zlib window size", 0, 8, 0, Z_DATA_ERROR);
|
||||||
|
inf("78 9c 63 0 0 0 1 0 1", "check adler32", 0, 15, 1, Z_STREAM_END);
|
||||||
|
inf("1f 8b 8 1e 0 0 0 0 0 0 1 0 0 0 0 0 0", "bad header crc", 0, 47, 1,
|
||||||
|
Z_DATA_ERROR);
|
||||||
|
inf("1f 8b 8 2 0 0 0 0 0 0 1d 26 3 0 0 0 0 0 0 0 0 0", "check gzip length",
|
||||||
|
0, 47, 0, Z_STREAM_END);
|
||||||
|
inf("78 90", "bad zlib header check", 0, 47, 0, Z_DATA_ERROR);
|
||||||
|
inf("8 b8 0 0 0 1", "need dictionary", 0, 8, 0, Z_NEED_DICT);
|
||||||
|
inf("78 9c 63 0", "compute adler32", 0, 15, 1, Z_OK);
|
||||||
|
|
||||||
|
mem_setup(&strm);
|
||||||
|
strm.avail_in = 0;
|
||||||
|
strm.next_in = Z_NULL;
|
||||||
|
ret = inflateInit2(&strm, -8);
|
||||||
|
strm.avail_in = 2;
|
||||||
|
strm.next_in = (void *)"\x63";
|
||||||
|
strm.avail_out = 1;
|
||||||
|
strm.next_out = (void *)&ret;
|
||||||
|
mem_limit(&strm, 1);
|
||||||
|
ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_MEM_ERROR);
|
||||||
|
ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_MEM_ERROR);
|
||||||
|
mem_limit(&strm, 0);
|
||||||
|
memset(dict, 0, 257);
|
||||||
|
ret = inflateSetDictionary(&strm, dict, 257);
|
||||||
|
assert(ret == Z_OK);
|
||||||
|
mem_limit(&strm, (sizeof(struct inflate_state) << 1) + 256);
|
||||||
|
ret = inflatePrime(&strm, 16, 0); assert(ret == Z_OK);
|
||||||
|
strm.avail_in = 2;
|
||||||
|
strm.next_in = (void *)"\x80";
|
||||||
|
ret = inflateSync(&strm); assert(ret == Z_DATA_ERROR);
|
||||||
|
ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_STREAM_ERROR);
|
||||||
|
strm.avail_in = 4;
|
||||||
|
strm.next_in = (void *)"\0\0\xff\xff";
|
||||||
|
ret = inflateSync(&strm); assert(ret == Z_OK);
|
||||||
|
(void)inflateSyncPoint(&strm);
|
||||||
|
ret = inflateCopy(©, &strm); assert(ret == Z_MEM_ERROR);
|
||||||
|
mem_limit(&strm, 0);
|
||||||
|
ret = inflateUndermine(&strm, 1); assert(ret == Z_DATA_ERROR);
|
||||||
|
(void)inflateMark(&strm);
|
||||||
|
ret = inflateEnd(&strm); assert(ret == Z_OK);
|
||||||
|
mem_done(&strm, "miscellaneous, force memory errors");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* input and output functions for inflateBack() */
|
||||||
|
local unsigned pull(void *desc, unsigned char **buf)
|
||||||
|
{
|
||||||
|
static unsigned int next = 0;
|
||||||
|
static unsigned char dat[] = {0x63, 0, 2, 0};
|
||||||
|
struct inflate_state *state;
|
||||||
|
|
||||||
|
if (desc == Z_NULL) {
|
||||||
|
next = 0;
|
||||||
|
return 0; /* no input (already provided at next_in) */
|
||||||
|
}
|
||||||
|
state = (void *)((z_stream *)desc)->state;
|
||||||
|
if (state != Z_NULL)
|
||||||
|
state->mode = SYNC; /* force an otherwise impossible situation */
|
||||||
|
return next < sizeof(dat) ? (*buf = dat + next++, 1) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
local int push(void *desc, unsigned char *buf, unsigned len)
|
||||||
|
{
|
||||||
|
buf += len;
|
||||||
|
return desc != Z_NULL; /* force error if desc not null */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cover inflateBack() up to common deflate data cases and after those */
|
||||||
|
local void cover_back(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
z_stream strm;
|
||||||
|
unsigned char win[32768];
|
||||||
|
|
||||||
|
ret = inflateBackInit_(Z_NULL, 0, win, 0, 0);
|
||||||
|
assert(ret == Z_VERSION_ERROR);
|
||||||
|
ret = inflateBackInit(Z_NULL, 0, win); assert(ret == Z_STREAM_ERROR);
|
||||||
|
ret = inflateBack(Z_NULL, Z_NULL, Z_NULL, Z_NULL, Z_NULL);
|
||||||
|
assert(ret == Z_STREAM_ERROR);
|
||||||
|
ret = inflateBackEnd(Z_NULL); assert(ret == Z_STREAM_ERROR);
|
||||||
|
fputs("inflateBack bad parameters\n", stderr);
|
||||||
|
|
||||||
|
mem_setup(&strm);
|
||||||
|
ret = inflateBackInit(&strm, 15, win); assert(ret == Z_OK);
|
||||||
|
strm.avail_in = 2;
|
||||||
|
strm.next_in = (void *)"\x03";
|
||||||
|
ret = inflateBack(&strm, pull, Z_NULL, push, Z_NULL);
|
||||||
|
assert(ret == Z_STREAM_END);
|
||||||
|
/* force output error */
|
||||||
|
strm.avail_in = 3;
|
||||||
|
strm.next_in = (void *)"\x63\x00";
|
||||||
|
ret = inflateBack(&strm, pull, Z_NULL, push, &strm);
|
||||||
|
assert(ret == Z_BUF_ERROR);
|
||||||
|
/* force mode error by mucking with state */
|
||||||
|
ret = inflateBack(&strm, pull, &strm, push, Z_NULL);
|
||||||
|
assert(ret == Z_STREAM_ERROR);
|
||||||
|
ret = inflateBackEnd(&strm); assert(ret == Z_OK);
|
||||||
|
mem_done(&strm, "inflateBack bad state");
|
||||||
|
|
||||||
|
ret = inflateBackInit(&strm, 15, win); assert(ret == Z_OK);
|
||||||
|
ret = inflateBackEnd(&strm); assert(ret == Z_OK);
|
||||||
|
fputs("inflateBack built-in memory routines\n", stderr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* do a raw inflate of data in hexadecimal with both inflate and inflateBack */
|
||||||
|
local int try(char *hex, char *id, int err)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
unsigned len, size;
|
||||||
|
unsigned char *in, *out, *win;
|
||||||
|
char *prefix;
|
||||||
|
z_stream strm;
|
||||||
|
|
||||||
|
/* convert to hex */
|
||||||
|
in = h2b(hex, &len);
|
||||||
|
assert(in != NULL);
|
||||||
|
|
||||||
|
/* allocate work areas */
|
||||||
|
size = len << 3;
|
||||||
|
out = malloc(size);
|
||||||
|
assert(out != NULL);
|
||||||
|
win = malloc(32768);
|
||||||
|
assert(win != NULL);
|
||||||
|
prefix = malloc(strlen(id) + 6);
|
||||||
|
assert(prefix != NULL);
|
||||||
|
|
||||||
|
/* first with inflate */
|
||||||
|
strcpy(prefix, id);
|
||||||
|
strcat(prefix, "-late");
|
||||||
|
mem_setup(&strm);
|
||||||
|
strm.avail_in = 0;
|
||||||
|
strm.next_in = Z_NULL;
|
||||||
|
ret = inflateInit2(&strm, err < 0 ? 47 : -15);
|
||||||
|
assert(ret == Z_OK);
|
||||||
|
strm.avail_in = len;
|
||||||
|
strm.next_in = in;
|
||||||
|
do {
|
||||||
|
strm.avail_out = size;
|
||||||
|
strm.next_out = out;
|
||||||
|
ret = inflate(&strm, Z_TREES);
|
||||||
|
assert(ret != Z_STREAM_ERROR && ret != Z_MEM_ERROR);
|
||||||
|
if (ret == Z_DATA_ERROR || ret == Z_NEED_DICT)
|
||||||
|
break;
|
||||||
|
} while (strm.avail_in || strm.avail_out == 0);
|
||||||
|
if (err) {
|
||||||
|
assert(ret == Z_DATA_ERROR);
|
||||||
|
assert(strcmp(id, strm.msg) == 0);
|
||||||
|
}
|
||||||
|
inflateEnd(&strm);
|
||||||
|
mem_done(&strm, prefix);
|
||||||
|
|
||||||
|
/* then with inflateBack */
|
||||||
|
if (err >= 0) {
|
||||||
|
strcpy(prefix, id);
|
||||||
|
strcat(prefix, "-back");
|
||||||
|
mem_setup(&strm);
|
||||||
|
ret = inflateBackInit(&strm, 15, win);
|
||||||
|
assert(ret == Z_OK);
|
||||||
|
strm.avail_in = len;
|
||||||
|
strm.next_in = in;
|
||||||
|
ret = inflateBack(&strm, pull, Z_NULL, push, Z_NULL);
|
||||||
|
assert(ret != Z_STREAM_ERROR);
|
||||||
|
if (err) {
|
||||||
|
assert(ret == Z_DATA_ERROR);
|
||||||
|
assert(strcmp(id, strm.msg) == 0);
|
||||||
|
}
|
||||||
|
inflateBackEnd(&strm);
|
||||||
|
mem_done(&strm, prefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* clean up */
|
||||||
|
free(prefix);
|
||||||
|
free(win);
|
||||||
|
free(out);
|
||||||
|
free(in);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cover deflate data cases in both inflate() and inflateBack() */
|
||||||
|
local void cover_inflate(void)
|
||||||
|
{
|
||||||
|
try("0 0 0 0 0", "invalid stored block lengths", 1);
|
||||||
|
try("3 0", "fixed", 0);
|
||||||
|
try("6", "invalid block type", 1);
|
||||||
|
try("1 1 0 fe ff 0", "stored", 0);
|
||||||
|
try("fc 0 0", "too many length or distance symbols", 1);
|
||||||
|
try("4 0 fe ff", "invalid code lengths set", 1);
|
||||||
|
try("4 0 24 49 0", "invalid bit length repeat", 1);
|
||||||
|
try("4 0 24 e9 ff ff", "invalid bit length repeat", 1);
|
||||||
|
try("4 0 24 e9 ff 6d", "invalid code -- missing end-of-block", 1);
|
||||||
|
try("4 80 49 92 24 49 92 24 71 ff ff 93 11 0",
|
||||||
|
"invalid literal/lengths set", 1);
|
||||||
|
try("4 80 49 92 24 49 92 24 f b4 ff ff c3 84", "invalid distances set", 1);
|
||||||
|
try("4 c0 81 8 0 0 0 0 20 7f eb b 0 0", "invalid literal/length code", 1);
|
||||||
|
try("2 7e ff ff", "invalid distance code", 1);
|
||||||
|
try("c c0 81 0 0 0 0 0 90 ff 6b 4 0", "invalid distance too far back", 1);
|
||||||
|
|
||||||
|
/* also trailer mismatch just in inflate() */
|
||||||
|
try("1f 8b 8 0 0 0 0 0 0 0 3 0 0 0 0 1", "incorrect data check", -1);
|
||||||
|
try("1f 8b 8 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 1",
|
||||||
|
"incorrect length check", -1);
|
||||||
|
try("5 c0 21 d 0 0 0 80 b0 fe 6d 2f 91 6c", "pull 17", 0);
|
||||||
|
try("5 e0 81 91 24 cb b2 2c 49 e2 f 2e 8b 9a 47 56 9f fb fe ec d2 ff 1f",
|
||||||
|
"long code", 0);
|
||||||
|
try("ed c0 1 1 0 0 0 40 20 ff 57 1b 42 2c 4f", "length extra", 0);
|
||||||
|
try("ed cf c1 b1 2c 47 10 c4 30 fa 6f 35 1d 1 82 59 3d fb be 2e 2a fc f c",
|
||||||
|
"long distance and extra", 0);
|
||||||
|
try("ed c0 81 0 0 0 0 80 a0 fd a9 17 a9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "
|
||||||
|
"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6", "window end", 0);
|
||||||
|
inf("2 8 20 80 0 3 0", "inflate_fast TYPE return", 0, -15, 258,
|
||||||
|
Z_STREAM_END);
|
||||||
|
inf("63 18 5 40 c 0", "window wrap", 3, -8, 300, Z_OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cover remaining lines in inftrees.c */
|
||||||
|
local void cover_trees(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
unsigned bits;
|
||||||
|
unsigned short lens[16], work[16];
|
||||||
|
code *next, table[ENOUGH_DISTS];
|
||||||
|
|
||||||
|
/* we need to call inflate_table() directly in order to manifest not-
|
||||||
|
enough errors, since zlib insures that enough is always enough */
|
||||||
|
for (bits = 0; bits < 15; bits++)
|
||||||
|
lens[bits] = (unsigned short)(bits + 1);
|
||||||
|
lens[15] = 15;
|
||||||
|
next = table;
|
||||||
|
bits = 15;
|
||||||
|
ret = inflate_table(DISTS, lens, 16, &next, &bits, work);
|
||||||
|
assert(ret == 1);
|
||||||
|
next = table;
|
||||||
|
bits = 1;
|
||||||
|
ret = inflate_table(DISTS, lens, 16, &next, &bits, work);
|
||||||
|
assert(ret == 1);
|
||||||
|
fputs("inflate_table not enough errors\n", stderr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cover remaining inffast.c decoding and window copying */
|
||||||
|
local void cover_fast(void)
|
||||||
|
{
|
||||||
|
inf("e5 e0 81 ad 6d cb b2 2c c9 01 1e 59 63 ae 7d ee fb 4d fd b5 35 41 68"
|
||||||
|
" ff 7f 0f 0 0 0", "fast length extra bits", 0, -8, 258, Z_DATA_ERROR);
|
||||||
|
inf("25 fd 81 b5 6d 59 b6 6a 49 ea af 35 6 34 eb 8c b9 f6 b9 1e ef 67 49"
|
||||||
|
" 50 fe ff ff 3f 0 0", "fast distance extra bits", 0, -8, 258,
|
||||||
|
Z_DATA_ERROR);
|
||||||
|
inf("3 7e 0 0 0 0 0", "fast invalid distance code", 0, -8, 258,
|
||||||
|
Z_DATA_ERROR);
|
||||||
|
inf("1b 7 0 0 0 0 0", "fast invalid literal/length code", 0, -8, 258,
|
||||||
|
Z_DATA_ERROR);
|
||||||
|
inf("d c7 1 ae eb 38 c 4 41 a0 87 72 de df fb 1f b8 36 b1 38 5d ff ff 0",
|
||||||
|
"fast 2nd level codes and too far back", 0, -8, 258, Z_DATA_ERROR);
|
||||||
|
inf("63 18 5 8c 10 8 0 0 0 0", "very common case", 0, -8, 259, Z_OK);
|
||||||
|
inf("63 60 60 18 c9 0 8 18 18 18 26 c0 28 0 29 0 0 0",
|
||||||
|
"contiguous and wrap around window", 6, -8, 259, Z_OK);
|
||||||
|
inf("63 0 3 0 0 0 0 0", "copy direct from output", 0, -8, 259,
|
||||||
|
Z_STREAM_END);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s\n", zlibVersion());
|
||||||
|
cover_support();
|
||||||
|
cover_wrap();
|
||||||
|
cover_back();
|
||||||
|
cover_inflate();
|
||||||
|
cover_trees();
|
||||||
|
cover_fast();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/* minigzip.c -- simulate gzip using the zlib compression library
|
/* minigzip.c -- simulate gzip using the zlib compression library
|
||||||
* Copyright (C) 1995-2006, 2010 Jean-loup Gailly.
|
* Copyright (C) 1995-2006, 2010, 2011 Jean-loup Gailly.
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -32,6 +32,9 @@
|
|||||||
#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
|
#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
|
||||||
# include <fcntl.h>
|
# include <fcntl.h>
|
||||||
# include <io.h>
|
# include <io.h>
|
||||||
|
# ifdef UNDER_CE
|
||||||
|
# include <stdlib.h>
|
||||||
|
# endif
|
||||||
# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
|
# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
|
||||||
#else
|
#else
|
||||||
# define SET_BINARY_MODE(file)
|
# define SET_BINARY_MODE(file)
|
||||||
@@ -50,9 +53,11 @@
|
|||||||
# include <unix.h> /* for fileno */
|
# include <unix.h> /* for fileno */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(Z_HAVE_UNISTD_H) && !defined(_LARGEFILE64_SOURCE)
|
||||||
#ifndef WIN32 /* unlink already in stdio.h for WIN32 */
|
#ifndef WIN32 /* unlink already in stdio.h for WIN32 */
|
||||||
extern int unlink OF((const char *));
|
extern int unlink OF((const char *));
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(UNDER_CE)
|
#if defined(UNDER_CE)
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
@@ -133,6 +138,197 @@ static void pwinerror (s)
|
|||||||
# define local
|
# define local
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef Z_SOLO
|
||||||
|
/* for Z_SOLO, create simplified gz* functions using deflate and inflate */
|
||||||
|
|
||||||
|
#if defined(Z_HAVE_UNISTD_H) || defined(Z_LARGE)
|
||||||
|
# include <unistd.h> /* for unlink() */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void *myalloc OF((void *, unsigned, unsigned));
|
||||||
|
void myfree OF((void *, void *));
|
||||||
|
|
||||||
|
void *myalloc(q, n, m)
|
||||||
|
void *q;
|
||||||
|
unsigned n, m;
|
||||||
|
{
|
||||||
|
q = Z_NULL;
|
||||||
|
return calloc(n, m);
|
||||||
|
}
|
||||||
|
|
||||||
|
void myfree(q, p)
|
||||||
|
void *q, *p;
|
||||||
|
{
|
||||||
|
q = Z_NULL;
|
||||||
|
free(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct gzFile_s {
|
||||||
|
FILE *file;
|
||||||
|
int write;
|
||||||
|
int err;
|
||||||
|
char *msg;
|
||||||
|
z_stream strm;
|
||||||
|
} *gzFile;
|
||||||
|
|
||||||
|
gzFile gzopen OF((const char *, const char *));
|
||||||
|
gzFile gzdopen OF((int, const char *));
|
||||||
|
gzFile gz_open OF((const char *, int, const char *));
|
||||||
|
|
||||||
|
gzFile gzopen(path, mode)
|
||||||
|
const char *path;
|
||||||
|
const char *mode;
|
||||||
|
{
|
||||||
|
return gz_open(path, -1, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
gzFile gzdopen(fd, mode)
|
||||||
|
int fd;
|
||||||
|
const char *mode;
|
||||||
|
{
|
||||||
|
return gz_open(NULL, fd, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
gzFile gz_open(path, fd, mode)
|
||||||
|
const char *path;
|
||||||
|
int fd;
|
||||||
|
const char *mode;
|
||||||
|
{
|
||||||
|
gzFile gz;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
gz = malloc(sizeof(struct gzFile_s));
|
||||||
|
if (gz == NULL)
|
||||||
|
return NULL;
|
||||||
|
gz->write = strchr(mode, 'w') != NULL;
|
||||||
|
gz->strm.zalloc = myalloc;
|
||||||
|
gz->strm.zfree = myfree;
|
||||||
|
gz->strm.opaque = Z_NULL;
|
||||||
|
if (gz->write)
|
||||||
|
ret = deflateInit2(&(gz->strm), -1, 8, 15 + 16, 8, 0);
|
||||||
|
else {
|
||||||
|
gz->strm.next_in = 0;
|
||||||
|
gz->strm.avail_in = Z_NULL;
|
||||||
|
ret = inflateInit2(&(gz->strm), 15 + 16);
|
||||||
|
}
|
||||||
|
if (ret != Z_OK) {
|
||||||
|
free(gz);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
gz->file = path == NULL ? fdopen(fd, gz->write ? "wb" : "rb") :
|
||||||
|
fopen(path, gz->write ? "wb" : "rb");
|
||||||
|
if (gz->file == NULL) {
|
||||||
|
gz->write ? deflateEnd(&(gz->strm)) : inflateEnd(&(gz->strm));
|
||||||
|
free(gz);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
gz->err = 0;
|
||||||
|
gz->msg = "";
|
||||||
|
return gz;
|
||||||
|
}
|
||||||
|
|
||||||
|
int gzwrite OF((gzFile, const void *, unsigned));
|
||||||
|
|
||||||
|
int gzwrite(gz, buf, len)
|
||||||
|
gzFile gz;
|
||||||
|
const void *buf;
|
||||||
|
unsigned len;
|
||||||
|
{
|
||||||
|
z_stream *strm;
|
||||||
|
unsigned char out[BUFLEN];
|
||||||
|
|
||||||
|
if (gz == NULL || !gz->write)
|
||||||
|
return 0;
|
||||||
|
strm = &(gz->strm);
|
||||||
|
strm->next_in = (void *)buf;
|
||||||
|
strm->avail_in = len;
|
||||||
|
do {
|
||||||
|
strm->next_out = out;
|
||||||
|
strm->avail_out = BUFLEN;
|
||||||
|
(void)deflate(strm, Z_NO_FLUSH);
|
||||||
|
fwrite(out, 1, BUFLEN - strm->avail_out, gz->file);
|
||||||
|
} while (strm->avail_out == 0);
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
int gzread OF((gzFile, void *, unsigned));
|
||||||
|
|
||||||
|
int gzread(gz, buf, len)
|
||||||
|
gzFile gz;
|
||||||
|
void *buf;
|
||||||
|
unsigned len;
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
unsigned got;
|
||||||
|
unsigned char in[1];
|
||||||
|
z_stream *strm;
|
||||||
|
|
||||||
|
if (gz == NULL || gz->write)
|
||||||
|
return 0;
|
||||||
|
if (gz->err)
|
||||||
|
return 0;
|
||||||
|
strm = &(gz->strm);
|
||||||
|
strm->next_out = (void *)buf;
|
||||||
|
strm->avail_out = len;
|
||||||
|
do {
|
||||||
|
got = fread(in, 1, 1, gz->file);
|
||||||
|
if (got == 0)
|
||||||
|
break;
|
||||||
|
strm->next_in = in;
|
||||||
|
strm->avail_in = 1;
|
||||||
|
ret = inflate(strm, Z_NO_FLUSH);
|
||||||
|
if (ret == Z_DATA_ERROR) {
|
||||||
|
gz->err = Z_DATA_ERROR;
|
||||||
|
gz->msg = strm->msg;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (ret == Z_STREAM_END)
|
||||||
|
inflateReset(strm);
|
||||||
|
} while (strm->avail_out);
|
||||||
|
return len - strm->avail_out;
|
||||||
|
}
|
||||||
|
|
||||||
|
int gzclose OF((gzFile));
|
||||||
|
|
||||||
|
int gzclose(gz)
|
||||||
|
gzFile gz;
|
||||||
|
{
|
||||||
|
z_stream *strm;
|
||||||
|
unsigned char out[BUFLEN];
|
||||||
|
|
||||||
|
if (gz == NULL)
|
||||||
|
return Z_STREAM_ERROR;
|
||||||
|
strm = &(gz->strm);
|
||||||
|
if (gz->write) {
|
||||||
|
strm->next_in = Z_NULL;
|
||||||
|
strm->avail_in = 0;
|
||||||
|
do {
|
||||||
|
strm->next_out = out;
|
||||||
|
strm->avail_out = BUFLEN;
|
||||||
|
(void)deflate(strm, Z_FINISH);
|
||||||
|
fwrite(out, 1, BUFLEN - strm->avail_out, gz->file);
|
||||||
|
} while (strm->avail_out == 0);
|
||||||
|
deflateEnd(strm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
inflateEnd(strm);
|
||||||
|
fclose(gz->file);
|
||||||
|
free(gz);
|
||||||
|
return Z_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *gzerror OF((gzFile, int *));
|
||||||
|
|
||||||
|
const char *gzerror(gz, err)
|
||||||
|
gzFile gz;
|
||||||
|
int *err;
|
||||||
|
{
|
||||||
|
*err = gz->err;
|
||||||
|
return gz->msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
char *prog;
|
char *prog;
|
||||||
|
|
||||||
void error OF((const char *msg));
|
void error OF((const char *msg));
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" ?>
|
<?xml version="1.0" ?>
|
||||||
<package name="zlib" version="1.2.4.1">
|
<package name="zlib" version="1.2.7">
|
||||||
<library name="zlib" dlversion="1.2.4.1" dlname="z">
|
<library name="zlib" dlversion="1.2.7" dlname="z">
|
||||||
<property name="description"> zip compression library </property>
|
<property name="description"> zip compression library </property>
|
||||||
<property name="include-target-dir" value="$(@PACKAGE/install-includedir)" />
|
<property name="include-target-dir" value="$(@PACKAGE/install-includedir)" />
|
||||||
|
|
||||||
|
|||||||
55
trees.c
55
trees.c
@@ -1,5 +1,5 @@
|
|||||||
/* trees.c -- output deflated data using Huffman coding
|
/* trees.c -- output deflated data using Huffman coding
|
||||||
* Copyright (C) 1995-2009 Jean-loup Gailly
|
* Copyright (C) 1995-2012 Jean-loup Gailly
|
||||||
* detect_data_type() function provided freely by Cosmin Truta, 2006
|
* detect_data_type() function provided freely by Cosmin Truta, 2006
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* 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.
|
* 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.
|
* Local data. These are initialized only once.
|
||||||
*/
|
*/
|
||||||
@@ -351,13 +346,14 @@ void gen_trees_header()
|
|||||||
static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5));
|
static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5));
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(header, "const uch _dist_code[DIST_CODE_LEN] = {\n");
|
fprintf(header, "const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = {\n");
|
||||||
for (i = 0; i < DIST_CODE_LEN; i++) {
|
for (i = 0; i < DIST_CODE_LEN; i++) {
|
||||||
fprintf(header, "%2u%s", _dist_code[i],
|
fprintf(header, "%2u%s", _dist_code[i],
|
||||||
SEPARATOR(i, DIST_CODE_LEN-1, 20));
|
SEPARATOR(i, DIST_CODE_LEN-1, 20));
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(header, "const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {\n");
|
fprintf(header,
|
||||||
|
"const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= {\n");
|
||||||
for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) {
|
for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) {
|
||||||
fprintf(header, "%2u%s", _length_code[i],
|
fprintf(header, "%2u%s", _length_code[i],
|
||||||
SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20));
|
SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20));
|
||||||
@@ -382,7 +378,7 @@ void gen_trees_header()
|
|||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
* Initialize the tree data structures for a new zlib stream.
|
* Initialize the tree data structures for a new zlib stream.
|
||||||
*/
|
*/
|
||||||
void _tr_init(s)
|
void ZLIB_INTERNAL _tr_init(s)
|
||||||
deflate_state *s;
|
deflate_state *s;
|
||||||
{
|
{
|
||||||
tr_static_init();
|
tr_static_init();
|
||||||
@@ -398,7 +394,6 @@ void _tr_init(s)
|
|||||||
|
|
||||||
s->bi_buf = 0;
|
s->bi_buf = 0;
|
||||||
s->bi_valid = 0;
|
s->bi_valid = 0;
|
||||||
s->last_eob_len = 8; /* enough lookahead for inflate */
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
s->compressed_len = 0L;
|
s->compressed_len = 0L;
|
||||||
s->bits_sent = 0L;
|
s->bits_sent = 0L;
|
||||||
@@ -867,7 +862,7 @@ local void send_all_trees(s, lcodes, dcodes, blcodes)
|
|||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
* Send a stored block
|
* Send a stored block
|
||||||
*/
|
*/
|
||||||
void _tr_stored_block(s, buf, stored_len, last)
|
void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
|
||||||
deflate_state *s;
|
deflate_state *s;
|
||||||
charf *buf; /* input block */
|
charf *buf; /* input block */
|
||||||
ulg stored_len; /* length of input block */
|
ulg stored_len; /* length of input block */
|
||||||
@@ -881,18 +876,20 @@ void _tr_stored_block(s, buf, stored_len, last)
|
|||||||
copy_block(s, buf, (unsigned)stored_len, 1); /* with header */
|
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.
|
* Send one empty static block to give enough lookahead for inflate.
|
||||||
* This takes 10 bits, of which 7 may remain in the bit buffer.
|
* 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 _tr_align(s)
|
void ZLIB_INTERNAL _tr_align(s)
|
||||||
deflate_state *s;
|
deflate_state *s;
|
||||||
{
|
{
|
||||||
send_bits(s, STATIC_TREES<<1, 3);
|
send_bits(s, STATIC_TREES<<1, 3);
|
||||||
@@ -901,27 +898,13 @@ void _tr_align(s)
|
|||||||
s->compressed_len += 10L; /* 3 for block type, 7 for EOB */
|
s->compressed_len += 10L; /* 3 for block type, 7 for EOB */
|
||||||
#endif
|
#endif
|
||||||
bi_flush(s);
|
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
* Determine the best encoding for the current block: dynamic trees, static
|
* Determine the best encoding for the current block: dynamic trees, static
|
||||||
* trees or store, and output the encoded block to the zip file.
|
* trees or store, and output the encoded block to the zip file.
|
||||||
*/
|
*/
|
||||||
void _tr_flush_block(s, buf, stored_len, last)
|
void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
|
||||||
deflate_state *s;
|
deflate_state *s;
|
||||||
charf *buf; /* input block, or NULL if too old */
|
charf *buf; /* input block, or NULL if too old */
|
||||||
ulg stored_len; /* length of input block */
|
ulg stored_len; /* length of input block */
|
||||||
@@ -1022,7 +1005,7 @@ void _tr_flush_block(s, buf, stored_len, last)
|
|||||||
* Save the match info and tally the frequency counts. Return true if
|
* Save the match info and tally the frequency counts. Return true if
|
||||||
* the current block must be flushed.
|
* the current block must be flushed.
|
||||||
*/
|
*/
|
||||||
int _tr_tally (s, dist, lc)
|
int ZLIB_INTERNAL _tr_tally (s, dist, lc)
|
||||||
deflate_state *s;
|
deflate_state *s;
|
||||||
unsigned dist; /* distance of matched string */
|
unsigned dist; /* distance of matched string */
|
||||||
unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
|
unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
|
||||||
@@ -1117,7 +1100,6 @@ local void compress_block(s, ltree, dtree)
|
|||||||
} while (lx < s->last_lit);
|
} while (lx < s->last_lit);
|
||||||
|
|
||||||
send_code(s, END_BLOCK, ltree);
|
send_code(s, END_BLOCK, ltree);
|
||||||
s->last_eob_len = ltree[END_BLOCK].Len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
@@ -1225,7 +1207,6 @@ local void copy_block(s, buf, len, header)
|
|||||||
int header; /* true if block header must be written */
|
int header; /* true if block header must be written */
|
||||||
{
|
{
|
||||||
bi_windup(s); /* align on byte boundary */
|
bi_windup(s); /* align on byte boundary */
|
||||||
s->last_eob_len = 8; /* enough lookahead for inflate */
|
|
||||||
|
|
||||||
if (header) {
|
if (header) {
|
||||||
put_short(s, (ush)len);
|
put_short(s, (ush)len);
|
||||||
|
|||||||
4
trees.h
4
trees.h
@@ -70,7 +70,7 @@ local const ct_data static_dtree[D_CODES] = {
|
|||||||
{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}}
|
{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}}
|
||||||
};
|
};
|
||||||
|
|
||||||
const uch _dist_code[DIST_CODE_LEN] = {
|
const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = {
|
||||||
0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8,
|
0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8,
|
||||||
8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10,
|
8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10,
|
||||||
10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
|
10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
|
||||||
@@ -99,7 +99,7 @@ const uch _dist_code[DIST_CODE_LEN] = {
|
|||||||
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
|
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
|
||||||
};
|
};
|
||||||
|
|
||||||
const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {
|
const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= {
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12,
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12,
|
||||||
13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
|
13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19,
|
17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19,
|
||||||
|
|||||||
@@ -74,9 +74,9 @@ uncompr.obj: uncompr.c zlib.h zconf.h
|
|||||||
|
|
||||||
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
||||||
|
|
||||||
example.obj: example.c zlib.h zconf.h
|
example.obj: test/example.c zlib.h zconf.h
|
||||||
|
|
||||||
minigzip.obj: minigzip.c zlib.h zconf.h
|
minigzip.obj: test/minigzip.c zlib.h zconf.h
|
||||||
|
|
||||||
|
|
||||||
# For the sake of the old Borland make,
|
# For the sake of the old Borland make,
|
||||||
|
|||||||
@@ -1,23 +1,29 @@
|
|||||||
# Makefile for zlib, derived from Makefile.dj2.
|
# Makefile for zlib, derived from Makefile.dj2.
|
||||||
# Modified for mingw32 by C. Spieler, 6/16/98.
|
# Modified for mingw32 by C. Spieler, 6/16/98.
|
||||||
# Updated for zlib 1.2.x by Christian Spieler and Cosmin Truta, Mar-2003.
|
# Updated for zlib 1.2.x by Christian Spieler and Cosmin Truta, Mar-2003.
|
||||||
# Last updated: 1-Aug-2003.
|
# Last updated: Mar 2012.
|
||||||
# Tested under Cygwin and MinGW.
|
# Tested under Cygwin and MinGW.
|
||||||
|
|
||||||
# Copyright (C) 1995-2003 Jean-loup Gailly.
|
# Copyright (C) 1995-2003 Jean-loup Gailly.
|
||||||
# For conditions of distribution and use, see copyright notice in zlib.h
|
# For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
|
|
||||||
# To compile, or to compile and test, type:
|
# To compile, or to compile and test, type from the top level zlib directory:
|
||||||
#
|
#
|
||||||
# make -fmakefile.gcc; make test testdll -fmakefile.gcc
|
# make -fwin32/Makefile.gcc; make test testdll -fwin32/Makefile.gcc
|
||||||
#
|
#
|
||||||
# To use the asm code, type:
|
# To use the asm code, type:
|
||||||
# cp contrib/asm?86/match.S ./match.S
|
# cp contrib/asm?86/match.S ./match.S
|
||||||
# make LOC=-DASMV OBJA=match.o -fmakefile.gcc
|
# make LOC=-DASMV OBJA=match.o -fwin32/Makefile.gcc
|
||||||
#
|
#
|
||||||
# To install libz.a, zconf.h and zlib.h in the system directories, type:
|
# To install libz.a, zconf.h and zlib.h in the system directories, type:
|
||||||
#
|
#
|
||||||
# make install -fmakefile.gcc
|
# make install -fwin32/Makefile.gcc
|
||||||
|
#
|
||||||
|
# BINARY_PATH, INCLUDE_PATH and LIBRARY_PATH must be set.
|
||||||
|
#
|
||||||
|
# To install the shared lib, append SHARED_MODE=1 to the make command :
|
||||||
|
#
|
||||||
|
# make install -fwin32/Makefile.gcc SHARED_MODE=1
|
||||||
|
|
||||||
# Note:
|
# Note:
|
||||||
# If the platform is *not* MinGW (e.g. it is Cygwin or UWIN),
|
# If the platform is *not* MinGW (e.g. it is Cygwin or UWIN),
|
||||||
@@ -25,7 +31,12 @@
|
|||||||
|
|
||||||
STATICLIB = libz.a
|
STATICLIB = libz.a
|
||||||
SHAREDLIB = zlib1.dll
|
SHAREDLIB = zlib1.dll
|
||||||
IMPLIB = libzdll.a
|
IMPLIB = libz.dll.a
|
||||||
|
|
||||||
|
#
|
||||||
|
# Set to 1 if shared object needs to be installed
|
||||||
|
#
|
||||||
|
SHARED_MODE=0
|
||||||
|
|
||||||
#LOC = -DASMV
|
#LOC = -DASMV
|
||||||
#LOC = -DDEBUG -g
|
#LOC = -DDEBUG -g
|
||||||
@@ -38,7 +49,7 @@ AS = $(CC)
|
|||||||
ASFLAGS = $(LOC) -Wall
|
ASFLAGS = $(LOC) -Wall
|
||||||
|
|
||||||
LD = $(CC)
|
LD = $(CC)
|
||||||
LDFLAGS = $(LOC) -s
|
LDFLAGS = $(LOC)
|
||||||
|
|
||||||
AR = $(PREFIX)ar
|
AR = $(PREFIX)ar
|
||||||
ARFLAGS = rcs
|
ARFLAGS = rcs
|
||||||
@@ -53,7 +64,7 @@ CP = cp -fp
|
|||||||
INSTALL = $(CP)
|
INSTALL = $(CP)
|
||||||
RM = rm -f
|
RM = rm -f
|
||||||
|
|
||||||
prefix = /usr/local
|
prefix ?= /usr/local
|
||||||
exec_prefix = $(prefix)
|
exec_prefix = $(prefix)
|
||||||
|
|
||||||
OBJS = adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o \
|
OBJS = adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o \
|
||||||
@@ -82,43 +93,69 @@ $(STATICLIB): $(OBJS) $(OBJA)
|
|||||||
$(IMPLIB): $(SHAREDLIB)
|
$(IMPLIB): $(SHAREDLIB)
|
||||||
|
|
||||||
$(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlibrc.o
|
$(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlibrc.o
|
||||||
$(CC) -shared -Wl,--out-implib,$(IMPLIB) \
|
$(CC) -shared -Wl,--out-implib,$(IMPLIB) $(LDFLAGS) \
|
||||||
-o $@ win32/zlib.def $(OBJS) $(OBJA) zlibrc.o
|
-o $@ win32/zlib.def $(OBJS) $(OBJA) zlibrc.o
|
||||||
$(STRIP) $@
|
$(STRIP) $@
|
||||||
|
|
||||||
example.exe: example.o $(STATICLIB)
|
example.exe: example.o $(STATICLIB)
|
||||||
$(LD) $(LDFLAGS) -o $@ example.o $(STATICLIB)
|
$(LD) $(LDFLAGS) -o $@ example.o $(STATICLIB)
|
||||||
|
$(STRIP) $@
|
||||||
|
|
||||||
minigzip.exe: minigzip.o $(STATICLIB)
|
minigzip.exe: minigzip.o $(STATICLIB)
|
||||||
$(LD) $(LDFLAGS) -o $@ minigzip.o $(STATICLIB)
|
$(LD) $(LDFLAGS) -o $@ minigzip.o $(STATICLIB)
|
||||||
|
$(STRIP) $@
|
||||||
|
|
||||||
example_d.exe: example.o $(IMPLIB)
|
example_d.exe: example.o $(IMPLIB)
|
||||||
$(LD) $(LDFLAGS) -o $@ example.o $(IMPLIB)
|
$(LD) $(LDFLAGS) -o $@ example.o $(IMPLIB)
|
||||||
|
$(STRIP) $@
|
||||||
|
|
||||||
minigzip_d.exe: minigzip.o $(IMPLIB)
|
minigzip_d.exe: minigzip.o $(IMPLIB)
|
||||||
$(LD) $(LDFLAGS) -o $@ minigzip.o $(IMPLIB)
|
$(LD) $(LDFLAGS) -o $@ minigzip.o $(IMPLIB)
|
||||||
|
$(STRIP) $@
|
||||||
|
|
||||||
|
example.o: test/example.c zlib.h zconf.h
|
||||||
|
$(CC) $(CFLAGS) -I. -c -o $@ test/example.c
|
||||||
|
|
||||||
|
minigzip.o: test/minigzip.c zlib.h zconf.h
|
||||||
|
$(CC) $(CFLAGS) -I. -c -o $@ test/minigzip.c
|
||||||
|
|
||||||
zlibrc.o: win32/zlib1.rc
|
zlibrc.o: win32/zlib1.rc
|
||||||
$(RC) $(RCFLAGS) -o $@ win32/zlib1.rc
|
$(RC) $(RCFLAGS) -o $@ win32/zlib1.rc
|
||||||
|
|
||||||
|
|
||||||
# INCLUDE_PATH and LIBRARY_PATH must be set.
|
|
||||||
|
|
||||||
.PHONY: install uninstall clean
|
.PHONY: install uninstall clean
|
||||||
|
|
||||||
install: zlib.h zconf.h $(LIB)
|
install: zlib.h zconf.h $(STATICLIB) $(IMPLIB)
|
||||||
-@mkdir -p $(INCLUDE_PATH)
|
@if test -z "$(DESTDIR)$(INCLUDE_PATH)" -o -z "$(DESTDIR)$(LIBRARY_PATH)" -o -z "$(DESTDIR)$(BINARY_PATH)"; then \
|
||||||
-@mkdir -p $(LIBRARY_PATH)
|
echo INCLUDE_PATH, LIBRARY_PATH, and BINARY_PATH must be specified; \
|
||||||
-$(INSTALL) zlib.h $(INCLUDE_PATH)
|
exit 1; \
|
||||||
-$(INSTALL) zconf.h $(INCLUDE_PATH)
|
fi
|
||||||
-$(INSTALL) $(STATICLIB) $(LIBRARY_PATH)
|
-@mkdir -p '$(DESTDIR)$(INCLUDE_PATH)'
|
||||||
-$(INSTALL) $(IMPLIB) $(LIBRARY_PATH)
|
-@mkdir -p '$(DESTDIR)$(LIBRARY_PATH)' '$(DESTDIR)$(LIBRARY_PATH)'/pkgconfig
|
||||||
|
-if [ "$(SHARED_MODE)" = "1" ]; then \
|
||||||
|
mkdir -p '$(DESTDIR)$(BINARY_PATH)'; \
|
||||||
|
$(INSTALL) $(SHAREDLIB) '$(DESTDIR)$(BINARY_PATH)'; \
|
||||||
|
$(INSTALL) $(IMPLIB) '$(DESTDIR)$(LIBRARY_PATH)'; \
|
||||||
|
fi
|
||||||
|
-$(INSTALL) zlib.h '$(DESTDIR)$(INCLUDE_PATH)'
|
||||||
|
-$(INSTALL) zconf.h '$(DESTDIR)$(INCLUDE_PATH)'
|
||||||
|
-$(INSTALL) $(STATICLIB) '$(DESTDIR)$(LIBRARY_PATH)'
|
||||||
|
sed \
|
||||||
|
-e 's|@prefix@|${prefix}|g' \
|
||||||
|
-e 's|@exec_prefix@|${exec_prefix}|g' \
|
||||||
|
-e 's|@libdir@|$(LIBRARY_PATH)|g' \
|
||||||
|
-e 's|@sharedlibdir@|$(LIBRARY_PATH)|g' \
|
||||||
|
-e 's|@includedir@|$(INCLUDE_PATH)|g' \
|
||||||
|
-e 's|@VERSION@|'`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' zlib.h`'|g' \
|
||||||
|
zlib.pc.in > '$(DESTDIR)$(LIBRARY_PATH)'/pkgconfig/zlib.pc
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
-$(RM) $(INCLUDE_PATH)/zlib.h
|
-if [ "$(SHARED_MODE)" = "1" ]; then \
|
||||||
-$(RM) $(INCLUDE_PATH)/zconf.h
|
$(RM) '$(DESTDIR)$(BINARY_PATH)'/$(SHAREDLIB); \
|
||||||
-$(RM) $(LIBRARY_PATH)/$(STATICLIB)
|
$(RM) '$(DESTDIR)$(LIBRARY_PATH)'/$(IMPLIB); \
|
||||||
-$(RM) $(LIBRARY_PATH)/$(IMPLIB)
|
fi
|
||||||
|
-$(RM) '$(DESTDIR)$(INCLUDE_PATH)'/zlib.h
|
||||||
|
-$(RM) '$(DESTDIR)$(INCLUDE_PATH)'/zconf.h
|
||||||
|
-$(RM) '$(DESTDIR)$(LIBRARY_PATH)'/$(STATICLIB)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-$(RM) $(STATICLIB)
|
-$(RM) $(STATICLIB)
|
||||||
@@ -132,7 +169,6 @@ adler32.o: zlib.h zconf.h
|
|||||||
compress.o: zlib.h zconf.h
|
compress.o: zlib.h zconf.h
|
||||||
crc32.o: crc32.h zlib.h zconf.h
|
crc32.o: crc32.h zlib.h zconf.h
|
||||||
deflate.o: deflate.h zutil.h zlib.h zconf.h
|
deflate.o: deflate.h zutil.h zlib.h zconf.h
|
||||||
example.o: zlib.h zconf.h
|
|
||||||
gzclose.o: zlib.h zconf.h gzguts.h
|
gzclose.o: zlib.h zconf.h gzguts.h
|
||||||
gzlib.o: zlib.h zconf.h gzguts.h
|
gzlib.o: zlib.h zconf.h gzguts.h
|
||||||
gzread.o: zlib.h zconf.h gzguts.h
|
gzread.o: zlib.h zconf.h gzguts.h
|
||||||
@@ -141,7 +177,6 @@ inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
|
|||||||
inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
|
inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
|
||||||
infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
|
infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
|
||||||
inftrees.o: zutil.h zlib.h zconf.h inftrees.h
|
inftrees.o: zutil.h zlib.h zconf.h inftrees.h
|
||||||
minigzip.o: zlib.h zconf.h
|
|
||||||
trees.o: deflate.h zutil.h zlib.h zconf.h trees.h
|
trees.o: deflate.h zutil.h zlib.h zconf.h trees.h
|
||||||
uncompr.o: zlib.h zconf.h
|
uncompr.o: zlib.h zconf.h
|
||||||
zutil.o: zutil.h zlib.h zconf.h
|
zutil.o: zutil.h zlib.h zconf.h
|
||||||
|
|||||||
@@ -2,15 +2,16 @@
|
|||||||
# zlib is copyright (C) 1995-2006 Jean-loup Gailly and Mark Adler
|
# zlib is copyright (C) 1995-2006 Jean-loup Gailly and Mark Adler
|
||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# nmake -f win32/Makefile.msc (standard build)
|
# nmake -f win32/Makefile.msc (standard build)
|
||||||
# nmake -f win32/Makefile.msc LOC=-DFOO (nonstandard build)
|
# nmake -f win32/Makefile.msc LOC=-DFOO (nonstandard build)
|
||||||
# nmake -f win32/Makefile.msc LOC=-DASMV OBJA=match.obj (use ASM code)
|
# nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" \
|
||||||
|
# OBJA="inffas32.obj match686.obj" (use ASM code, x86)
|
||||||
|
# nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." \
|
||||||
|
# OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" (use ASM code, x64)
|
||||||
|
|
||||||
# optional build flags
|
# optional build flags
|
||||||
LOC =
|
LOC =
|
||||||
|
|
||||||
|
|
||||||
# variables
|
# variables
|
||||||
STATICLIB = zlib.lib
|
STATICLIB = zlib.lib
|
||||||
SHAREDLIB = zlib1.dll
|
SHAREDLIB = zlib1.dll
|
||||||
@@ -23,13 +24,13 @@ AR = lib
|
|||||||
RC = rc
|
RC = rc
|
||||||
CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC)
|
CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC)
|
||||||
WFLAGS = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
|
WFLAGS = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
|
||||||
ASFLAGS = -coff -Zi
|
ASFLAGS = -coff -Zi $(LOC)
|
||||||
LDFLAGS = -nologo -debug -incremental:no -opt:ref
|
LDFLAGS = -nologo -debug -incremental:no -opt:ref
|
||||||
ARFLAGS = -nologo
|
ARFLAGS = -nologo
|
||||||
RCFLAGS = /dWIN32 /r
|
RCFLAGS = /dWIN32 /r
|
||||||
|
|
||||||
OBJS = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj \
|
OBJS = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj \
|
||||||
gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj
|
gzwrite.obj infback.obj inflate.obj inftrees.obj inffast.obj trees.obj uncompr.obj zutil.obj
|
||||||
OBJA =
|
OBJA =
|
||||||
|
|
||||||
|
|
||||||
@@ -71,7 +72,16 @@ minigzip_d.exe: minigzip.obj $(IMPLIB)
|
|||||||
.c.obj:
|
.c.obj:
|
||||||
$(CC) -c $(WFLAGS) $(CFLAGS) $<
|
$(CC) -c $(WFLAGS) $(CFLAGS) $<
|
||||||
|
|
||||||
.asm.obj:
|
{test}.c.obj:
|
||||||
|
$(CC) -c -I. $(WFLAGS) $(CFLAGS) $<
|
||||||
|
|
||||||
|
{contrib/masmx64}.c.obj:
|
||||||
|
$(CC) -c $(WFLAGS) $(CFLAGS) $<
|
||||||
|
|
||||||
|
{contrib/masmx64}.asm.obj:
|
||||||
|
$(AS) -c $(ASFLAGS) $<
|
||||||
|
|
||||||
|
{contrib/masmx86}.asm.obj:
|
||||||
$(AS) -c $(ASFLAGS) $<
|
$(AS) -c $(ASFLAGS) $<
|
||||||
|
|
||||||
adler32.obj: adler32.c zlib.h zconf.h
|
adler32.obj: adler32.c zlib.h zconf.h
|
||||||
@@ -107,9 +117,20 @@ uncompr.obj: uncompr.c zlib.h zconf.h
|
|||||||
|
|
||||||
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
||||||
|
|
||||||
example.obj: example.c zlib.h zconf.h
|
gvmat64.obj: contrib\masmx64\gvmat64.asm
|
||||||
|
|
||||||
minigzip.obj: minigzip.c zlib.h zconf.h
|
inffasx64.obj: contrib\masmx64\inffasx64.asm
|
||||||
|
|
||||||
|
inffas8664.obj: contrib\masmx64\inffas8664.c zutil.h zlib.h zconf.h \
|
||||||
|
inftrees.h inflate.h inffast.h
|
||||||
|
|
||||||
|
inffas32.obj: contrib\masmx86\inffas32.asm
|
||||||
|
|
||||||
|
match686.obj: contrib\masmx86\match686.asm
|
||||||
|
|
||||||
|
example.obj: test/example.c zlib.h zconf.h
|
||||||
|
|
||||||
|
minigzip.obj: test/minigzip.c zlib.h zconf.h
|
||||||
|
|
||||||
zlib1.res: win32/zlib1.rc
|
zlib1.res: win32/zlib1.rc
|
||||||
$(RC) $(RCFLAGS) /fo$@ win32/zlib1.rc
|
$(RC) $(RCFLAGS) /fo$@ win32/zlib1.rc
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
ZLIB DATA COMPRESSION LIBRARY
|
ZLIB DATA COMPRESSION LIBRARY
|
||||||
|
|
||||||
zlib 1.2.4 is a general purpose data compression library. All the code is
|
zlib 1.2.7 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
|
thread safe. The data format used by the zlib library is described by RFCs
|
||||||
(Request for Comments) 1950 to 1952 in the files
|
(Request for Comments) 1950 to 1952 in the files
|
||||||
http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
|
http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
|
||||||
@@ -22,7 +22,7 @@ before asking for help.
|
|||||||
|
|
||||||
Manifest:
|
Manifest:
|
||||||
|
|
||||||
The package zlib-1.2.4-win32-x86.zip contains the following files:
|
The package zlib-1.2.7-win32-x86.zip will contain the following files:
|
||||||
|
|
||||||
README-WIN32.txt This document
|
README-WIN32.txt This document
|
||||||
ChangeLog Changes since previous zlib packages
|
ChangeLog Changes since previous zlib packages
|
||||||
@@ -47,9 +47,9 @@ The package zlib-1.2.4-win32-x86.zip contains the following files:
|
|||||||
zdll.lib Install these files into the compilers' LIB path if linking
|
zdll.lib Install these files into the compilers' LIB path if linking
|
||||||
zdll.exp a compiled program to the zlib1.dll binary
|
zdll.exp a compiled program to the zlib1.dll binary
|
||||||
|
|
||||||
zlib.lib Install these files into the compilers' LIB path if linking
|
zlib.lib Install these files into the compilers' LIB path to link zlib
|
||||||
zlib.pdb a compiled program to the zlib1.dll binary (zlib.pdb ensures
|
zlib.pdb into compiled programs, without zlib1.dll runtime dependency
|
||||||
that the resulting program may be debugged)
|
(zlib.pdb provides debugging info to the compile time linker)
|
||||||
|
|
||||||
zlib1.dll Install this binary shared library into the system PATH, or
|
zlib1.dll Install this binary shared library into the system PATH, or
|
||||||
the program's runtime directory (where the .exe resides)
|
the program's runtime directory (where the .exe resides)
|
||||||
@@ -58,7 +58,7 @@ The package zlib-1.2.4-win32-x86.zip contains the following files:
|
|||||||
|
|
||||||
All .pdb files above are entirely optional, but are very useful to a developer
|
All .pdb files above are entirely optional, but are very useful to a developer
|
||||||
attempting to diagnose program misbehavior or a crash. Many additional
|
attempting to diagnose program misbehavior or a crash. Many additional
|
||||||
important files for developers can be found in the zlib124.zip source package
|
important files for developers can be found in the zlib127.zip source package
|
||||||
available from http://zlib.net/ - review that package's README file for details.
|
available from http://zlib.net/ - review that package's README file for details.
|
||||||
|
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ are too numerous to cite here.
|
|||||||
|
|
||||||
Copyright notice:
|
Copyright notice:
|
||||||
|
|
||||||
(C) 1995-2010 Jean-loup Gailly and Mark Adler
|
(C) 1995-2012 Jean-loup Gailly and Mark Adler
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the authors be held liable for any damages
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
LIBRARY
|
|
||||||
; zlib data compression library
|
; zlib data compression library
|
||||||
|
|
||||||
EXPORTS
|
EXPORTS
|
||||||
; basic functions
|
; basic functions
|
||||||
zlibVersion
|
zlibVersion
|
||||||
@@ -15,6 +13,7 @@ EXPORTS
|
|||||||
deflateParams
|
deflateParams
|
||||||
deflateTune
|
deflateTune
|
||||||
deflateBound
|
deflateBound
|
||||||
|
deflatePending
|
||||||
deflatePrime
|
deflatePrime
|
||||||
deflateSetHeader
|
deflateSetHeader
|
||||||
inflateSetDictionary
|
inflateSetDictionary
|
||||||
@@ -57,6 +56,13 @@ EXPORTS
|
|||||||
gzclose_w
|
gzclose_w
|
||||||
gzerror
|
gzerror
|
||||||
gzclearerr
|
gzclearerr
|
||||||
|
; large file functions
|
||||||
|
gzopen64
|
||||||
|
gzseek64
|
||||||
|
gztell64
|
||||||
|
gzoffset64
|
||||||
|
adler32_combine64
|
||||||
|
crc32_combine64
|
||||||
; checksum functions
|
; checksum functions
|
||||||
adler32
|
adler32
|
||||||
crc32
|
crc32
|
||||||
@@ -68,7 +74,11 @@ EXPORTS
|
|||||||
inflateInit_
|
inflateInit_
|
||||||
inflateInit2_
|
inflateInit2_
|
||||||
inflateBackInit_
|
inflateBackInit_
|
||||||
|
gzgetc_
|
||||||
zError
|
zError
|
||||||
inflateSyncPoint
|
inflateSyncPoint
|
||||||
get_crc_table
|
get_crc_table
|
||||||
inflateUndermine
|
inflateUndermine
|
||||||
|
inflateResetKeep
|
||||||
|
deflateResetKeep
|
||||||
|
gzopen_w
|
||||||
|
|||||||
209
zconf.h
209
zconf.h
@@ -1,5 +1,5 @@
|
|||||||
/* zconf.h -- configuration of the zlib compression library
|
/* zconf.h -- configuration of the zlib compression library
|
||||||
* Copyright (C) 1995-2010 Jean-loup Gailly.
|
* Copyright (C) 1995-2012 Jean-loup Gailly.
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
* this permanently in zconf.h using "./configure --zprefix".
|
* this permanently in zconf.h using "./configure --zprefix".
|
||||||
*/
|
*/
|
||||||
#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */
|
#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */
|
||||||
|
# define Z_PREFIX_SET
|
||||||
|
|
||||||
/* all linked symbols */
|
/* all linked symbols */
|
||||||
# define _dist_code z__dist_code
|
# define _dist_code z__dist_code
|
||||||
@@ -27,9 +28,11 @@
|
|||||||
# define adler32 z_adler32
|
# define adler32 z_adler32
|
||||||
# define adler32_combine z_adler32_combine
|
# define adler32_combine z_adler32_combine
|
||||||
# define adler32_combine64 z_adler32_combine64
|
# define adler32_combine64 z_adler32_combine64
|
||||||
# define compress z_compress
|
# ifndef Z_SOLO
|
||||||
# define compress2 z_compress2
|
# define compress z_compress
|
||||||
# define compressBound z_compressBound
|
# define compress2 z_compress2
|
||||||
|
# define compressBound z_compressBound
|
||||||
|
# endif
|
||||||
# define crc32 z_crc32
|
# define crc32 z_crc32
|
||||||
# define crc32_combine z_crc32_combine
|
# define crc32_combine z_crc32_combine
|
||||||
# define crc32_combine64 z_crc32_combine64
|
# define crc32_combine64 z_crc32_combine64
|
||||||
@@ -40,44 +43,52 @@
|
|||||||
# define deflateInit2_ z_deflateInit2_
|
# define deflateInit2_ z_deflateInit2_
|
||||||
# define deflateInit_ z_deflateInit_
|
# define deflateInit_ z_deflateInit_
|
||||||
# define deflateParams z_deflateParams
|
# define deflateParams z_deflateParams
|
||||||
|
# define deflatePending z_deflatePending
|
||||||
# define deflatePrime z_deflatePrime
|
# define deflatePrime z_deflatePrime
|
||||||
# define deflateReset z_deflateReset
|
# define deflateReset z_deflateReset
|
||||||
|
# define deflateResetKeep z_deflateResetKeep
|
||||||
# define deflateSetDictionary z_deflateSetDictionary
|
# define deflateSetDictionary z_deflateSetDictionary
|
||||||
# define deflateSetHeader z_deflateSetHeader
|
# define deflateSetHeader z_deflateSetHeader
|
||||||
# define deflateTune z_deflateTune
|
# define deflateTune z_deflateTune
|
||||||
# define deflate_copyright z_deflate_copyright
|
# define deflate_copyright z_deflate_copyright
|
||||||
# define get_crc_table z_get_crc_table
|
# define get_crc_table z_get_crc_table
|
||||||
# define gz_error z_gz_error
|
# ifndef Z_SOLO
|
||||||
# define gz_intmax z_gz_intmax
|
# define gz_error z_gz_error
|
||||||
# define gz_strwinerror z_gz_strwinerror
|
# define gz_intmax z_gz_intmax
|
||||||
# define gzbuffer z_gzbuffer
|
# define gz_strwinerror z_gz_strwinerror
|
||||||
# define gzclearerr z_gzclearerr
|
# define gzbuffer z_gzbuffer
|
||||||
# define gzclose z_gzclose
|
# define gzclearerr z_gzclearerr
|
||||||
# define gzclose_r z_gzclose_r
|
# define gzclose z_gzclose
|
||||||
# define gzclose_w z_gzclose_w
|
# define gzclose_r z_gzclose_r
|
||||||
# define gzdirect z_gzdirect
|
# define gzclose_w z_gzclose_w
|
||||||
# define gzdopen z_gzdopen
|
# define gzdirect z_gzdirect
|
||||||
# define gzeof z_gzeof
|
# define gzdopen z_gzdopen
|
||||||
# define gzerror z_gzerror
|
# define gzeof z_gzeof
|
||||||
# define gzflush z_gzflush
|
# define gzerror z_gzerror
|
||||||
# define gzgetc z_gzgetc
|
# define gzflush z_gzflush
|
||||||
# define gzgets z_gzgets
|
# define gzgetc z_gzgetc
|
||||||
# define gzoffset z_gzoffset
|
# define gzgetc_ z_gzgetc_
|
||||||
# define gzoffset64 z_gzoffset64
|
# define gzgets z_gzgets
|
||||||
# define gzopen z_gzopen
|
# define gzoffset z_gzoffset
|
||||||
# define gzopen64 z_gzopen64
|
# define gzoffset64 z_gzoffset64
|
||||||
# define gzprintf z_gzprintf
|
# define gzopen z_gzopen
|
||||||
# define gzputc z_gzputc
|
# define gzopen64 z_gzopen64
|
||||||
# define gzputs z_gzputs
|
# ifdef _WIN32
|
||||||
# define gzread z_gzread
|
# define gzopen_w z_gzopen_w
|
||||||
# define gzrewind z_gzrewind
|
# endif
|
||||||
# define gzseek z_gzseek
|
# define gzprintf z_gzprintf
|
||||||
# define gzseek64 z_gzseek64
|
# define gzputc z_gzputc
|
||||||
# define gzsetparams z_gzsetparams
|
# define gzputs z_gzputs
|
||||||
# define gztell z_gztell
|
# define gzread z_gzread
|
||||||
# define gztell64 z_gztell64
|
# define gzrewind z_gzrewind
|
||||||
# define gzungetc z_gzungetc
|
# define gzseek z_gzseek
|
||||||
# define gzwrite z_gzwrite
|
# define gzseek64 z_gzseek64
|
||||||
|
# define gzsetparams z_gzsetparams
|
||||||
|
# define gztell z_gztell
|
||||||
|
# define gztell64 z_gztell64
|
||||||
|
# define gzungetc z_gzungetc
|
||||||
|
# define gzwrite z_gzwrite
|
||||||
|
# endif
|
||||||
# define inflate z_inflate
|
# define inflate z_inflate
|
||||||
# define inflateBack z_inflateBack
|
# define inflateBack z_inflateBack
|
||||||
# define inflateBackEnd z_inflateBackEnd
|
# define inflateBackEnd z_inflateBackEnd
|
||||||
@@ -95,13 +106,18 @@
|
|||||||
# define inflateSync z_inflateSync
|
# define inflateSync z_inflateSync
|
||||||
# define inflateSyncPoint z_inflateSyncPoint
|
# define inflateSyncPoint z_inflateSyncPoint
|
||||||
# define inflateUndermine z_inflateUndermine
|
# define inflateUndermine z_inflateUndermine
|
||||||
|
# define inflateResetKeep z_inflateResetKeep
|
||||||
# define inflate_copyright z_inflate_copyright
|
# define inflate_copyright z_inflate_copyright
|
||||||
# define inflate_fast z_inflate_fast
|
# define inflate_fast z_inflate_fast
|
||||||
# define inflate_table z_inflate_table
|
# define inflate_table z_inflate_table
|
||||||
# define uncompress z_uncompress
|
# ifndef Z_SOLO
|
||||||
|
# define uncompress z_uncompress
|
||||||
|
# endif
|
||||||
# define zError z_zError
|
# define zError z_zError
|
||||||
# define zcalloc z_zcalloc
|
# ifndef Z_SOLO
|
||||||
# define zcfree z_zcfree
|
# define zcalloc z_zcalloc
|
||||||
|
# define zcfree z_zcfree
|
||||||
|
# endif
|
||||||
# define zlibCompileFlags z_zlibCompileFlags
|
# define zlibCompileFlags z_zlibCompileFlags
|
||||||
# define zlibVersion z_zlibVersion
|
# define zlibVersion z_zlibVersion
|
||||||
|
|
||||||
@@ -111,7 +127,9 @@
|
|||||||
# define alloc_func z_alloc_func
|
# define alloc_func z_alloc_func
|
||||||
# define charf z_charf
|
# define charf z_charf
|
||||||
# define free_func z_free_func
|
# define free_func z_free_func
|
||||||
# define gzFile z_gzFile
|
# ifndef Z_SOLO
|
||||||
|
# define gzFile z_gzFile
|
||||||
|
# endif
|
||||||
# define gz_header z_gz_header
|
# define gz_header z_gz_header
|
||||||
# define gz_headerp z_gz_headerp
|
# define gz_headerp z_gz_headerp
|
||||||
# define in_func z_in_func
|
# define in_func z_in_func
|
||||||
@@ -197,6 +215,12 @@
|
|||||||
# endif
|
# endif
|
||||||
#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: */
|
/* Some Mac compilers merge all .h files incorrectly: */
|
||||||
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
|
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
|
||||||
# define NO_DUMMY_DECL
|
# define NO_DUMMY_DECL
|
||||||
@@ -243,6 +267,14 @@
|
|||||||
# endif
|
# endif
|
||||||
#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
|
/* The following definitions for FAR are needed only for MSDOS mixed
|
||||||
* model programming (small or medium model with some far allocations).
|
* model programming (small or medium model with some far allocations).
|
||||||
* This was tested only with MSC; for other MSDOS compilers you may have
|
* This was tested only with MSC; for other MSDOS compilers you may have
|
||||||
@@ -315,10 +347,6 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_VISIBILITY_PRAGMA
|
|
||||||
# define ZEXTERN __attribute__((visibility ("default"))) extern
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ZEXTERN
|
#ifndef ZEXTERN
|
||||||
# define ZEXTERN extern
|
# define ZEXTERN extern
|
||||||
#endif
|
#endif
|
||||||
@@ -360,22 +388,85 @@ typedef uLong FAR uLongf;
|
|||||||
typedef Byte *voidp;
|
typedef Byte *voidp;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* ./configure may #define Z_U4 here */
|
||||||
|
|
||||||
|
#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
|
||||||
|
# include <limits.h>
|
||||||
|
# if (UINT_MAX == 0xffffffffUL)
|
||||||
|
# define Z_U4 unsigned
|
||||||
|
# else
|
||||||
|
# if (ULONG_MAX == 0xffffffffUL)
|
||||||
|
# define Z_U4 unsigned long
|
||||||
|
# else
|
||||||
|
# if (USHRT_MAX == 0xffffffffUL)
|
||||||
|
# define Z_U4 unsigned short
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef Z_U4
|
||||||
|
typedef Z_U4 z_crc_t;
|
||||||
|
#else
|
||||||
|
typedef unsigned long z_crc_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */
|
#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */
|
||||||
# define Z_HAVE_UNISTD_H
|
# define Z_HAVE_UNISTD_H
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(Z_HAVE_UNISTD_H) || _LARGEFILE64_SOURCE == 1
|
#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */
|
||||||
# include <sys/types.h> /* for off_t */
|
# define Z_HAVE_STDARG_H
|
||||||
# include <unistd.h> /* for SEEK_* and off_t */
|
#endif
|
||||||
# ifdef VMS
|
|
||||||
# include <unixio.h> /* for off_t */
|
#ifdef STDC
|
||||||
# endif
|
# ifndef Z_SOLO
|
||||||
# ifndef z_off_t
|
# include <sys/types.h> /* for off_t */
|
||||||
# define z_off_t off_t
|
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef SEEK_SET
|
#ifdef _WIN32
|
||||||
|
# include <stddef.h> /* for wchar_t */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
|
||||||
|
* "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
|
||||||
|
* though the former does not conform to the LFS document), but considering
|
||||||
|
* both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
|
||||||
|
* equivalently requesting no 64-bit operations
|
||||||
|
*/
|
||||||
|
#if defined(LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
|
||||||
|
# undef _LARGEFILE64_SOURCE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
|
||||||
|
# define Z_HAVE_UNISTD_H
|
||||||
|
#endif
|
||||||
|
#ifndef Z_SOLO
|
||||||
|
# if defined(Z_HAVE_UNISTD_H) || defined(LARGEFILE64_SOURCE)
|
||||||
|
# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
|
||||||
|
# ifdef VMS
|
||||||
|
# include <unixio.h> /* for off_t */
|
||||||
|
# endif
|
||||||
|
# ifndef z_off_t
|
||||||
|
# define z_off_t off_t
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0
|
||||||
|
# define Z_LFS64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64)
|
||||||
|
# define Z_LARGE64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64)
|
||||||
|
# define Z_WANT64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(SEEK_SET) && !defined(Z_SOLO)
|
||||||
# define SEEK_SET 0 /* Seek from beginning of file. */
|
# define SEEK_SET 0 /* Seek from beginning of file. */
|
||||||
# define SEEK_CUR 1 /* Seek from current position. */
|
# define SEEK_CUR 1 /* Seek from current position. */
|
||||||
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
|
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
|
||||||
@@ -385,12 +476,14 @@ typedef uLong FAR uLongf;
|
|||||||
# define z_off_t long
|
# define z_off_t long
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__OS400__)
|
#if !defined(_WIN32) && defined(Z_LARGE64)
|
||||||
# define NO_vsnprintf
|
# define z_off64_t off64_t
|
||||||
#endif
|
#else
|
||||||
|
# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
|
||||||
#if defined(__MVS__)
|
# define z_off64_t __int64
|
||||||
# define NO_vsnprintf
|
# else
|
||||||
|
# define z_off64_t z_off_t
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* MVS linker does not support external names larger than 8 bytes */
|
/* MVS linker does not support external names larger than 8 bytes */
|
||||||
|
|||||||
209
zconf.h.cmakein
209
zconf.h.cmakein
@@ -1,5 +1,5 @@
|
|||||||
/* zconf.h -- configuration of the zlib compression library
|
/* zconf.h -- configuration of the zlib compression library
|
||||||
* Copyright (C) 1995-2010 Jean-loup Gailly.
|
* Copyright (C) 1995-2012 Jean-loup Gailly.
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
* this permanently in zconf.h using "./configure --zprefix".
|
* this permanently in zconf.h using "./configure --zprefix".
|
||||||
*/
|
*/
|
||||||
#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */
|
#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */
|
||||||
|
# define Z_PREFIX_SET
|
||||||
|
|
||||||
/* all linked symbols */
|
/* all linked symbols */
|
||||||
# define _dist_code z__dist_code
|
# define _dist_code z__dist_code
|
||||||
@@ -29,9 +30,11 @@
|
|||||||
# define adler32 z_adler32
|
# define adler32 z_adler32
|
||||||
# define adler32_combine z_adler32_combine
|
# define adler32_combine z_adler32_combine
|
||||||
# define adler32_combine64 z_adler32_combine64
|
# define adler32_combine64 z_adler32_combine64
|
||||||
# define compress z_compress
|
# ifndef Z_SOLO
|
||||||
# define compress2 z_compress2
|
# define compress z_compress
|
||||||
# define compressBound z_compressBound
|
# define compress2 z_compress2
|
||||||
|
# define compressBound z_compressBound
|
||||||
|
# endif
|
||||||
# define crc32 z_crc32
|
# define crc32 z_crc32
|
||||||
# define crc32_combine z_crc32_combine
|
# define crc32_combine z_crc32_combine
|
||||||
# define crc32_combine64 z_crc32_combine64
|
# define crc32_combine64 z_crc32_combine64
|
||||||
@@ -42,44 +45,52 @@
|
|||||||
# define deflateInit2_ z_deflateInit2_
|
# define deflateInit2_ z_deflateInit2_
|
||||||
# define deflateInit_ z_deflateInit_
|
# define deflateInit_ z_deflateInit_
|
||||||
# define deflateParams z_deflateParams
|
# define deflateParams z_deflateParams
|
||||||
|
# define deflatePending z_deflatePending
|
||||||
# define deflatePrime z_deflatePrime
|
# define deflatePrime z_deflatePrime
|
||||||
# define deflateReset z_deflateReset
|
# define deflateReset z_deflateReset
|
||||||
|
# define deflateResetKeep z_deflateResetKeep
|
||||||
# define deflateSetDictionary z_deflateSetDictionary
|
# define deflateSetDictionary z_deflateSetDictionary
|
||||||
# define deflateSetHeader z_deflateSetHeader
|
# define deflateSetHeader z_deflateSetHeader
|
||||||
# define deflateTune z_deflateTune
|
# define deflateTune z_deflateTune
|
||||||
# define deflate_copyright z_deflate_copyright
|
# define deflate_copyright z_deflate_copyright
|
||||||
# define get_crc_table z_get_crc_table
|
# define get_crc_table z_get_crc_table
|
||||||
# define gz_error z_gz_error
|
# ifndef Z_SOLO
|
||||||
# define gz_intmax z_gz_intmax
|
# define gz_error z_gz_error
|
||||||
# define gz_strwinerror z_gz_strwinerror
|
# define gz_intmax z_gz_intmax
|
||||||
# define gzbuffer z_gzbuffer
|
# define gz_strwinerror z_gz_strwinerror
|
||||||
# define gzclearerr z_gzclearerr
|
# define gzbuffer z_gzbuffer
|
||||||
# define gzclose z_gzclose
|
# define gzclearerr z_gzclearerr
|
||||||
# define gzclose_r z_gzclose_r
|
# define gzclose z_gzclose
|
||||||
# define gzclose_w z_gzclose_w
|
# define gzclose_r z_gzclose_r
|
||||||
# define gzdirect z_gzdirect
|
# define gzclose_w z_gzclose_w
|
||||||
# define gzdopen z_gzdopen
|
# define gzdirect z_gzdirect
|
||||||
# define gzeof z_gzeof
|
# define gzdopen z_gzdopen
|
||||||
# define gzerror z_gzerror
|
# define gzeof z_gzeof
|
||||||
# define gzflush z_gzflush
|
# define gzerror z_gzerror
|
||||||
# define gzgetc z_gzgetc
|
# define gzflush z_gzflush
|
||||||
# define gzgets z_gzgets
|
# define gzgetc z_gzgetc
|
||||||
# define gzoffset z_gzoffset
|
# define gzgetc_ z_gzgetc_
|
||||||
# define gzoffset64 z_gzoffset64
|
# define gzgets z_gzgets
|
||||||
# define gzopen z_gzopen
|
# define gzoffset z_gzoffset
|
||||||
# define gzopen64 z_gzopen64
|
# define gzoffset64 z_gzoffset64
|
||||||
# define gzprintf z_gzprintf
|
# define gzopen z_gzopen
|
||||||
# define gzputc z_gzputc
|
# define gzopen64 z_gzopen64
|
||||||
# define gzputs z_gzputs
|
# ifdef _WIN32
|
||||||
# define gzread z_gzread
|
# define gzopen_w z_gzopen_w
|
||||||
# define gzrewind z_gzrewind
|
# endif
|
||||||
# define gzseek z_gzseek
|
# define gzprintf z_gzprintf
|
||||||
# define gzseek64 z_gzseek64
|
# define gzputc z_gzputc
|
||||||
# define gzsetparams z_gzsetparams
|
# define gzputs z_gzputs
|
||||||
# define gztell z_gztell
|
# define gzread z_gzread
|
||||||
# define gztell64 z_gztell64
|
# define gzrewind z_gzrewind
|
||||||
# define gzungetc z_gzungetc
|
# define gzseek z_gzseek
|
||||||
# define gzwrite z_gzwrite
|
# define gzseek64 z_gzseek64
|
||||||
|
# define gzsetparams z_gzsetparams
|
||||||
|
# define gztell z_gztell
|
||||||
|
# define gztell64 z_gztell64
|
||||||
|
# define gzungetc z_gzungetc
|
||||||
|
# define gzwrite z_gzwrite
|
||||||
|
# endif
|
||||||
# define inflate z_inflate
|
# define inflate z_inflate
|
||||||
# define inflateBack z_inflateBack
|
# define inflateBack z_inflateBack
|
||||||
# define inflateBackEnd z_inflateBackEnd
|
# define inflateBackEnd z_inflateBackEnd
|
||||||
@@ -97,13 +108,18 @@
|
|||||||
# define inflateSync z_inflateSync
|
# define inflateSync z_inflateSync
|
||||||
# define inflateSyncPoint z_inflateSyncPoint
|
# define inflateSyncPoint z_inflateSyncPoint
|
||||||
# define inflateUndermine z_inflateUndermine
|
# define inflateUndermine z_inflateUndermine
|
||||||
|
# define inflateResetKeep z_inflateResetKeep
|
||||||
# define inflate_copyright z_inflate_copyright
|
# define inflate_copyright z_inflate_copyright
|
||||||
# define inflate_fast z_inflate_fast
|
# define inflate_fast z_inflate_fast
|
||||||
# define inflate_table z_inflate_table
|
# define inflate_table z_inflate_table
|
||||||
# define uncompress z_uncompress
|
# ifndef Z_SOLO
|
||||||
|
# define uncompress z_uncompress
|
||||||
|
# endif
|
||||||
# define zError z_zError
|
# define zError z_zError
|
||||||
# define zcalloc z_zcalloc
|
# ifndef Z_SOLO
|
||||||
# define zcfree z_zcfree
|
# define zcalloc z_zcalloc
|
||||||
|
# define zcfree z_zcfree
|
||||||
|
# endif
|
||||||
# define zlibCompileFlags z_zlibCompileFlags
|
# define zlibCompileFlags z_zlibCompileFlags
|
||||||
# define zlibVersion z_zlibVersion
|
# define zlibVersion z_zlibVersion
|
||||||
|
|
||||||
@@ -113,7 +129,9 @@
|
|||||||
# define alloc_func z_alloc_func
|
# define alloc_func z_alloc_func
|
||||||
# define charf z_charf
|
# define charf z_charf
|
||||||
# define free_func z_free_func
|
# define free_func z_free_func
|
||||||
# define gzFile z_gzFile
|
# ifndef Z_SOLO
|
||||||
|
# define gzFile z_gzFile
|
||||||
|
# endif
|
||||||
# define gz_header z_gz_header
|
# define gz_header z_gz_header
|
||||||
# define gz_headerp z_gz_headerp
|
# define gz_headerp z_gz_headerp
|
||||||
# define in_func z_in_func
|
# define in_func z_in_func
|
||||||
@@ -199,6 +217,12 @@
|
|||||||
# endif
|
# endif
|
||||||
#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: */
|
/* Some Mac compilers merge all .h files incorrectly: */
|
||||||
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
|
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
|
||||||
# define NO_DUMMY_DECL
|
# define NO_DUMMY_DECL
|
||||||
@@ -245,6 +269,14 @@
|
|||||||
# endif
|
# endif
|
||||||
#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
|
/* The following definitions for FAR are needed only for MSDOS mixed
|
||||||
* model programming (small or medium model with some far allocations).
|
* model programming (small or medium model with some far allocations).
|
||||||
* This was tested only with MSC; for other MSDOS compilers you may have
|
* This was tested only with MSC; for other MSDOS compilers you may have
|
||||||
@@ -317,10 +349,6 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_VISIBILITY_PRAGMA
|
|
||||||
# define ZEXTERN __attribute__((visibility ("default"))) extern
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ZEXTERN
|
#ifndef ZEXTERN
|
||||||
# define ZEXTERN extern
|
# define ZEXTERN extern
|
||||||
#endif
|
#endif
|
||||||
@@ -362,22 +390,85 @@ typedef uLong FAR uLongf;
|
|||||||
typedef Byte *voidp;
|
typedef Byte *voidp;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* ./configure may #define Z_U4 here */
|
||||||
|
|
||||||
|
#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
|
||||||
|
# include <limits.h>
|
||||||
|
# if (UINT_MAX == 0xffffffffUL)
|
||||||
|
# define Z_U4 unsigned
|
||||||
|
# else
|
||||||
|
# if (ULONG_MAX == 0xffffffffUL)
|
||||||
|
# define Z_U4 unsigned long
|
||||||
|
# else
|
||||||
|
# if (USHRT_MAX == 0xffffffffUL)
|
||||||
|
# define Z_U4 unsigned short
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef Z_U4
|
||||||
|
typedef Z_U4 z_crc_t;
|
||||||
|
#else
|
||||||
|
typedef unsigned long z_crc_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */
|
#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */
|
||||||
# define Z_HAVE_UNISTD_H
|
# define Z_HAVE_UNISTD_H
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(Z_HAVE_UNISTD_H) || _LARGEFILE64_SOURCE == 1
|
#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */
|
||||||
# include <sys/types.h> /* for off_t */
|
# define Z_HAVE_STDARG_H
|
||||||
# include <unistd.h> /* for SEEK_* and off_t */
|
#endif
|
||||||
# ifdef VMS
|
|
||||||
# include <unixio.h> /* for off_t */
|
#ifdef STDC
|
||||||
# endif
|
# ifndef Z_SOLO
|
||||||
# ifndef z_off_t
|
# include <sys/types.h> /* for off_t */
|
||||||
# define z_off_t off_t
|
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef SEEK_SET
|
#ifdef _WIN32
|
||||||
|
# include <stddef.h> /* for wchar_t */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
|
||||||
|
* "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
|
||||||
|
* though the former does not conform to the LFS document), but considering
|
||||||
|
* both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
|
||||||
|
* equivalently requesting no 64-bit operations
|
||||||
|
*/
|
||||||
|
#if defined(LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
|
||||||
|
# undef _LARGEFILE64_SOURCE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
|
||||||
|
# define Z_HAVE_UNISTD_H
|
||||||
|
#endif
|
||||||
|
#ifndef Z_SOLO
|
||||||
|
# if defined(Z_HAVE_UNISTD_H) || defined(LARGEFILE64_SOURCE)
|
||||||
|
# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
|
||||||
|
# ifdef VMS
|
||||||
|
# include <unixio.h> /* for off_t */
|
||||||
|
# endif
|
||||||
|
# ifndef z_off_t
|
||||||
|
# define z_off_t off_t
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0
|
||||||
|
# define Z_LFS64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64)
|
||||||
|
# define Z_LARGE64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64)
|
||||||
|
# define Z_WANT64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(SEEK_SET) && !defined(Z_SOLO)
|
||||||
# define SEEK_SET 0 /* Seek from beginning of file. */
|
# define SEEK_SET 0 /* Seek from beginning of file. */
|
||||||
# define SEEK_CUR 1 /* Seek from current position. */
|
# define SEEK_CUR 1 /* Seek from current position. */
|
||||||
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
|
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
|
||||||
@@ -387,12 +478,14 @@ typedef uLong FAR uLongf;
|
|||||||
# define z_off_t long
|
# define z_off_t long
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__OS400__)
|
#if !defined(_WIN32) && defined(Z_LARGE64)
|
||||||
# define NO_vsnprintf
|
# define z_off64_t off64_t
|
||||||
#endif
|
#else
|
||||||
|
# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
|
||||||
#if defined(__MVS__)
|
# define z_off64_t __int64
|
||||||
# define NO_vsnprintf
|
# else
|
||||||
|
# define z_off64_t z_off_t
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* MVS linker does not support external names larger than 8 bytes */
|
/* MVS linker does not support external names larger than 8 bytes */
|
||||||
|
|||||||
209
zconf.h.in
209
zconf.h.in
@@ -1,5 +1,5 @@
|
|||||||
/* zconf.h -- configuration of the zlib compression library
|
/* zconf.h -- configuration of the zlib compression library
|
||||||
* Copyright (C) 1995-2010 Jean-loup Gailly.
|
* Copyright (C) 1995-2012 Jean-loup Gailly.
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
* this permanently in zconf.h using "./configure --zprefix".
|
* this permanently in zconf.h using "./configure --zprefix".
|
||||||
*/
|
*/
|
||||||
#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */
|
#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */
|
||||||
|
# define Z_PREFIX_SET
|
||||||
|
|
||||||
/* all linked symbols */
|
/* all linked symbols */
|
||||||
# define _dist_code z__dist_code
|
# define _dist_code z__dist_code
|
||||||
@@ -27,9 +28,11 @@
|
|||||||
# define adler32 z_adler32
|
# define adler32 z_adler32
|
||||||
# define adler32_combine z_adler32_combine
|
# define adler32_combine z_adler32_combine
|
||||||
# define adler32_combine64 z_adler32_combine64
|
# define adler32_combine64 z_adler32_combine64
|
||||||
# define compress z_compress
|
# ifndef Z_SOLO
|
||||||
# define compress2 z_compress2
|
# define compress z_compress
|
||||||
# define compressBound z_compressBound
|
# define compress2 z_compress2
|
||||||
|
# define compressBound z_compressBound
|
||||||
|
# endif
|
||||||
# define crc32 z_crc32
|
# define crc32 z_crc32
|
||||||
# define crc32_combine z_crc32_combine
|
# define crc32_combine z_crc32_combine
|
||||||
# define crc32_combine64 z_crc32_combine64
|
# define crc32_combine64 z_crc32_combine64
|
||||||
@@ -40,44 +43,52 @@
|
|||||||
# define deflateInit2_ z_deflateInit2_
|
# define deflateInit2_ z_deflateInit2_
|
||||||
# define deflateInit_ z_deflateInit_
|
# define deflateInit_ z_deflateInit_
|
||||||
# define deflateParams z_deflateParams
|
# define deflateParams z_deflateParams
|
||||||
|
# define deflatePending z_deflatePending
|
||||||
# define deflatePrime z_deflatePrime
|
# define deflatePrime z_deflatePrime
|
||||||
# define deflateReset z_deflateReset
|
# define deflateReset z_deflateReset
|
||||||
|
# define deflateResetKeep z_deflateResetKeep
|
||||||
# define deflateSetDictionary z_deflateSetDictionary
|
# define deflateSetDictionary z_deflateSetDictionary
|
||||||
# define deflateSetHeader z_deflateSetHeader
|
# define deflateSetHeader z_deflateSetHeader
|
||||||
# define deflateTune z_deflateTune
|
# define deflateTune z_deflateTune
|
||||||
# define deflate_copyright z_deflate_copyright
|
# define deflate_copyright z_deflate_copyright
|
||||||
# define get_crc_table z_get_crc_table
|
# define get_crc_table z_get_crc_table
|
||||||
# define gz_error z_gz_error
|
# ifndef Z_SOLO
|
||||||
# define gz_intmax z_gz_intmax
|
# define gz_error z_gz_error
|
||||||
# define gz_strwinerror z_gz_strwinerror
|
# define gz_intmax z_gz_intmax
|
||||||
# define gzbuffer z_gzbuffer
|
# define gz_strwinerror z_gz_strwinerror
|
||||||
# define gzclearerr z_gzclearerr
|
# define gzbuffer z_gzbuffer
|
||||||
# define gzclose z_gzclose
|
# define gzclearerr z_gzclearerr
|
||||||
# define gzclose_r z_gzclose_r
|
# define gzclose z_gzclose
|
||||||
# define gzclose_w z_gzclose_w
|
# define gzclose_r z_gzclose_r
|
||||||
# define gzdirect z_gzdirect
|
# define gzclose_w z_gzclose_w
|
||||||
# define gzdopen z_gzdopen
|
# define gzdirect z_gzdirect
|
||||||
# define gzeof z_gzeof
|
# define gzdopen z_gzdopen
|
||||||
# define gzerror z_gzerror
|
# define gzeof z_gzeof
|
||||||
# define gzflush z_gzflush
|
# define gzerror z_gzerror
|
||||||
# define gzgetc z_gzgetc
|
# define gzflush z_gzflush
|
||||||
# define gzgets z_gzgets
|
# define gzgetc z_gzgetc
|
||||||
# define gzoffset z_gzoffset
|
# define gzgetc_ z_gzgetc_
|
||||||
# define gzoffset64 z_gzoffset64
|
# define gzgets z_gzgets
|
||||||
# define gzopen z_gzopen
|
# define gzoffset z_gzoffset
|
||||||
# define gzopen64 z_gzopen64
|
# define gzoffset64 z_gzoffset64
|
||||||
# define gzprintf z_gzprintf
|
# define gzopen z_gzopen
|
||||||
# define gzputc z_gzputc
|
# define gzopen64 z_gzopen64
|
||||||
# define gzputs z_gzputs
|
# ifdef _WIN32
|
||||||
# define gzread z_gzread
|
# define gzopen_w z_gzopen_w
|
||||||
# define gzrewind z_gzrewind
|
# endif
|
||||||
# define gzseek z_gzseek
|
# define gzprintf z_gzprintf
|
||||||
# define gzseek64 z_gzseek64
|
# define gzputc z_gzputc
|
||||||
# define gzsetparams z_gzsetparams
|
# define gzputs z_gzputs
|
||||||
# define gztell z_gztell
|
# define gzread z_gzread
|
||||||
# define gztell64 z_gztell64
|
# define gzrewind z_gzrewind
|
||||||
# define gzungetc z_gzungetc
|
# define gzseek z_gzseek
|
||||||
# define gzwrite z_gzwrite
|
# define gzseek64 z_gzseek64
|
||||||
|
# define gzsetparams z_gzsetparams
|
||||||
|
# define gztell z_gztell
|
||||||
|
# define gztell64 z_gztell64
|
||||||
|
# define gzungetc z_gzungetc
|
||||||
|
# define gzwrite z_gzwrite
|
||||||
|
# endif
|
||||||
# define inflate z_inflate
|
# define inflate z_inflate
|
||||||
# define inflateBack z_inflateBack
|
# define inflateBack z_inflateBack
|
||||||
# define inflateBackEnd z_inflateBackEnd
|
# define inflateBackEnd z_inflateBackEnd
|
||||||
@@ -95,13 +106,18 @@
|
|||||||
# define inflateSync z_inflateSync
|
# define inflateSync z_inflateSync
|
||||||
# define inflateSyncPoint z_inflateSyncPoint
|
# define inflateSyncPoint z_inflateSyncPoint
|
||||||
# define inflateUndermine z_inflateUndermine
|
# define inflateUndermine z_inflateUndermine
|
||||||
|
# define inflateResetKeep z_inflateResetKeep
|
||||||
# define inflate_copyright z_inflate_copyright
|
# define inflate_copyright z_inflate_copyright
|
||||||
# define inflate_fast z_inflate_fast
|
# define inflate_fast z_inflate_fast
|
||||||
# define inflate_table z_inflate_table
|
# define inflate_table z_inflate_table
|
||||||
# define uncompress z_uncompress
|
# ifndef Z_SOLO
|
||||||
|
# define uncompress z_uncompress
|
||||||
|
# endif
|
||||||
# define zError z_zError
|
# define zError z_zError
|
||||||
# define zcalloc z_zcalloc
|
# ifndef Z_SOLO
|
||||||
# define zcfree z_zcfree
|
# define zcalloc z_zcalloc
|
||||||
|
# define zcfree z_zcfree
|
||||||
|
# endif
|
||||||
# define zlibCompileFlags z_zlibCompileFlags
|
# define zlibCompileFlags z_zlibCompileFlags
|
||||||
# define zlibVersion z_zlibVersion
|
# define zlibVersion z_zlibVersion
|
||||||
|
|
||||||
@@ -111,7 +127,9 @@
|
|||||||
# define alloc_func z_alloc_func
|
# define alloc_func z_alloc_func
|
||||||
# define charf z_charf
|
# define charf z_charf
|
||||||
# define free_func z_free_func
|
# define free_func z_free_func
|
||||||
# define gzFile z_gzFile
|
# ifndef Z_SOLO
|
||||||
|
# define gzFile z_gzFile
|
||||||
|
# endif
|
||||||
# define gz_header z_gz_header
|
# define gz_header z_gz_header
|
||||||
# define gz_headerp z_gz_headerp
|
# define gz_headerp z_gz_headerp
|
||||||
# define in_func z_in_func
|
# define in_func z_in_func
|
||||||
@@ -197,6 +215,12 @@
|
|||||||
# endif
|
# endif
|
||||||
#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: */
|
/* Some Mac compilers merge all .h files incorrectly: */
|
||||||
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
|
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
|
||||||
# define NO_DUMMY_DECL
|
# define NO_DUMMY_DECL
|
||||||
@@ -243,6 +267,14 @@
|
|||||||
# endif
|
# endif
|
||||||
#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
|
/* The following definitions for FAR are needed only for MSDOS mixed
|
||||||
* model programming (small or medium model with some far allocations).
|
* model programming (small or medium model with some far allocations).
|
||||||
* This was tested only with MSC; for other MSDOS compilers you may have
|
* This was tested only with MSC; for other MSDOS compilers you may have
|
||||||
@@ -315,10 +347,6 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_VISIBILITY_PRAGMA
|
|
||||||
# define ZEXTERN __attribute__((visibility ("default"))) extern
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ZEXTERN
|
#ifndef ZEXTERN
|
||||||
# define ZEXTERN extern
|
# define ZEXTERN extern
|
||||||
#endif
|
#endif
|
||||||
@@ -360,22 +388,85 @@ typedef uLong FAR uLongf;
|
|||||||
typedef Byte *voidp;
|
typedef Byte *voidp;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* ./configure may #define Z_U4 here */
|
||||||
|
|
||||||
|
#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
|
||||||
|
# include <limits.h>
|
||||||
|
# if (UINT_MAX == 0xffffffffUL)
|
||||||
|
# define Z_U4 unsigned
|
||||||
|
# else
|
||||||
|
# if (ULONG_MAX == 0xffffffffUL)
|
||||||
|
# define Z_U4 unsigned long
|
||||||
|
# else
|
||||||
|
# if (USHRT_MAX == 0xffffffffUL)
|
||||||
|
# define Z_U4 unsigned short
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef Z_U4
|
||||||
|
typedef Z_U4 z_crc_t;
|
||||||
|
#else
|
||||||
|
typedef unsigned long z_crc_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */
|
#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */
|
||||||
# define Z_HAVE_UNISTD_H
|
# define Z_HAVE_UNISTD_H
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(Z_HAVE_UNISTD_H) || _LARGEFILE64_SOURCE == 1
|
#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */
|
||||||
# include <sys/types.h> /* for off_t */
|
# define Z_HAVE_STDARG_H
|
||||||
# include <unistd.h> /* for SEEK_* and off_t */
|
#endif
|
||||||
# ifdef VMS
|
|
||||||
# include <unixio.h> /* for off_t */
|
#ifdef STDC
|
||||||
# endif
|
# ifndef Z_SOLO
|
||||||
# ifndef z_off_t
|
# include <sys/types.h> /* for off_t */
|
||||||
# define z_off_t off_t
|
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef SEEK_SET
|
#ifdef _WIN32
|
||||||
|
# include <stddef.h> /* for wchar_t */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
|
||||||
|
* "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
|
||||||
|
* though the former does not conform to the LFS document), but considering
|
||||||
|
* both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
|
||||||
|
* equivalently requesting no 64-bit operations
|
||||||
|
*/
|
||||||
|
#if defined(LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
|
||||||
|
# undef _LARGEFILE64_SOURCE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
|
||||||
|
# define Z_HAVE_UNISTD_H
|
||||||
|
#endif
|
||||||
|
#ifndef Z_SOLO
|
||||||
|
# if defined(Z_HAVE_UNISTD_H) || defined(LARGEFILE64_SOURCE)
|
||||||
|
# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
|
||||||
|
# ifdef VMS
|
||||||
|
# include <unixio.h> /* for off_t */
|
||||||
|
# endif
|
||||||
|
# ifndef z_off_t
|
||||||
|
# define z_off_t off_t
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0
|
||||||
|
# define Z_LFS64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64)
|
||||||
|
# define Z_LARGE64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64)
|
||||||
|
# define Z_WANT64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(SEEK_SET) && !defined(Z_SOLO)
|
||||||
# define SEEK_SET 0 /* Seek from beginning of file. */
|
# define SEEK_SET 0 /* Seek from beginning of file. */
|
||||||
# define SEEK_CUR 1 /* Seek from current position. */
|
# define SEEK_CUR 1 /* Seek from current position. */
|
||||||
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
|
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
|
||||||
@@ -385,12 +476,14 @@ typedef uLong FAR uLongf;
|
|||||||
# define z_off_t long
|
# define z_off_t long
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__OS400__)
|
#if !defined(_WIN32) && defined(Z_LARGE64)
|
||||||
# define NO_vsnprintf
|
# define z_off64_t off64_t
|
||||||
#endif
|
#else
|
||||||
|
# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
|
||||||
#if defined(__MVS__)
|
# define z_off64_t __int64
|
||||||
# define NO_vsnprintf
|
# else
|
||||||
|
# define z_off64_t z_off_t
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* MVS linker does not support external names larger than 8 bytes */
|
/* MVS linker does not support external names larger than 8 bytes */
|
||||||
|
|||||||
18
zlib.3
18
zlib.3
@@ -1,4 +1,4 @@
|
|||||||
.TH ZLIB 3 "28 Mar 2010"
|
.TH ZLIB 3 "2 May 2012"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
zlib \- compression/decompression library
|
zlib \- compression/decompression library
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@@ -36,9 +36,9 @@ All functions of the compression library are documented in the file
|
|||||||
.IR zlib.h .
|
.IR zlib.h .
|
||||||
The distribution source includes examples of use of the library
|
The distribution source includes examples of use of the library
|
||||||
in the files
|
in the files
|
||||||
.I example.c
|
.I test/example.c
|
||||||
and
|
and
|
||||||
.IR minigzip.c,
|
.IR test/minigzip.c,
|
||||||
as well as other examples in the
|
as well as other examples in the
|
||||||
.IR examples/
|
.IR examples/
|
||||||
directory.
|
directory.
|
||||||
@@ -65,7 +65,7 @@ A Python interface to
|
|||||||
written by A.M. Kuchling (amk@magnet.com),
|
written by A.M. Kuchling (amk@magnet.com),
|
||||||
is available in Python 1.5 and later versions:
|
is available in Python 1.5 and later versions:
|
||||||
.IP
|
.IP
|
||||||
http://www.python.org/doc/lib/module-zlib.html
|
http://docs.python.org/library/zlib.html
|
||||||
.LP
|
.LP
|
||||||
.I zlib
|
.I zlib
|
||||||
is built into
|
is built into
|
||||||
@@ -95,11 +95,11 @@ http://zlib.net/
|
|||||||
The data format used by the zlib library is described by RFC
|
The data format used by the zlib library is described by RFC
|
||||||
(Request for Comments) 1950 to 1952 in the files:
|
(Request for Comments) 1950 to 1952 in the files:
|
||||||
.IP
|
.IP
|
||||||
http://www.ietf.org/rfc/rfc1950.txt (for the zlib header and trailer format)
|
http://tools.ietf.org/html/rfc1950 (for the zlib header and trailer format)
|
||||||
.br
|
.br
|
||||||
http://www.ietf.org/rfc/rfc1951.txt (for the deflate compressed data format)
|
http://tools.ietf.org/html/rfc1951 (for the deflate compressed data format)
|
||||||
.br
|
.br
|
||||||
http://www.ietf.org/rfc/rfc1952.txt (for the gzip header and trailer format)
|
http://tools.ietf.org/html/rfc1952 (for the gzip header and trailer format)
|
||||||
.LP
|
.LP
|
||||||
Mark Nelson wrote an article about
|
Mark Nelson wrote an article about
|
||||||
.I zlib
|
.I zlib
|
||||||
@@ -125,8 +125,8 @@ before asking for help.
|
|||||||
Send questions and/or comments to zlib@gzip.org,
|
Send questions and/or comments to zlib@gzip.org,
|
||||||
or (for the Windows DLL version) to Gilles Vollant (info@winimage.com).
|
or (for the Windows DLL version) to Gilles Vollant (info@winimage.com).
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
Version 1.2.4.1
|
Version 1.2.7
|
||||||
Copyright (C) 1995-2010 Jean-loup Gailly (jloup@gzip.org)
|
Copyright (C) 1995-2012 Jean-loup Gailly (jloup@gzip.org)
|
||||||
and Mark Adler (madler@alumni.caltech.edu).
|
and Mark Adler (madler@alumni.caltech.edu).
|
||||||
.LP
|
.LP
|
||||||
This software is provided "as-is,"
|
This software is provided "as-is,"
|
||||||
|
|||||||
BIN
zlib.3.pdf
BIN
zlib.3.pdf
Binary file not shown.
341
zlib.h
341
zlib.h
@@ -1,7 +1,7 @@
|
|||||||
/* zlib.h -- interface of the 'zlib' general purpose compression library
|
/* zlib.h -- interface of the 'zlib' general purpose compression library
|
||||||
version 1.2.4.1, March 28th, 2010
|
version 1.2.7, May 2nd, 2012
|
||||||
|
|
||||||
Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
|
Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the authors be held liable for any damages
|
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
|
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
|
Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950
|
||||||
(zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
|
(zlib format), rfc1951 (deflate format) and rfc1952 (gzip format).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef ZLIB_H
|
#ifndef ZLIB_H
|
||||||
@@ -37,12 +37,12 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ZLIB_VERSION "1.2.4.1"
|
#define ZLIB_VERSION "1.2.7"
|
||||||
#define ZLIB_VERNUM 0x1241
|
#define ZLIB_VERNUM 0x1270
|
||||||
#define ZLIB_VER_MAJOR 1
|
#define ZLIB_VER_MAJOR 1
|
||||||
#define ZLIB_VER_MINOR 2
|
#define ZLIB_VER_MINOR 2
|
||||||
#define ZLIB_VER_REVISION 4
|
#define ZLIB_VER_REVISION 7
|
||||||
#define ZLIB_VER_SUBREVISION 1
|
#define ZLIB_VER_SUBREVISION 0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The 'zlib' compression library provides in-memory compression and
|
The 'zlib' compression library provides in-memory compression and
|
||||||
@@ -83,15 +83,15 @@ typedef void (*free_func) OF((voidpf opaque, voidpf address));
|
|||||||
struct internal_state;
|
struct internal_state;
|
||||||
|
|
||||||
typedef struct z_stream_s {
|
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 */
|
uInt avail_in; /* number of bytes available at next_in */
|
||||||
uLong total_in; /* total nb of input bytes read so far */
|
uLong total_in; /* total number of input bytes read so far */
|
||||||
|
|
||||||
Bytef *next_out; /* next output byte should be put there */
|
Bytef *next_out; /* next output byte should be put there */
|
||||||
uInt avail_out; /* remaining free space at next_out */
|
uInt avail_out; /* remaining free space at next_out */
|
||||||
uLong total_out; /* total nb of bytes output so far */
|
uLong total_out; /* total number 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 */
|
struct internal_state FAR *state; /* not visible by applications */
|
||||||
|
|
||||||
alloc_func zalloc; /* used to allocate the internal state */
|
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
|
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
|
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
|
value returned by deflateBound (see below). Then deflate is guaranteed to
|
||||||
Z_STREAM_END, then it must be called again as described above.
|
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
|
deflate() sets strm->adler to the adler32 checksum of all input read
|
||||||
so far (that is, total_in bytes).
|
so far (that is, total_in bytes).
|
||||||
@@ -451,23 +452,29 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
|
|||||||
error. However if all decompression is to be performed in a single step (a
|
error. However if all decompression is to be performed in a single step (a
|
||||||
single call of inflate), the parameter flush should be set to Z_FINISH. In
|
single call of inflate), the parameter flush should be set to Z_FINISH. In
|
||||||
this case all pending input is processed and all pending output is flushed;
|
this case all pending input is processed and all pending output is flushed;
|
||||||
avail_out must be large enough to hold all the uncompressed data. (The size
|
avail_out must be large enough to hold all of the uncompressed data for the
|
||||||
of the uncompressed data may have been saved by the compressor for this
|
operation to complete. (The size of the uncompressed data may have been
|
||||||
purpose.) The next operation on this stream must be inflateEnd to deallocate
|
saved by the compressor for this purpose.) The use of Z_FINISH is not
|
||||||
the decompression state. The use of Z_FINISH is never required, but can be
|
required to perform an inflation in one step. However it may be used to
|
||||||
used to inform inflate that a faster approach may be used for the single
|
inform inflate that a faster approach can be used for the single inflate()
|
||||||
inflate() call.
|
call. Z_FINISH also informs inflate to not maintain a sliding window if the
|
||||||
|
stream completes, which reduces inflate's memory footprint. If the stream
|
||||||
|
does not complete, either because not all of the stream is provided or not
|
||||||
|
enough output space is provided, then a sliding window will be allocated and
|
||||||
|
inflate() can be called again to continue the operation as if Z_NO_FLUSH had
|
||||||
|
been used.
|
||||||
|
|
||||||
In this implementation, inflate() always flushes as much output as
|
In this implementation, inflate() always flushes as much output as
|
||||||
possible to the output buffer, and always uses the faster approach on the
|
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
|
first call. So the effects of the flush parameter in this implementation are
|
||||||
is on the return value of inflate(), as noted below, or when it returns early
|
on the return value of inflate() as noted below, when inflate() returns early
|
||||||
because Z_BLOCK or Z_TREES is used.
|
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
|
If a preset dictionary is needed after this call (see inflateSetDictionary
|
||||||
below), inflate sets strm->adler to the adler32 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
|
chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
|
||||||
strm->adler to the adler32 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
|
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
|
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
|
checksum is equal to that saved by the compressor and returns Z_STREAM_END
|
||||||
@@ -478,7 +485,9 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
|
|||||||
initializing with inflateInit2(). Any information contained in the gzip
|
initializing with inflateInit2(). Any information contained in the gzip
|
||||||
header is not retained, so applications that need that information should
|
header is not retained, so applications that need that information should
|
||||||
instead use raw inflate, see inflateInit2() below, or inflateBack() and
|
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
|
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
|
or more output produced), Z_STREAM_END if the end of the compressed data has
|
||||||
@@ -580,10 +589,15 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
|
|||||||
uInt dictLength));
|
uInt dictLength));
|
||||||
/*
|
/*
|
||||||
Initializes the compression dictionary from the given byte sequence
|
Initializes the compression dictionary from the given byte sequence
|
||||||
without producing any compressed output. This function must be called
|
without producing any compressed output. When using the zlib format, this
|
||||||
immediately after deflateInit, deflateInit2 or deflateReset, before any call
|
function must be called immediately after deflateInit, deflateInit2 or
|
||||||
of deflate. The compressor and decompressor must use exactly the same
|
deflateReset, and before any call of deflate. When doing raw deflate, this
|
||||||
dictionary (see inflateSetDictionary).
|
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
|
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
|
to be encountered later in the data to be compressed, with the most commonly
|
||||||
@@ -610,8 +624,8 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
|
|||||||
deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
|
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
|
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
|
inconsistent (for example if deflate has already been called for this stream
|
||||||
or if the compression method is bsort). deflateSetDictionary does not
|
or if not at a block boundary for raw deflate). deflateSetDictionary does
|
||||||
perform any compression: this will be done by deflate().
|
not perform any compression: this will be done by deflate().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
|
ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
|
||||||
@@ -688,9 +702,29 @@ ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
|
|||||||
deflation of sourceLen bytes. It must be called after deflateInit() or
|
deflation of sourceLen bytes. It must be called after deflateInit() or
|
||||||
deflateInit2(), and after deflateSetHeader(), if used. This would be used
|
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
|
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,
|
ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
|
||||||
int bits,
|
int bits,
|
||||||
int value));
|
int value));
|
||||||
@@ -703,8 +737,9 @@ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
|
|||||||
than or equal to 16, and that many of the least significant bits of value
|
than or equal to 16, and that many of the least significant bits of value
|
||||||
will be inserted in the output.
|
will be inserted in the output.
|
||||||
|
|
||||||
deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
|
deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough
|
||||||
stream state was inconsistent.
|
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,
|
ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
|
||||||
@@ -790,10 +825,11 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
|
|||||||
if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
|
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.
|
can be determined from the adler32 value returned by that call of inflate.
|
||||||
The compressor and decompressor must use exactly the same dictionary (see
|
The compressor and decompressor must use exactly the same dictionary (see
|
||||||
deflateSetDictionary). For raw inflate, this function can be called
|
deflateSetDictionary). For raw inflate, this function can be called at any
|
||||||
immediately after inflateInit2() or inflateReset() and before any call of
|
time to set the dictionary. If the provided dictionary is smaller than the
|
||||||
inflate() to set the dictionary. The application must insure that the
|
window and there is already data in the window, then the provided dictionary
|
||||||
dictionary that was used for compression is provided.
|
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
|
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
|
parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is
|
||||||
@@ -805,17 +841,21 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
|
|||||||
|
|
||||||
ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
|
ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
|
||||||
/*
|
/*
|
||||||
Skips invalid compressed data until a full flush point (see above the
|
Skips invalid compressed data until a possible full flush point (see above
|
||||||
description of deflate with Z_FULL_FLUSH) can be found, or until all
|
for the description of deflate with Z_FULL_FLUSH) can be found, or until all
|
||||||
available input is skipped. No output is provided.
|
available input is skipped. No output is provided.
|
||||||
|
|
||||||
inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
|
inflateSync searches for a 00 00 FF FF pattern in the compressed data.
|
||||||
if no more input was provided, Z_DATA_ERROR if no flush point has been
|
All full flush points have this pattern, but not all occurences of this
|
||||||
found, or Z_STREAM_ERROR if the stream structure was inconsistent. In the
|
pattern are full flush points.
|
||||||
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,
|
inflateSync returns Z_OK if a possible full flush point has been found,
|
||||||
the application may repeatedly call inflateSync, providing more input each
|
Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point
|
||||||
time, until success or end of the input data.
|
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,
|
ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
|
||||||
@@ -962,7 +1002,7 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
|
|||||||
See inflateBack() for the usage of these routines.
|
See inflateBack() for the usage of these routines.
|
||||||
|
|
||||||
inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
|
inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
|
||||||
the paramaters are invalid, Z_MEM_ERROR if the internal state could not be
|
the parameters are invalid, Z_MEM_ERROR if the internal state could not be
|
||||||
allocated, or Z_VERSION_ERROR if the version of the library does not match
|
allocated, or Z_VERSION_ERROR if the version of the library does not match
|
||||||
the version of the header file.
|
the version of the header file.
|
||||||
*/
|
*/
|
||||||
@@ -1088,6 +1128,7 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
|
|||||||
27-31: 0 (reserved)
|
27-31: 0 (reserved)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef Z_SOLO
|
||||||
|
|
||||||
/* utility functions */
|
/* utility functions */
|
||||||
|
|
||||||
@@ -1149,10 +1190,11 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
|
|||||||
|
|
||||||
uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
|
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
|
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 */
|
/* gzip file access functions */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1162,7 +1204,7 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
|
|||||||
wrapper, documented in RFC 1952, wrapped around a deflate stream.
|
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));
|
ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
|
||||||
@@ -1172,13 +1214,28 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
|
|||||||
a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
|
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'
|
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
|
for fixed code compression as in "wb9F". (See the description of
|
||||||
deflateInit2 for more information about the strategy parameter.) Also "a"
|
deflateInit2 for more information about the strategy parameter.) 'T' will
|
||||||
can be used instead of "w" to request that the gzip stream that will be
|
request transparent writing or appending with no compression and not using
|
||||||
written be appended to the file. "+" will result in an error, since reading
|
the gzip format.
|
||||||
and writing to the same gzip file is not supported.
|
|
||||||
|
"a" can be used instead of "w" to request that the gzip stream that will
|
||||||
|
be written be appended to the file. "+" will result in an error, since
|
||||||
|
reading and writing to the same gzip file is not supported. The addition of
|
||||||
|
"x" when writing will create the file exclusively, which fails if the file
|
||||||
|
already exists. On systems that support it, the addition of "e" when
|
||||||
|
reading or writing will set the flag to close the file on an execve() call.
|
||||||
|
|
||||||
|
These functions, as well as gzip, will read and decode a sequence of gzip
|
||||||
|
streams in a file. The append function of gzopen() can be used to create
|
||||||
|
such a file. (Also see gzflush() for another way to do this.) When
|
||||||
|
appending, gzopen does not test whether the file begins with a gzip stream,
|
||||||
|
nor does it look for the end of the gzip streams to begin appending. gzopen
|
||||||
|
will simply append a gzip stream to the existing file.
|
||||||
|
|
||||||
gzopen can be used to read a file which is not in gzip format; in this
|
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
|
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
|
insufficient memory to allocate the gzFile state, or if an invalid mode was
|
||||||
@@ -1197,7 +1254,11 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
|
|||||||
descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
|
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,
|
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
|
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
|
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
|
gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not
|
||||||
@@ -1235,14 +1296,26 @@ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
|
|||||||
ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
|
ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
|
||||||
/*
|
/*
|
||||||
Reads the given number of uncompressed bytes from the compressed file. If
|
Reads the given number of uncompressed bytes from the compressed file. If
|
||||||
the input file was not in gzip format, gzread copies the given number of
|
the input file is not in gzip format, gzread copies the given number of
|
||||||
bytes into the buffer.
|
bytes into the buffer directly from the file.
|
||||||
|
|
||||||
After reaching the end of a gzip stream in the input, gzread will continue
|
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
|
to read, looking for another gzip stream. Any number of gzip streams may be
|
||||||
of the input file directly without decompression. The entire input file
|
concatenated in the input file, and will all be decompressed by gzread().
|
||||||
will be read if gzread is called until it returns less than the requested
|
If something other than a gzip stream is encountered after a gzip stream,
|
||||||
len.
|
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
|
gzread returns the number of uncompressed bytes actually read, less than
|
||||||
len for end of file, or -1 for error.
|
len for end of file, or -1 for error.
|
||||||
@@ -1256,7 +1329,7 @@ ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
|
|||||||
error.
|
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
|
Converts, formats, and writes the arguments to the compressed file under
|
||||||
control of the format string, as in fprintf. gzprintf returns the number of
|
control of the format string, as in fprintf. gzprintf returns the number of
|
||||||
@@ -1301,7 +1374,10 @@ ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
|
|||||||
ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
|
ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
|
||||||
/*
|
/*
|
||||||
Reads one byte from the compressed file. gzgetc returns this byte or -1
|
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));
|
ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
|
||||||
@@ -1397,9 +1473,7 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file));
|
|||||||
ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
|
ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
|
||||||
/*
|
/*
|
||||||
Returns true (1) if file is being copied directly while reading, or false
|
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
|
(0) if file is a gzip stream being decompressed.
|
||||||
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.
|
|
||||||
|
|
||||||
If the input file is empty, gzdirect() will return true, since the input
|
If the input file is empty, gzdirect() will return true, since the input
|
||||||
does not contain a gzip stream.
|
does not contain a gzip stream.
|
||||||
@@ -1408,6 +1482,13 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
|
|||||||
cause buffers to be allocated to allow reading the file to determine if it
|
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
|
is a gzip file. Therefore if gzbuffer() is used, it should be called before
|
||||||
gzdirect().
|
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));
|
ZEXTERN int ZEXPORT gzclose OF((gzFile file));
|
||||||
@@ -1419,7 +1500,8 @@ ZEXTERN int ZEXPORT gzclose OF((gzFile file));
|
|||||||
must not be called more than once on the same allocation.
|
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
|
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));
|
ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
|
||||||
@@ -1457,6 +1539,7 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
|
|||||||
file that is being written concurrently.
|
file that is being written concurrently.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#endif /* !Z_SOLO */
|
||||||
|
|
||||||
/* checksum functions */
|
/* checksum functions */
|
||||||
|
|
||||||
@@ -1492,16 +1575,17 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
|
|||||||
Combine two Adler-32 checksums into one. For two sequences of bytes, seq1
|
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
|
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
|
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));
|
ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
|
||||||
/*
|
/*
|
||||||
Update a running CRC-32 with the bytes buf[0..len-1] and return the
|
Update a running CRC-32 with the bytes buf[0..len-1] and return the
|
||||||
updated CRC-32. If buf is Z_NULL, this function returns the required
|
updated CRC-32. If buf is Z_NULL, this function returns the required
|
||||||
initial value for the for the crc. Pre- and post-conditioning (one's
|
initial value for the crc. Pre- and post-conditioning (one's complement) is
|
||||||
complement) is performed within this function so it shouldn't be done by the
|
performed within this function so it shouldn't be done by the application.
|
||||||
application.
|
|
||||||
|
|
||||||
Usage example:
|
Usage example:
|
||||||
|
|
||||||
@@ -1544,41 +1628,81 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
|
|||||||
const char *version,
|
const char *version,
|
||||||
int stream_size));
|
int stream_size));
|
||||||
#define deflateInit(strm, level) \
|
#define deflateInit(strm, level) \
|
||||||
deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
|
deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
|
||||||
#define inflateInit(strm) \
|
#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) \
|
#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
|
||||||
deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
|
deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
|
||||||
(strategy), ZLIB_VERSION, sizeof(z_stream))
|
(strategy), ZLIB_VERSION, (int)sizeof(z_stream))
|
||||||
#define inflateInit2(strm, windowBits) \
|
#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) \
|
#define inflateBackInit(strm, windowBits, window) \
|
||||||
inflateBackInit_((strm), (windowBits), (window), \
|
inflateBackInit_((strm), (windowBits), (window), \
|
||||||
ZLIB_VERSION, sizeof(z_stream))
|
ZLIB_VERSION, (int)sizeof(z_stream))
|
||||||
|
|
||||||
#if _LARGEFILE64_SOURCE == 1 && _LFS64_LARGEFILE == 1
|
#ifndef Z_SOLO
|
||||||
ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
|
|
||||||
ZEXTERN off64_t ZEXPORT gzseek64 OF((gzFile, off64_t, int));
|
/* gzgetc() macro and its supporting function and exposed data structure. Note
|
||||||
ZEXTERN off64_t ZEXPORT gztell64 OF((gzFile));
|
* that the real internal state is much larger than the exposed structure.
|
||||||
ZEXTERN off64_t ZEXPORT gzoffset64 OF((gzFile));
|
* This abbreviated structure exposes just enough for the gzgetc() macro. The
|
||||||
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, off64_t));
|
* user should not mess with these exposed elements, since their names or
|
||||||
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, off64_t));
|
* 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)); /* backward compatibility */
|
||||||
|
#ifdef Z_PREFIX_SET
|
||||||
|
# undef z_gzgetc
|
||||||
|
# define z_gzgetc(g) \
|
||||||
|
((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
|
||||||
|
#else
|
||||||
|
# define gzgetc(g) \
|
||||||
|
((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(ZLIB_INTERNAL) && _FILE_OFFSET_BITS == 64 && _LFS64_LARGEFILE == 1
|
/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or
|
||||||
# define gzopen gzopen64
|
* change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if
|
||||||
# define gzseek gzseek64
|
* both are true, the application gets the *64 functions, and the regular
|
||||||
# define gztell gztell64
|
* functions are changed to 64 bits) -- in case these are set on systems
|
||||||
# define gzoffset gzoffset64
|
* without large file support, _LFS64_LARGEFILE must also be true
|
||||||
# define adler32_combine adler32_combine64
|
*/
|
||||||
# define crc32_combine crc32_combine64
|
#ifdef Z_LARGE64
|
||||||
# if _LARGEFILE64_SOURCE != 1
|
ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
|
||||||
|
ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
|
||||||
|
ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
|
||||||
|
ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
|
||||||
|
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
|
||||||
|
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64)
|
||||||
|
# ifdef Z_PREFIX_SET
|
||||||
|
# define z_gzopen z_gzopen64
|
||||||
|
# define z_gzseek z_gzseek64
|
||||||
|
# define z_gztell z_gztell64
|
||||||
|
# define z_gzoffset z_gzoffset64
|
||||||
|
# define z_adler32_combine z_adler32_combine64
|
||||||
|
# define z_crc32_combine z_crc32_combine64
|
||||||
|
# else
|
||||||
|
# define gzopen gzopen64
|
||||||
|
# define gzseek gzseek64
|
||||||
|
# define gztell gztell64
|
||||||
|
# define gzoffset gzoffset64
|
||||||
|
# define adler32_combine adler32_combine64
|
||||||
|
# define crc32_combine crc32_combine64
|
||||||
|
# endif
|
||||||
|
# ifndef Z_LARGE64
|
||||||
ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
|
ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
|
||||||
ZEXTERN off_t ZEXPORT gzseek64 OF((gzFile, off_t, int));
|
ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int));
|
||||||
ZEXTERN off_t ZEXPORT gztell64 OF((gzFile));
|
ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile));
|
||||||
ZEXTERN off_t ZEXPORT gzoffset64 OF((gzFile));
|
ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
|
||||||
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, off_t));
|
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
|
||||||
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, off_t));
|
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
|
||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
|
ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
|
||||||
@@ -1589,14 +1713,29 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
|
|||||||
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
|
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
|
||||||
#endif
|
#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)
|
#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
|
||||||
struct internal_state {int dummy;}; /* hack for buggy compilers */
|
struct internal_state {int dummy;};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* undocumented functions */
|
||||||
ZEXTERN const char * ZEXPORT zError OF((int));
|
ZEXTERN const char * ZEXPORT zError OF((int));
|
||||||
ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp));
|
ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp));
|
||||||
ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void));
|
ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void));
|
||||||
ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int));
|
ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int));
|
||||||
|
ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp));
|
||||||
|
ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
|
||||||
|
#if defined(_WIN32) && !defined(Z_SOLO)
|
||||||
|
ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path,
|
||||||
|
const char *mode));
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
10
zlib.map
10
zlib.map
@@ -66,3 +66,13 @@ ZLIB_1.2.3.5 {
|
|||||||
gzclose_r;
|
gzclose_r;
|
||||||
gzclose_w;
|
gzclose_w;
|
||||||
} ZLIB_1.2.3.4;
|
} ZLIB_1.2.3.4;
|
||||||
|
|
||||||
|
ZLIB_1.2.5.1 {
|
||||||
|
deflatePending;
|
||||||
|
} ZLIB_1.2.3.5;
|
||||||
|
|
||||||
|
ZLIB_1.2.5.2 {
|
||||||
|
deflateResetKeep;
|
||||||
|
gzgetc_;
|
||||||
|
inflateResetKeep;
|
||||||
|
} ZLIB_1.2.5.1;
|
||||||
|
|||||||
13
zlib.pc.cmakein
Normal file
13
zlib.pc.cmakein
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
libdir=@INSTALL_LIB_DIR@
|
||||||
|
sharedlibdir=@INSTALL_LIB_DIR@
|
||||||
|
includedir=@INSTALL_INC_DIR@
|
||||||
|
|
||||||
|
Name: zlib
|
||||||
|
Description: zlib compression library
|
||||||
|
Version: @VERSION@
|
||||||
|
|
||||||
|
Requires:
|
||||||
|
Libs: -L${libdir} -L${sharedlibdir} -lz
|
||||||
|
Cflags: -I${includedir}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
prefix=@prefix@
|
prefix=@prefix@
|
||||||
exec_prefix=@exec_prefix@
|
exec_prefix=@exec_prefix@
|
||||||
libdir=@libdir@
|
libdir=@libdir@
|
||||||
|
sharedlibdir=@sharedlibdir@
|
||||||
includedir=@includedir@
|
includedir=@includedir@
|
||||||
|
|
||||||
Name: zlib
|
Name: zlib
|
||||||
@@ -8,5 +9,5 @@ Description: zlib compression library
|
|||||||
Version: @VERSION@
|
Version: @VERSION@
|
||||||
|
|
||||||
Requires:
|
Requires:
|
||||||
Libs: -L${libdir} -lz
|
Libs: -L${libdir} -L${sharedlibdir} -lz
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir}
|
||||||
|
|||||||
46
zutil.c
46
zutil.c
@@ -1,11 +1,14 @@
|
|||||||
/* zutil.c -- target dependent utility functions for the compression library
|
/* zutil.c -- target dependent utility functions for the compression library
|
||||||
* Copyright (C) 1995-2005 Jean-loup Gailly.
|
* Copyright (C) 1995-2005, 2010, 2011, 2012 Jean-loup Gailly.
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* @(#) $Id$ */
|
/* @(#) $Id$ */
|
||||||
|
|
||||||
#include "zutil.h"
|
#include "zutil.h"
|
||||||
|
#ifndef Z_SOLO
|
||||||
|
# include "gzguts.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef NO_DUMMY_DECL
|
#ifndef NO_DUMMY_DECL
|
||||||
struct internal_state {int dummy;}; /* for buggy compilers */
|
struct internal_state {int dummy;}; /* for buggy compilers */
|
||||||
@@ -85,27 +88,27 @@ uLong ZEXPORT zlibCompileFlags()
|
|||||||
#ifdef FASTEST
|
#ifdef FASTEST
|
||||||
flags += 1L << 21;
|
flags += 1L << 21;
|
||||||
#endif
|
#endif
|
||||||
#ifdef STDC
|
#if defined(STDC) || defined(Z_HAVE_STDARG_H)
|
||||||
# ifdef NO_vsnprintf
|
# ifdef NO_vsnprintf
|
||||||
flags += 1L << 25;
|
flags += 1L << 25;
|
||||||
# ifdef HAS_vsprintf_void
|
# ifdef HAS_vsprintf_void
|
||||||
flags += 1L << 26;
|
flags += 1L << 26;
|
||||||
# endif
|
# endif
|
||||||
# else
|
# else
|
||||||
# ifdef HAS_vsnprintf_void
|
# ifdef HAS_vsnprintf_void
|
||||||
flags += 1L << 26;
|
flags += 1L << 26;
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
flags += 1L << 24;
|
flags += 1L << 24;
|
||||||
# ifdef NO_snprintf
|
# ifdef NO_snprintf
|
||||||
flags += 1L << 25;
|
flags += 1L << 25;
|
||||||
# ifdef HAS_sprintf_void
|
# ifdef HAS_sprintf_void
|
||||||
flags += 1L << 26;
|
flags += 1L << 26;
|
||||||
# endif
|
# endif
|
||||||
# else
|
# else
|
||||||
# ifdef HAS_snprintf_void
|
# ifdef HAS_snprintf_void
|
||||||
flags += 1L << 26;
|
flags += 1L << 26;
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
@@ -117,9 +120,9 @@ uLong ZEXPORT zlibCompileFlags()
|
|||||||
# ifndef verbose
|
# ifndef verbose
|
||||||
# define verbose 0
|
# define verbose 0
|
||||||
# endif
|
# endif
|
||||||
int z_verbose = verbose;
|
int ZLIB_INTERNAL z_verbose = verbose;
|
||||||
|
|
||||||
void z_error (m)
|
void ZLIB_INTERNAL z_error (m)
|
||||||
char *m;
|
char *m;
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s\n", m);
|
fprintf(stderr, "%s\n", m);
|
||||||
@@ -146,7 +149,7 @@ const char * ZEXPORT zError(err)
|
|||||||
|
|
||||||
#ifndef HAVE_MEMCPY
|
#ifndef HAVE_MEMCPY
|
||||||
|
|
||||||
void zmemcpy(dest, source, len)
|
void ZLIB_INTERNAL zmemcpy(dest, source, len)
|
||||||
Bytef* dest;
|
Bytef* dest;
|
||||||
const Bytef* source;
|
const Bytef* source;
|
||||||
uInt len;
|
uInt len;
|
||||||
@@ -157,7 +160,7 @@ void zmemcpy(dest, source, len)
|
|||||||
} while (--len != 0);
|
} while (--len != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int zmemcmp(s1, s2, len)
|
int ZLIB_INTERNAL zmemcmp(s1, s2, len)
|
||||||
const Bytef* s1;
|
const Bytef* s1;
|
||||||
const Bytef* s2;
|
const Bytef* s2;
|
||||||
uInt len;
|
uInt len;
|
||||||
@@ -170,7 +173,7 @@ int zmemcmp(s1, s2, len)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void zmemzero(dest, len)
|
void ZLIB_INTERNAL zmemzero(dest, len)
|
||||||
Bytef* dest;
|
Bytef* dest;
|
||||||
uInt len;
|
uInt len;
|
||||||
{
|
{
|
||||||
@@ -181,6 +184,7 @@ void zmemzero(dest, len)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef Z_SOLO
|
||||||
|
|
||||||
#ifdef SYS16BIT
|
#ifdef SYS16BIT
|
||||||
|
|
||||||
@@ -213,7 +217,7 @@ local ptr_table table[MAX_PTR];
|
|||||||
* a protected system like OS/2. Use Microsoft C instead.
|
* a protected system like OS/2. Use Microsoft C instead.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
|
voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
|
||||||
{
|
{
|
||||||
voidpf buf = opaque; /* just to make some compilers happy */
|
voidpf buf = opaque; /* just to make some compilers happy */
|
||||||
ulg bsize = (ulg)items*size;
|
ulg bsize = (ulg)items*size;
|
||||||
@@ -237,7 +241,7 @@ voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
void zcfree (voidpf opaque, voidpf ptr)
|
void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
if (*(ush*)&ptr != 0) { /* object < 64K */
|
if (*(ush*)&ptr != 0) { /* object < 64K */
|
||||||
@@ -272,13 +276,13 @@ void zcfree (voidpf opaque, voidpf ptr)
|
|||||||
# define _hfree hfree
|
# define _hfree hfree
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
voidpf zcalloc (voidpf opaque, uInt items, uInt size)
|
voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size)
|
||||||
{
|
{
|
||||||
if (opaque) opaque = 0; /* to make compiler happy */
|
if (opaque) opaque = 0; /* to make compiler happy */
|
||||||
return _halloc((long)items, size);
|
return _halloc((long)items, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void zcfree (voidpf opaque, voidpf ptr)
|
void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
|
||||||
{
|
{
|
||||||
if (opaque) opaque = 0; /* to make compiler happy */
|
if (opaque) opaque = 0; /* to make compiler happy */
|
||||||
_hfree(ptr);
|
_hfree(ptr);
|
||||||
@@ -297,7 +301,7 @@ extern voidp calloc OF((uInt items, uInt size));
|
|||||||
extern void free OF((voidpf ptr));
|
extern void free OF((voidpf ptr));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
voidpf zcalloc (opaque, items, size)
|
voidpf ZLIB_INTERNAL zcalloc (opaque, items, size)
|
||||||
voidpf opaque;
|
voidpf opaque;
|
||||||
unsigned items;
|
unsigned items;
|
||||||
unsigned size;
|
unsigned size;
|
||||||
@@ -307,7 +311,7 @@ voidpf zcalloc (opaque, items, size)
|
|||||||
(voidpf)calloc(items, size);
|
(voidpf)calloc(items, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void zcfree (opaque, ptr)
|
void ZLIB_INTERNAL zcfree (opaque, ptr)
|
||||||
voidpf opaque;
|
voidpf opaque;
|
||||||
voidpf ptr;
|
voidpf ptr;
|
||||||
{
|
{
|
||||||
@@ -316,3 +320,5 @@ void zcfree (opaque, ptr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif /* MY_ZCALLOC */
|
#endif /* MY_ZCALLOC */
|
||||||
|
|
||||||
|
#endif /* !Z_SOLO */
|
||||||
|
|||||||
126
zutil.h
126
zutil.h
@@ -1,5 +1,5 @@
|
|||||||
/* zutil.h -- internal interface and configuration of the compression library
|
/* zutil.h -- internal interface and configuration of the compression library
|
||||||
* Copyright (C) 1995-2010 Jean-loup Gailly.
|
* Copyright (C) 1995-2012 Jean-loup Gailly.
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -13,10 +13,15 @@
|
|||||||
#ifndef ZUTIL_H
|
#ifndef ZUTIL_H
|
||||||
#define ZUTIL_H
|
#define ZUTIL_H
|
||||||
|
|
||||||
#define ZLIB_INTERNAL
|
#ifdef HAVE_HIDDEN
|
||||||
|
# define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
|
||||||
|
#else
|
||||||
|
# define ZLIB_INTERNAL
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "zlib.h"
|
#include "zlib.h"
|
||||||
|
|
||||||
#ifdef STDC
|
#if defined(STDC) && !defined(Z_SOLO)
|
||||||
# if !(defined(_WIN32_WCE) && defined(_MSC_VER))
|
# if !(defined(_WIN32_WCE) && defined(_MSC_VER))
|
||||||
# include <stddef.h>
|
# include <stddef.h>
|
||||||
# endif
|
# endif
|
||||||
@@ -24,6 +29,10 @@
|
|||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef Z_SOLO
|
||||||
|
typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef local
|
#ifndef local
|
||||||
# define local static
|
# define local static
|
||||||
#endif
|
#endif
|
||||||
@@ -73,16 +82,18 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
|
|||||||
|
|
||||||
#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))
|
#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))
|
||||||
# define OS_CODE 0x00
|
# define OS_CODE 0x00
|
||||||
# if defined(__TURBOC__) || defined(__BORLANDC__)
|
# ifndef Z_SOLO
|
||||||
# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
|
# if defined(__TURBOC__) || defined(__BORLANDC__)
|
||||||
/* Allow compilation with ANSI keywords only enabled */
|
# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
|
||||||
void _Cdecl farfree( void *block );
|
/* Allow compilation with ANSI keywords only enabled */
|
||||||
void *_Cdecl farmalloc( unsigned long nbytes );
|
void _Cdecl farfree( void *block );
|
||||||
# else
|
void *_Cdecl farmalloc( unsigned long nbytes );
|
||||||
# include <alloc.h>
|
# else
|
||||||
|
# include <alloc.h>
|
||||||
|
# endif
|
||||||
|
# else /* MSC or DJGPP */
|
||||||
|
# include <malloc.h>
|
||||||
# endif
|
# endif
|
||||||
# else /* MSC or DJGPP */
|
|
||||||
# include <malloc.h>
|
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -102,18 +113,20 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
|
|||||||
|
|
||||||
#ifdef OS2
|
#ifdef OS2
|
||||||
# define OS_CODE 0x06
|
# define OS_CODE 0x06
|
||||||
# ifdef M_I86
|
# if defined(M_I86) && !defined(Z_SOLO)
|
||||||
# include <malloc.h>
|
# include <malloc.h>
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MACOS) || defined(TARGET_OS_MAC)
|
#if defined(MACOS) || defined(TARGET_OS_MAC)
|
||||||
# define OS_CODE 0x07
|
# define OS_CODE 0x07
|
||||||
# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
|
# ifndef Z_SOLO
|
||||||
# include <unix.h> /* for fdopen */
|
# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
|
||||||
# else
|
# include <unix.h> /* for fdopen */
|
||||||
# ifndef fdopen
|
# else
|
||||||
# define fdopen(fd,mode) NULL /* No fdopen() */
|
# ifndef fdopen
|
||||||
|
# define fdopen(fd,mode) NULL /* No fdopen() */
|
||||||
|
# endif
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
@@ -148,26 +161,16 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__BORLANDC__)
|
#if defined(__BORLANDC__) && !defined(MSDOS)
|
||||||
#pragma warn -8004
|
#pragma warn -8004
|
||||||
#pragma warn -8008
|
#pragma warn -8008
|
||||||
#pragma warn -8066
|
#pragma warn -8066
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if _LARGEFILE64_SOURCE == 1 && _LFS64_LARGEFILE == 1
|
|
||||||
# define z_off64_t off64_t
|
|
||||||
#else
|
|
||||||
# define z_off64_t z_off_t
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* provide prototypes for these when building zlib without LFS */
|
/* provide prototypes for these when building zlib without LFS */
|
||||||
#if _LARGEFILE64_SOURCE != 1 || _LFS64_LARGEFILE != 1
|
#if !defined(_WIN32) && (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
|
||||||
ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
|
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
|
||||||
ZEXTERN off_t ZEXPORT gzseek64 OF((gzFile, off_t, int));
|
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
|
||||||
ZEXTERN off_t ZEXPORT gztell64 OF((gzFile));
|
|
||||||
ZEXTERN off_t ZEXPORT gzoffset64 OF((gzFile));
|
|
||||||
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, off_t));
|
|
||||||
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, off_t));
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* common defaults */
|
/* common defaults */
|
||||||
@@ -182,42 +185,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
|
|||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
|
|
||||||
#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
|
#if defined(pyr) || defined(Z_SOLO)
|
||||||
# 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)
|
|
||||||
# define NO_MEMCPY
|
# define NO_MEMCPY
|
||||||
#endif
|
#endif
|
||||||
#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
|
#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
|
||||||
@@ -241,16 +209,16 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
|
|||||||
# define zmemzero(dest, len) memset(dest, 0, len)
|
# define zmemzero(dest, len) memset(dest, 0, len)
|
||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
|
void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
|
||||||
extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
|
int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
|
||||||
extern void zmemzero OF((Bytef* dest, uInt len));
|
void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Diagnostic functions */
|
/* Diagnostic functions */
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
extern int z_verbose;
|
extern int ZLIB_INTERNAL z_verbose;
|
||||||
extern void z_error OF((char *m));
|
extern void ZLIB_INTERNAL z_error OF((char *m));
|
||||||
# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
|
# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
|
||||||
# define Trace(x) {if (z_verbose>=0) fprintf x ;}
|
# define Trace(x) {if (z_verbose>=0) fprintf x ;}
|
||||||
# define Tracev(x) {if (z_verbose>0) fprintf x ;}
|
# define Tracev(x) {if (z_verbose>0) fprintf x ;}
|
||||||
@@ -266,13 +234,19 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
|
|||||||
# define Tracecv(c,x)
|
# define Tracecv(c,x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef Z_SOLO
|
||||||
voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
|
voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items,
|
||||||
void zcfree OF((voidpf opaque, voidpf ptr));
|
unsigned size));
|
||||||
|
void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr));
|
||||||
|
#endif
|
||||||
|
|
||||||
#define ZALLOC(strm, items, size) \
|
#define ZALLOC(strm, items, size) \
|
||||||
(*((strm)->zalloc))((strm)->opaque, (items), (size))
|
(*((strm)->zalloc))((strm)->opaque, (items), (size))
|
||||||
#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
|
#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
|
||||||
#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
|
#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
|
||||||
|
|
||||||
|
/* Reverse the bytes in a 32-bit value */
|
||||||
|
#define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \
|
||||||
|
(((q) & 0xff00) << 8) + (((q) & 0xff) << 24))
|
||||||
|
|
||||||
#endif /* ZUTIL_H */
|
#endif /* ZUTIL_H */
|
||||||
|
|||||||
Reference in New Issue
Block a user