zlib 1.2.4-pre1
This commit is contained in:
parent
7751bd4c71
commit
67cc20d004
@ -66,17 +66,19 @@ if(MSVC)
|
|||||||
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 "You must remove zconf.h from the source tree. This f
|
message(FATAL_ERROR
|
||||||
ile is generated by the ./configure script shipped with zlib. CMake generates t
|
"You must remove ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h "
|
||||||
his file for you automatically in the build directory")
|
"from the source tree. This file is included with zlib "
|
||||||
|
"but CMake generates this file for you automatically "
|
||||||
|
"in the build directory.")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.in
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/zconf.h @ONLY)
|
${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
|
|
||||||
@ -85,7 +87,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|||||||
#============================================================================
|
#============================================================================
|
||||||
|
|
||||||
set(ZLIB_PUBLIC_HDRS
|
set(ZLIB_PUBLIC_HDRS
|
||||||
zconf.h
|
${CMAKE_CURRENT_BINARY_DIR}/zconf.h
|
||||||
zlib.h
|
zlib.h
|
||||||
)
|
)
|
||||||
set(ZLIB_PRIVATE_HDRS
|
set(ZLIB_PRIVATE_HDRS
|
||||||
@ -129,6 +131,7 @@ if(MINGW)
|
|||||||
COMMAND windres.exe
|
COMMAND windres.exe
|
||||||
-D GCC_WINDRES
|
-D GCC_WINDRES
|
||||||
-I ${CMAKE_CURRENT_SOURCE_DIR}
|
-I ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
-I ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
-o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
|
-o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
|
||||||
-i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc)
|
-i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc)
|
||||||
set(ZLIB_SRCS ${ZLIB_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
|
set(ZLIB_SRCS ${ZLIB_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
|
||||||
|
27
ChangeLog
27
ChangeLog
@ -1,6 +1,31 @@
|
|||||||
|
|
||||||
ChangeLog file for zlib
|
ChangeLog file for zlib
|
||||||
|
|
||||||
|
Changes in 1.2.4 (11 Mar 2010)
|
||||||
|
- Fix VER3 extraction in configure for no fourth subversion
|
||||||
|
- Update zlib.3, add docs to Makefile.in to make .pdf out of it
|
||||||
|
- Add zlib.3.pdf to distribution
|
||||||
|
- Don't set error code in gzerror() if passed pointer is NULL
|
||||||
|
- Apply destination directory fixes to CMakeLists.txt [Lowman]
|
||||||
|
- Move #cmakedefine's to a new zconf.in.cmakein
|
||||||
|
- Restore zconf.h for builds that don't use configure or cmake
|
||||||
|
- Add distclean to dummy Makefile for convenience
|
||||||
|
- Update and improve INDEX, README, and FAQ
|
||||||
|
- Update CMakeLists.txt for the return of zconf.h [Lowman]
|
||||||
|
- Update contrib/vstudio/vc9 and vc10 [Vollant]
|
||||||
|
- Change libz.dll.a back to libzdll.a in win32/Makefile.gcc
|
||||||
|
- Apply license and readme changes to contrib/asm686 [Raiter]
|
||||||
|
- Check file name lengths and add -c option in minigzip.c [Li]
|
||||||
|
- Update contrib/amd64 and contrib/masmx86/ [Vollant]
|
||||||
|
- Avoid use of "eof" parameter in trees.c to not shadow library variable
|
||||||
|
- Update make_vms.com for removal of zlibdefs.h [Zinser]
|
||||||
|
- Update assembler code and vstudio projects in contrib [Vollant]
|
||||||
|
- Remove outdated assembler code contrib/masm686 and contrib/asm586
|
||||||
|
- Remove old vc7 and vc8 from contrib/vstudio
|
||||||
|
- Update win32/Makefile.msc, add ZLIB_VER_SUBREVISION [Rowe]
|
||||||
|
- Fix memory leaks in gzclose_r() and gzclose_w(), file leak in gz_open()
|
||||||
|
- Add contrib/gcc_gvmat64 for longest_match and inflate_fast [Vollant]
|
||||||
|
|
||||||
Changes in 1.2.3.9 (21 Feb 2010)
|
Changes in 1.2.3.9 (21 Feb 2010)
|
||||||
- Expunge gzio.c
|
- Expunge gzio.c
|
||||||
- Move as400 build information to old
|
- Move as400 build information to old
|
||||||
@ -256,7 +281,7 @@ Changes in 1.2.2.4 (11 July 2005)
|
|||||||
compile
|
compile
|
||||||
- Fix some spelling errors in comments [Betts]
|
- Fix some spelling errors in comments [Betts]
|
||||||
- Correct inflateInit2() error return documentation in zlib.h
|
- Correct inflateInit2() error return documentation in zlib.h
|
||||||
- Added zran.c example of compressed data random access to examples
|
- Add zran.c example of compressed data random access to examples
|
||||||
directory, shows use of inflatePrime()
|
directory, shows use of inflatePrime()
|
||||||
- Fix cast for assignments to strm->state in inflate.c and infback.c
|
- Fix cast for assignments to strm->state in inflate.c and infback.c
|
||||||
- Fix zlibCompileFlags() in zutil.c to use 1L for long shifts [Oberhumer]
|
- Fix zlibCompileFlags() in zutil.c to use 1L for long shifts [Oberhumer]
|
||||||
|
259
FAQ
259
FAQ
@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
|
|
||||||
If your question is not there, please check the zlib home page
|
If your question is not there, please check the zlib home page
|
||||||
http://www.zlib.org which may have more recent information.
|
http://zlib.net/ which may have more recent information.
|
||||||
The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
|
The lastest zlib FAQ is at http://zlib.net/zlib_faq.html
|
||||||
|
|
||||||
|
|
||||||
1. Is zlib Y2K-compliant?
|
1. Is zlib Y2K-compliant?
|
||||||
@ -13,54 +13,51 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
|
|||||||
|
|
||||||
2. Where can I get a Windows DLL version?
|
2. Where can I get a Windows DLL version?
|
||||||
|
|
||||||
The zlib sources can be compiled without change to produce a DLL.
|
The zlib sources can be compiled without change to produce a DLL. See the
|
||||||
See the file win32/DLL_FAQ.txt in the zlib distribution.
|
file win32/DLL_FAQ.txt in the zlib distribution. Pointers to the
|
||||||
Pointers to the precompiled DLL are found in the zlib web site at
|
precompiled DLL are found in the zlib web site at http://zlib.net/ .
|
||||||
http://www.zlib.org.
|
|
||||||
|
|
||||||
3. Where can I get a Visual Basic interface to zlib?
|
3. Where can I get a Visual Basic interface to zlib?
|
||||||
|
|
||||||
See
|
See
|
||||||
* http://www.dogma.net/markn/articles/zlibtool/zlibtool.htm
|
* http://marknelson.us/1997/01/01/zlib-engine/
|
||||||
* contrib/visual-basic.txt in the zlib distribution
|
|
||||||
* win32/DLL_FAQ.txt in the zlib distribution
|
* win32/DLL_FAQ.txt in the zlib distribution
|
||||||
|
|
||||||
4. compress() returns Z_BUF_ERROR.
|
4. compress() returns Z_BUF_ERROR.
|
||||||
|
|
||||||
Make sure that before the call of compress, the length of the compressed
|
Make sure that before the call of compress, the length of the compressed
|
||||||
buffer is equal to the total size of the compressed buffer and not
|
buffer is equal to the available size of the compressed buffer and not
|
||||||
zero. For Visual Basic, check that this parameter is passed by reference
|
zero. For Visual Basic, check that this parameter is passed by reference
|
||||||
("as any"), not by value ("as long").
|
("as any"), not by value ("as long").
|
||||||
|
|
||||||
5. deflate() or inflate() returns Z_BUF_ERROR.
|
5. deflate() or inflate() returns Z_BUF_ERROR.
|
||||||
|
|
||||||
Before making the call, make sure that avail_in and avail_out are not
|
Before making the call, make sure that avail_in and avail_out are not zero.
|
||||||
zero. When setting the parameter flush equal to Z_FINISH, also make sure
|
When setting the parameter flush equal to Z_FINISH, also make sure that
|
||||||
that avail_out is big enough to allow processing all pending input.
|
avail_out is big enough to allow processing all pending input. Note that a
|
||||||
Note that a Z_BUF_ERROR is not fatal--another call to deflate() or
|
Z_BUF_ERROR is not fatal--another call to deflate() or inflate() can be
|
||||||
inflate() can be made with more input or output space. A Z_BUF_ERROR
|
made with more input or output space. A Z_BUF_ERROR may in fact be
|
||||||
may in fact be unavoidable depending on how the functions are used, since
|
unavoidable depending on how the functions are used, since it is not
|
||||||
it is not possible to tell whether or not there is more output pending
|
possible to tell whether or not there is more output pending when
|
||||||
when strm.avail_out returns with zero.
|
strm.avail_out returns with zero. See http://zlib.net/zlib_how.html for a
|
||||||
|
heavily annotated example.
|
||||||
|
|
||||||
6. Where's the zlib documentation (man pages, etc.)?
|
6. Where's the zlib documentation (man pages, etc.)?
|
||||||
|
|
||||||
It's in zlib.h for the moment, and Francis S. Lin has converted it to a
|
It's in zlib.h . Examples of zlib usage are in the files example.c and
|
||||||
web page zlib.html. Volunteers to transform this to Unix-style man pages,
|
minigzip.c, with more in examples/ .
|
||||||
please contact us (zlib@gzip.org). Examples of zlib usage are in the files
|
|
||||||
example.c and minigzip.c.
|
|
||||||
|
|
||||||
7. Why don't you use GNU autoconf or libtool or ...?
|
7. Why don't you use GNU autoconf or libtool or ...?
|
||||||
|
|
||||||
Because we would like to keep zlib as a very small and simple
|
Because we would like to keep zlib as a very small and simple package.
|
||||||
package. zlib is rather portable and doesn't need much configuration.
|
zlib is rather portable and doesn't need much configuration.
|
||||||
|
|
||||||
8. I found a bug in zlib.
|
8. I found a bug in zlib.
|
||||||
|
|
||||||
Most of the time, such problems are due to an incorrect usage of
|
Most of the time, such problems are due to an incorrect usage of zlib.
|
||||||
zlib. Please try to reproduce the problem with a small program and send
|
Please try to reproduce the problem with a small program and send the
|
||||||
the corresponding source to us at zlib@gzip.org . Do not send
|
corresponding source to us at zlib@gzip.org . Do not send multi-megabyte
|
||||||
multi-megabyte data files without prior agreement.
|
data files without prior agreement.
|
||||||
|
|
||||||
9. Why do I get "undefined reference to gzputc"?
|
9. Why do I get "undefined reference to gzputc"?
|
||||||
|
|
||||||
@ -77,12 +74,12 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
|
|||||||
|
|
||||||
11. Can zlib handle .zip archives?
|
11. Can zlib handle .zip archives?
|
||||||
|
|
||||||
Not by itself, no. See the directory contrib/minizip in the zlib
|
Not by itself, no. See the directory contrib/minizip in the zlib
|
||||||
distribution.
|
distribution.
|
||||||
|
|
||||||
12. Can zlib handle .Z files?
|
12. Can zlib handle .Z files?
|
||||||
|
|
||||||
No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt
|
No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt
|
||||||
the code of uncompress on your own.
|
the code of uncompress on your own.
|
||||||
|
|
||||||
13. How can I make a Unix shared library?
|
13. How can I make a Unix shared library?
|
||||||
@ -99,8 +96,10 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
|
|||||||
|
|
||||||
However, many flavors of Unix come with a shared zlib already installed.
|
However, many flavors of Unix come with a shared zlib already installed.
|
||||||
Before going to the trouble of compiling a shared version of zlib and
|
Before going to the trouble of compiling a shared version of zlib and
|
||||||
trying to install it, you may want to check if it's already there! If you
|
trying to install it, you may want to check if it's already there! If you
|
||||||
can #include <zlib.h>, it's there. The -lz option will probably link to it.
|
can #include <zlib.h>, it's there. The -lz option will probably link to
|
||||||
|
it. You can check the version at the top of zlib.h or with the
|
||||||
|
ZLIB_VERSION symbol defined in zlib.h .
|
||||||
|
|
||||||
15. I have a question about OttoPDF.
|
15. I have a question about OttoPDF.
|
||||||
|
|
||||||
@ -121,39 +120,39 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
|
|||||||
symbol __register_frame_info: referenced symbol not found
|
symbol __register_frame_info: referenced symbol not found
|
||||||
|
|
||||||
The symbol __register_frame_info is not part of zlib, it is generated by
|
The symbol __register_frame_info is not part of zlib, it is generated by
|
||||||
the C compiler (cc or gcc). You must recompile applications using zlib
|
the C compiler (cc or gcc). You must recompile applications using zlib
|
||||||
which have this problem. This problem is specific to Solaris. See
|
which have this problem. This problem is specific to Solaris. See
|
||||||
http://www.sunfreeware.com for Solaris versions of zlib and applications
|
http://www.sunfreeware.com for Solaris versions of zlib and applications
|
||||||
using zlib.
|
using zlib.
|
||||||
|
|
||||||
18. Why does gzip give an error on a file I make with compress/deflate?
|
18. Why does gzip give an error on a file I make with compress/deflate?
|
||||||
|
|
||||||
The compress and deflate functions produce data in the zlib format, which
|
The compress and deflate functions produce data in the zlib format, which
|
||||||
is different and incompatible with the gzip format. The gz* functions in
|
is different and incompatible with the gzip format. The gz* functions in
|
||||||
zlib on the other hand use the gzip format. Both the zlib and gzip
|
zlib on the other hand use the gzip format. Both the zlib and gzip formats
|
||||||
formats use the same compressed data format internally, but have different
|
use the same compressed data format internally, but have different headers
|
||||||
headers and trailers around the compressed data.
|
and trailers around the compressed data.
|
||||||
|
|
||||||
19. Ok, so why are there two different formats?
|
19. Ok, so why are there two different formats?
|
||||||
|
|
||||||
The gzip format was designed to retain the directory information about
|
The gzip format was designed to retain the directory information about a
|
||||||
a single file, such as the name and last modification date. The zlib
|
single file, such as the name and last modification date. The zlib format
|
||||||
format on the other hand was designed for in-memory and communication
|
on the other hand was designed for in-memory and communication channel
|
||||||
channel applications, and has a much more compact header and trailer and
|
applications, and has a much more compact header and trailer and uses a
|
||||||
uses a faster integrity check than gzip.
|
faster integrity check than gzip.
|
||||||
|
|
||||||
20. Well that's nice, but how do I make a gzip file in memory?
|
20. Well that's nice, but how do I make a gzip file in memory?
|
||||||
|
|
||||||
You can request that deflate write the gzip format instead of the zlib
|
You can request that deflate write the gzip format instead of the zlib
|
||||||
format using deflateInit2(). You can also request that inflate decode
|
format using deflateInit2(). You can also request that inflate decode the
|
||||||
the gzip format using inflateInit2(). Read zlib.h for more details.
|
gzip format using inflateInit2(). Read zlib.h for more details.
|
||||||
|
|
||||||
21. Is zlib thread-safe?
|
21. Is zlib thread-safe?
|
||||||
|
|
||||||
Yes. However any library routines that zlib uses and any application-
|
Yes. However any library routines that zlib uses and any application-
|
||||||
provided memory allocation routines must also be thread-safe. zlib's gz*
|
provided memory allocation routines must also be thread-safe. zlib's gz*
|
||||||
functions use stdio library routines, and most of zlib's functions use the
|
functions use stdio library routines, and most of zlib's functions use the
|
||||||
library memory allocation routines by default. zlib's Init functions allow
|
library memory allocation routines by default. zlib's Init functions allow
|
||||||
for the application to provide custom memory allocation routines.
|
for the application to provide custom memory allocation routines.
|
||||||
|
|
||||||
Of course, you should only operate on any given zlib or gzip stream from a
|
Of course, you should only operate on any given zlib or gzip stream from a
|
||||||
@ -161,27 +160,27 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
|
|||||||
|
|
||||||
22. Can I use zlib in my commercial application?
|
22. Can I use zlib in my commercial application?
|
||||||
|
|
||||||
Yes. Please read the license in zlib.h.
|
Yes. Please read the license in zlib.h.
|
||||||
|
|
||||||
23. Is zlib under the GNU license?
|
23. Is zlib under the GNU license?
|
||||||
|
|
||||||
No. Please read the license in zlib.h.
|
No. Please read the license in zlib.h.
|
||||||
|
|
||||||
24. The license says that altered source versions must be "plainly marked". So
|
24. The license says that altered source versions must be "plainly marked". So
|
||||||
what exactly do I need to do to meet that requirement?
|
what exactly do I need to do to meet that requirement?
|
||||||
|
|
||||||
You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In
|
You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In
|
||||||
particular, the final version number needs to be changed to "f", and an
|
particular, the final version number needs to be changed to "f", and an
|
||||||
identification string should be appended to ZLIB_VERSION. Version numbers
|
identification string should be appended to ZLIB_VERSION. Version numbers
|
||||||
x.x.x.f are reserved for modifications to zlib by others than the zlib
|
x.x.x.f are reserved for modifications to zlib by others than the zlib
|
||||||
maintainers. For example, if the version of the base zlib you are altering
|
maintainers. For example, if the version of the base zlib you are altering
|
||||||
is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and
|
is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and
|
||||||
ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also
|
ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also
|
||||||
update the version strings in deflate.c and inftrees.c.
|
update the version strings in deflate.c and inftrees.c.
|
||||||
|
|
||||||
For altered source distributions, you should also note the origin and
|
For altered source distributions, you should also note the origin and
|
||||||
nature of the changes in zlib.h, as well as in ChangeLog and README, along
|
nature of the changes in zlib.h, as well as in ChangeLog and README, along
|
||||||
with the dates of the alterations. The origin should include at least your
|
with the dates of the alterations. The origin should include at least your
|
||||||
name (or your company's name), and an email address to contact for help or
|
name (or your company's name), and an email address to contact for help or
|
||||||
issues with the library.
|
issues with the library.
|
||||||
|
|
||||||
@ -197,111 +196,112 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
|
|||||||
|
|
||||||
26. Will zlib work on a 64-bit machine?
|
26. Will zlib work on a 64-bit machine?
|
||||||
|
|
||||||
It should. It has been tested on 64-bit machines, and has no dependence
|
Yes. It has been tested on 64-bit machines, and has no dependence on any
|
||||||
on any data types being limited to 32-bits in length. If you have any
|
data types being limited to 32-bits in length. If you have any
|
||||||
difficulties, please provide a complete problem report to zlib@gzip.org
|
difficulties, please provide a complete problem report to zlib@gzip.org
|
||||||
|
|
||||||
27. Will zlib decompress data from the PKWare Data Compression Library?
|
27. Will zlib decompress data from the PKWare Data Compression Library?
|
||||||
|
|
||||||
No. The PKWare DCL uses a completely different compressed data format
|
No. The PKWare DCL uses a completely different compressed data format than
|
||||||
than does PKZIP and zlib. However, you can look in zlib's contrib/blast
|
does PKZIP and zlib. However, you can look in zlib's contrib/blast
|
||||||
directory for a possible solution to your problem.
|
directory for a possible solution to your problem.
|
||||||
|
|
||||||
28. Can I access data randomly in a compressed stream?
|
28. Can I access data randomly in a compressed stream?
|
||||||
|
|
||||||
No, not without some preparation. If when compressing you periodically
|
No, not without some preparation. If when compressing you periodically use
|
||||||
use Z_FULL_FLUSH, carefully write all the pending data at those points,
|
Z_FULL_FLUSH, carefully write all the pending data at those points, and
|
||||||
and keep an index of those locations, then you can start decompression
|
keep an index of those locations, then you can start decompression at those
|
||||||
at those points. You have to be careful to not use Z_FULL_FLUSH too
|
points. You have to be careful to not use Z_FULL_FLUSH too often, since it
|
||||||
often, since it can significantly degrade compression.
|
can significantly degrade compression. Alternatively, you can scan a
|
||||||
|
deflate stream once to generate an index, and then use that index for
|
||||||
|
random access. See examples/zran.c .
|
||||||
|
|
||||||
29. Does zlib work on MVS, OS/390, CICS, etc.?
|
29. Does zlib work on MVS, OS/390, CICS, etc.?
|
||||||
|
|
||||||
Yes, there are working ports of zlib 1.1.4 to MVS which you can find
|
It has in the past, but we have not heard of any recent evidence. There
|
||||||
here:
|
were working ports of zlib 1.1.4 to MVS, but those links no longer work.
|
||||||
|
If you know of recent, successful applications of zlib on these operating
|
||||||
|
systems, please let us know. Thanks.
|
||||||
|
|
||||||
http://www.homerow.net/asm/zlib390.htm
|
30. Is there some simpler, easier to read version of inflate I can look at to
|
||||||
http://www.homerow.net/asm/zlibLE.htm
|
understand the deflate format?
|
||||||
|
|
||||||
If these are updated to more recent versions of zlib, please let us
|
First off, you should read RFC 1951. Second, yes. Look in zlib's
|
||||||
know. Thanks.
|
|
||||||
|
|
||||||
30. Is there some simpler, easier to read version of inflate I can look at
|
|
||||||
to understand the deflate format?
|
|
||||||
|
|
||||||
First off, you should read RFC 1951. Second, yes. Look in zlib's
|
|
||||||
contrib/puff directory.
|
contrib/puff directory.
|
||||||
|
|
||||||
31. Does zlib infringe on any patents?
|
31. Does zlib infringe on any patents?
|
||||||
|
|
||||||
As far as we know, no. In fact, that was originally the whole point behind
|
As far as we know, no. In fact, that was originally the whole point behind
|
||||||
zlib. Look here for some more information:
|
zlib. Look here for some more information:
|
||||||
|
|
||||||
http://www.gzip.org/#faq11
|
http://www.gzip.org/#faq11
|
||||||
|
|
||||||
32. Can zlib work with greater than 4 GB of data?
|
32. Can zlib work with greater than 4 GB of data?
|
||||||
|
|
||||||
Yes. inflate() and deflate() will process any amount of data correctly.
|
Yes. inflate() and deflate() will process any amount of data correctly.
|
||||||
Each call of inflate() or deflate() is limited to input and output chunks
|
Each call of inflate() or deflate() is limited to input and output chunks
|
||||||
of the maximum value that can be stored in the compiler's "unsigned int"
|
of the maximum value that can be stored in the compiler's "unsigned int"
|
||||||
type, but there is no limit to the number of chunks. Note however that the
|
type, but there is no limit to the number of chunks. Note however that the
|
||||||
strm.total_in and strm_total_out counters may be limited to 4 GB. These
|
strm.total_in and strm_total_out counters may be limited to 4 GB. These
|
||||||
counters are provided as a convenience and are not used internally by
|
counters are provided as a convenience and are not used internally by
|
||||||
inflate() or deflate(). The application can easily set up its own counters
|
inflate() or deflate(). The application can easily set up its own counters
|
||||||
updated after each call of inflate() or deflate() to count beyond 4 GB.
|
updated after each call of inflate() or deflate() to count beyond 4 GB.
|
||||||
compress() and uncompress() may be limited to 4 GB, since they operate in a
|
compress() and uncompress() may be limited to 4 GB, since they operate in a
|
||||||
single call. gzseek() and gztell() may be limited to 4 GB depending on how
|
single call. gzseek() and gztell() may be limited to 4 GB depending on how
|
||||||
zlib is compiled. See the zlibCompileFlags() function in zlib.h.
|
zlib is compiled. See the zlibCompileFlags() function in zlib.h.
|
||||||
|
|
||||||
The word "may" appears several times above since there is a 4 GB limit
|
The word "may" appears several times above since there is a 4 GB limit only
|
||||||
only if the compiler's "long" type is 32 bits. If the compiler's "long"
|
if the compiler's "long" type is 32 bits. If the compiler's "long" type is
|
||||||
type is 64 bits, then the limit is 16 exabytes.
|
64 bits, then the limit is 16 exabytes.
|
||||||
|
|
||||||
33. Does zlib have any security vulnerabilities?
|
33. Does zlib have any security vulnerabilities?
|
||||||
|
|
||||||
The only one that we are aware of is potentially in gzprintf(). If zlib
|
The only one that we are aware of is potentially in gzprintf(). If zlib is
|
||||||
is compiled to use sprintf() or vsprintf(), then there is no protection
|
compiled to use sprintf() or vsprintf(), then there is no protection
|
||||||
against a buffer overflow of a 4K string space, other than the caller of
|
against a buffer overflow of an 8K string space (or other value as set by
|
||||||
gzprintf() assuring that the output will not exceed 4K. On the other
|
gzbuffer()), other than the caller of gzprintf() assuring that the output
|
||||||
hand, if zlib is compiled to use snprintf() or vsnprintf(), which should
|
will not exceed 8K. On the other hand, if zlib is compiled to use
|
||||||
normally be the case, then there is no vulnerability. The ./configure
|
snprintf() or vsnprintf(), which should normally be the case, then there is
|
||||||
script will display warnings if an insecure variation of sprintf() will
|
no vulnerability. The ./configure script will display warnings if an
|
||||||
be used by gzprintf(). Also the zlibCompileFlags() function will return
|
insecure variation of sprintf() will be used by gzprintf(). Also the
|
||||||
information on what variant of sprintf() is used by gzprintf().
|
zlibCompileFlags() function will return information on what variant of
|
||||||
|
sprintf() is used by gzprintf().
|
||||||
|
|
||||||
If you don't have snprintf() or vsnprintf() and would like one, you can
|
If you don't have snprintf() or vsnprintf() and would like one, you can
|
||||||
find a portable implementation here:
|
find a portable implementation here:
|
||||||
|
|
||||||
http://www.ijs.si/software/snprintf/
|
http://www.ijs.si/software/snprintf/
|
||||||
|
|
||||||
Note that you should be using the most recent version of zlib. Versions
|
Note that you should be using the most recent version of zlib. Versions
|
||||||
1.1.3 and before were subject to a double-free vulnerability, and version
|
1.1.3 and before were subject to a double-free vulnerability, and versions
|
||||||
1.2.1 was subject to an access exception when decompressing invalid
|
1.2.1 and 1.2.2 were subject to an access exception when decompressing
|
||||||
compressed data.
|
invalid compressed data.
|
||||||
|
|
||||||
34. Is there a Java version of zlib?
|
34. Is there a Java version of zlib?
|
||||||
|
|
||||||
Probably what you want is to use zlib in Java. zlib is already included
|
Probably what you want is to use zlib in Java. zlib is already included
|
||||||
as part of the Java SDK in the java.util.zip package. If you really want
|
as part of the Java SDK in the java.util.zip package. If you really want
|
||||||
a version of zlib written in the Java language, look on the zlib home
|
a version of zlib written in the Java language, look on the zlib home
|
||||||
page for links: http://www.zlib.org/
|
page for links: http://zlib.net/ .
|
||||||
|
|
||||||
35. I get this or that compiler or source-code scanner warning when I crank it
|
35. I get this or that compiler or source-code scanner warning when I crank it
|
||||||
up to maximally-pedantic. Can't you guys write proper code?
|
up to maximally-pedantic. Can't you guys write proper code?
|
||||||
|
|
||||||
Many years ago, we gave up attempting to avoid warnings on every compiler
|
Many years ago, we gave up attempting to avoid warnings on every compiler
|
||||||
in the universe. It just got to be a waste of time, and some compilers
|
in the universe. It just got to be a waste of time, and some compilers
|
||||||
were downright silly. So now, we simply make sure that the code always
|
were downright silly as well as contradicted each other. So now, we simply
|
||||||
works.
|
make sure that the code always works.
|
||||||
|
|
||||||
36. Valgrind (or some similar memory access checker) says that deflate is
|
36. Valgrind (or some similar memory access checker) says that deflate is
|
||||||
performing a conditional jump that depends on an uninitialized value.
|
performing a conditional jump that depends on an uninitialized value.
|
||||||
Isn't that a bug?
|
Isn't that a bug?
|
||||||
|
|
||||||
No. That is intentional for performance reasons, and the output of
|
No. That is intentional for performance reasons, and the output of deflate
|
||||||
deflate is not affected. This only started showing up recently since
|
is not affected. This only started showing up recently since zlib 1.2.x
|
||||||
zlib 1.2.x uses malloc() by default for allocations, whereas earlier
|
uses malloc() by default for allocations, whereas earlier versions used
|
||||||
versions used calloc(), which zeros out the allocated memory.
|
calloc(), which zeros out the allocated memory. Even though the code was
|
||||||
|
correct, versions 1.2.4 and later was changed to not stimulate these
|
||||||
|
checkers.
|
||||||
|
|
||||||
37. Will zlib read the (insert any ancient or arcane format here) compressed
|
37. Will zlib read the (insert any ancient or arcane format here) compressed
|
||||||
data format?
|
data format?
|
||||||
@ -311,20 +311,21 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
|
|||||||
|
|
||||||
38. How can I encrypt/decrypt zip files with zlib?
|
38. How can I encrypt/decrypt zip files with zlib?
|
||||||
|
|
||||||
zlib doesn't support encryption. The original PKZIP encryption is very weak
|
zlib doesn't support encryption. The original PKZIP encryption is very
|
||||||
and can be broken with freely available programs. To get strong encryption,
|
weak and can be broken with freely available programs. To get strong
|
||||||
use GnuPG, http://www.gnupg.org/ , which already includes zlib compression.
|
encryption, use GnuPG, http://www.gnupg.org/ , which already includes zlib
|
||||||
For PKZIP compatible "encryption", look at http://www.info-zip.org/
|
compression. For PKZIP compatible "encryption", look at
|
||||||
|
http://www.info-zip.org/
|
||||||
|
|
||||||
39. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
|
39. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
|
||||||
|
|
||||||
"gzip" is the gzip format, and "deflate" is the zlib format. They should
|
"gzip" is the gzip format, and "deflate" is the zlib format. They should
|
||||||
probably have called the second one "zlib" instead to avoid confusion
|
probably have called the second one "zlib" instead to avoid confusion with
|
||||||
with the raw deflate compressed data format. While the HTTP 1.1 RFC 2616
|
the raw deflate compressed data format. While the HTTP 1.1 RFC 2616
|
||||||
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
|
specficiation 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
|
||||||
@ -334,28 +335,32 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
|
|||||||
|
|
||||||
40. Does zlib support the new "Deflate64" format introduced by PKWare?
|
40. Does zlib support the new "Deflate64" format introduced by PKWare?
|
||||||
|
|
||||||
No. PKWare has apparently decided to keep that format proprietary, since
|
No. PKWare has apparently decided to keep that format proprietary, since
|
||||||
they have not documented it as they have previous compression formats.
|
they have not documented it as they have previous compression formats. In
|
||||||
In any case, the compression improvements are so modest compared to other
|
any case, the compression improvements are so modest compared to other more
|
||||||
more modern approaches, that it's not worth the effort to implement.
|
modern approaches, that it's not worth the effort to implement.
|
||||||
|
|
||||||
41. I'm having a problem with the zip functions in zlib, can you help?
|
41. I'm having a problem with the zip functions in zlib, can you help?
|
||||||
|
|
||||||
There are no zip functions in zlib. You are probably using minizip by
|
There are no zip functions in zlib. You are probably using minizip by
|
||||||
Giles Vollant, which is found in the contrib directory of zlib. It is not
|
Giles Vollant, which is found in the contrib directory of zlib. It is not
|
||||||
part of zlib. In fact none of the stuff in contrib is part of zlib. The
|
part of zlib. In fact none of the stuff in contrib is part of zlib. The
|
||||||
files in there are not supported by the zlib authors. You need to contact
|
files in there are not supported by the zlib authors. You need to contact
|
||||||
the authors of the contribution for help.
|
the authors of the respective contribution for help.
|
||||||
|
|
||||||
42. The match.asm code in contrib is under the GNU General Public License.
|
42. The match.asm code in contrib is under the GNU General Public License.
|
||||||
Since it's part of zlib, doesn't that mean that all of zlib falls under the
|
Since it's part of zlib, doesn't that mean that all of zlib falls under the
|
||||||
GNU GPL?
|
GNU GPL?
|
||||||
|
|
||||||
No. The files in contrib are not part of zlib. They were contributed by
|
No. The files in contrib are not part of zlib. They were contributed by
|
||||||
other authors and are provided as a convenience to the user within the zlib
|
other authors and are provided as a convenience to the user within the zlib
|
||||||
distribution. Each of the items in contrib have their own license.
|
distribution. Each of the items in contrib have their own license.
|
||||||
|
|
||||||
43. Can you please sign these lengthy legal documents and fax them back to us
|
43. Is zlib subject to export controls? What is its ECCN?
|
||||||
|
|
||||||
|
zlib is not subject to export controls, and so is classified as EAR99.
|
||||||
|
|
||||||
|
44. Can you please sign these lengthy legal documents and fax them back to us
|
||||||
so that we can use your software in our product?
|
so that we can use your software in our product?
|
||||||
|
|
||||||
No. Go away. Shoo.
|
No. Go away. Shoo.
|
||||||
|
8
INDEX
8
INDEX
@ -2,33 +2,33 @@ CMakeLists.txt cmake build file
|
|||||||
ChangeLog history of changes
|
ChangeLog history of changes
|
||||||
FAQ Frequently Asked Questions about zlib
|
FAQ Frequently Asked Questions about zlib
|
||||||
INDEX this file
|
INDEX this file
|
||||||
|
Makefile dummy Makefile that tells you to ./configure
|
||||||
Makefile.in template for Unix Makefile
|
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
|
||||||
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.in zconf.h template for configure
|
zconf.h.in zconf.h template for configure
|
||||||
zlib.3 Man page for zlib
|
zlib.3 Man page for zlib
|
||||||
|
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
|
||||||
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 IBM 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
|
||||||
objs/ destination for object files
|
|
||||||
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
|
||||||
pics/ destination for position-independent-code object files
|
|
||||||
projects/ projects for various Integrated Development Environments
|
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
|
||||||
|
|
||||||
zlib public header files (required for library use):
|
zlib public header files (required for library use):
|
||||||
zconf.h (made by configure)
|
zconf.h
|
||||||
zlib.h
|
zlib.h
|
||||||
|
|
||||||
private source files used to build the zlib library:
|
private source files used to build the zlib library:
|
||||||
|
3
Makefile
3
Makefile
@ -1,2 +1,5 @@
|
|||||||
all:
|
all:
|
||||||
-@echo "Use ./configure first. Thank you."
|
-@echo "Use ./configure first. Thank you."
|
||||||
|
|
||||||
|
distclean:
|
||||||
|
make -f Makefile.in distclean
|
||||||
|
19
Makefile.in
19
Makefile.in
@ -32,7 +32,7 @@ CPP=$(CC) -E
|
|||||||
|
|
||||||
STATICLIB=libz.a
|
STATICLIB=libz.a
|
||||||
SHAREDLIB=libz.so
|
SHAREDLIB=libz.so
|
||||||
SHAREDLIBV=libz.so.1.2.3.9
|
SHAREDLIBV=libz.so.1.2.4
|
||||||
SHAREDLIBM=libz.so.1
|
SHAREDLIBM=libz.so.1
|
||||||
LIBS=$(STATICLIB) $(SHAREDLIB) $(SHAREDLIBV)
|
LIBS=$(STATICLIB) $(SHAREDLIB) $(SHAREDLIBV)
|
||||||
|
|
||||||
@ -193,6 +193,18 @@ uninstall:
|
|||||||
cd $(DESTDIR)$(man3dir); rm -f zlib.3
|
cd $(DESTDIR)$(man3dir); rm -f zlib.3
|
||||||
cd $(DESTDIR)$(pkgconfigdir); rm -f zlib.pc
|
cd $(DESTDIR)$(pkgconfigdir); rm -f zlib.pc
|
||||||
|
|
||||||
|
docs: zlib.3.pdf
|
||||||
|
|
||||||
|
zlib.3.pdf: zlib.3
|
||||||
|
groff -mandoc -f H -T ps zlib.3 | ps2pdf - zlib.3.pdf
|
||||||
|
|
||||||
|
zconf.h.in: zconf.h.cmakein
|
||||||
|
sed "/^#cmakedefine/D" < zconf.h.cmakein > zconf.h.in
|
||||||
|
touch -r zconf.h.cmakein zconf.h.in
|
||||||
|
|
||||||
|
zconf: zconf.h.in
|
||||||
|
cp -p zconf.h.in zconf.h
|
||||||
|
|
||||||
mostlyclean: clean
|
mostlyclean: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *.lo *~ \
|
rm -f *.o *.lo *~ \
|
||||||
@ -203,10 +215,11 @@ clean:
|
|||||||
rm -rf objs
|
rm -rf objs
|
||||||
|
|
||||||
maintainer-clean: distclean
|
maintainer-clean: distclean
|
||||||
distclean: clean
|
distclean: clean zconf docs
|
||||||
rm -f Makefile zconf.h zlib.pc
|
rm -f Makefile zlib.pc
|
||||||
-@rm -f .DS_Store
|
-@rm -f .DS_Store
|
||||||
-@printf 'all:\n\t-@echo "Use ./configure first. Thank you."\n' > Makefile
|
-@printf 'all:\n\t-@echo "Use ./configure first. Thank you."\n' > Makefile
|
||||||
|
-@printf '\ndistclean:\n\tmake -f Makefile.in distclean\n' >> Makefile
|
||||||
-@touch -r Makefile.in Makefile
|
-@touch -r Makefile.in Makefile
|
||||||
|
|
||||||
tags:
|
tags:
|
||||||
|
85
README
85
README
@ -1,56 +1,51 @@
|
|||||||
ZLIB DATA COMPRESSION LIBRARY
|
ZLIB DATA COMPRESSION LIBRARY
|
||||||
|
|
||||||
zlib 1.2.3.9 is a general purpose data compression library. All the code is
|
zlib 1.2.4 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)
|
||||||
and rfc1952.txt (gzip format). These documents are also available in other
|
and rfc1952.txt (gzip format).
|
||||||
formats from ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
|
|
||||||
|
|
||||||
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 example.c which also tests that the library
|
||||||
is working correctly. Another example is given in the file minigzip.c. The
|
is working correctly. Another example is given in the file minigzip.c. The
|
||||||
compression library itself is composed of all source files except example.c and
|
compression library itself is composed of all source files except example.c and
|
||||||
minigzip.c.
|
minigzip.c.
|
||||||
|
|
||||||
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 short "make test; make install" should work for most
|
the top of Makefile.in. In short "./configure; make test", and if that goes
|
||||||
machines. For Unix: "./configure; make test; make install". For MSDOS, use one
|
well, "make install" should work for most flavors of Unix. For Windows, use one
|
||||||
of the special makefiles such as Makefile.msc. For VMS, use make_vms.com.
|
of the special makefiles in win32/ or projects/ . 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
|
||||||
http://www.zlib.org or http://www.gzip.org/zlib/ Before reporting a problem,
|
http://zlib.net/ . Before reporting a problem, please check this site to
|
||||||
please check this site to verify that you have the latest version of zlib;
|
verify that you have the latest version of zlib; otherwise get the latest
|
||||||
otherwise get the latest version and check whether the problem still exists or
|
version and check whether the problem still exists or not.
|
||||||
not.
|
|
||||||
|
|
||||||
PLEASE read the zlib FAQ http://www.gzip.org/zlib/zlib_faq.html before asking
|
PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help.
|
||||||
for help.
|
|
||||||
|
|
||||||
Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
|
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 in
|
issue of Dr. Dobb's Journal; a copy of the article is available at
|
||||||
http://dogma.net/markn/articles/zlibtool/zlibtool.htm
|
http://marknelson.us/1997/01/01/zlib-engine/ .
|
||||||
|
|
||||||
The changes made in version 1.2.3.9 are documented in the file ChangeLog.
|
The changes made in version 1.2.4 are documented in the file ChangeLog.
|
||||||
|
|
||||||
Unsupported third party contributions are provided in directory "contrib".
|
Unsupported third party contributions are provided in directory contrib/ .
|
||||||
|
|
||||||
A Java implementation of zlib is available in the Java Development Kit
|
zlib is available in Java using the java.util.zip package, documented at
|
||||||
http://java.sun.com/j2se/1.4.2/docs/api/java/util/zip/package-summary.html
|
http://java.sun.com/developer/technicalArticles/Programming/compression/ .
|
||||||
See the zlib home page http://www.zlib.org for details.
|
|
||||||
|
|
||||||
A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is in the
|
A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is available
|
||||||
CPAN (Comprehensive Perl Archive Network) sites
|
at CPAN (Comprehensive Perl Archive Network) sites, including
|
||||||
http://www.cpan.org/modules/by-module/Compress/
|
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://www.python.org/doc/lib/module-zlib.html .
|
||||||
|
|
||||||
A zlib binding for TCL written by Andreas Kupries <a.kupries@westend.com> is
|
zlib is built into tcl: http://wiki.tcl.tk/4610 .
|
||||||
availlable at http://www.oche.de/~akupries/soft/trf/trf_zip.html
|
|
||||||
|
|
||||||
An experimental package to read and write files in .zip format, written on top
|
An experimental package to read and write files in .zip format, written on top
|
||||||
of zlib by Gilles Vollant <info@winimage.com>, is available in the
|
of zlib by Gilles Vollant <info@winimage.com>, is available in the
|
||||||
@ -74,25 +69,21 @@ Notes for some targets:
|
|||||||
- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with
|
- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with
|
||||||
other compilers. Use "make test" to check your compiler.
|
other compilers. Use "make test" to check your compiler.
|
||||||
|
|
||||||
- gzdopen is not supported on RISCOS, BEOS and by some Mac compilers.
|
- gzdopen is not supported on RISCOS or BEOS.
|
||||||
|
|
||||||
- For PalmOs, see http://palmzlib.sourceforge.net/
|
- For PalmOs, see http://palmzlib.sourceforge.net/
|
||||||
|
|
||||||
- When building a shared, i.e. dynamic library on Mac OS X, the library must be
|
|
||||||
installed before testing (do "make install" before "make test"), since the
|
|
||||||
library location is specified in the library.
|
|
||||||
|
|
||||||
|
|
||||||
Acknowledgments:
|
Acknowledgments:
|
||||||
|
|
||||||
The deflate format used by zlib was defined by Phil Katz. The deflate
|
The deflate format used by zlib was defined by Phil Katz. The deflate and
|
||||||
and zlib specifications were written by L. Peter Deutsch. Thanks to all the
|
zlib specifications were written by L. Peter Deutsch. Thanks to all the
|
||||||
people who reported problems and suggested various improvements in zlib;
|
people who reported problems and suggested various improvements in zlib; they
|
||||||
they are too numerous to cite here.
|
are too numerous to cite here.
|
||||||
|
|
||||||
Copyright notice:
|
Copyright notice:
|
||||||
|
|
||||||
(C) 1995-2004 Jean-loup Gailly and Mark Adler
|
(C) 1995-2010 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
|
||||||
@ -113,13 +104,11 @@ Copyright notice:
|
|||||||
Jean-loup Gailly Mark Adler
|
Jean-loup Gailly Mark Adler
|
||||||
jloup@gzip.org madler@alumni.caltech.edu
|
jloup@gzip.org madler@alumni.caltech.edu
|
||||||
|
|
||||||
If you use the zlib library in a product, we would appreciate *not*
|
If you use the zlib library in a product, we would appreciate *not* receiving
|
||||||
receiving lengthy legal documents to sign. The sources are provided
|
lengthy legal documents to sign. The sources are provided for free but without
|
||||||
for free but without warranty of any kind. The library has been
|
warranty of any kind. The library has been entirely written by Jean-loup
|
||||||
entirely written by Jean-loup Gailly and Mark Adler; it does not
|
Gailly and Mark Adler; it does not include third-party code.
|
||||||
include third-party code.
|
|
||||||
|
|
||||||
If you redistribute modified sources, we would appreciate that you include
|
If you redistribute modified sources, we would appreciate that you include in
|
||||||
in the file ChangeLog history information documenting your changes. Please
|
the file ChangeLog history information documenting your changes. Please read
|
||||||
read the FAQ for more information on the distribution of modified source
|
the FAQ for more information on the distribution of modified source versions.
|
||||||
versions.
|
|
||||||
|
4
configure
vendored
4
configure
vendored
@ -16,7 +16,7 @@
|
|||||||
STATICLIB=libz.a
|
STATICLIB=libz.a
|
||||||
LDFLAGS="${LDFLAGS} -L. ${STATICLIB}"
|
LDFLAGS="${LDFLAGS} -L. ${STATICLIB}"
|
||||||
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-"ar"}
|
AR=${AR-"ar"}
|
||||||
@ -250,7 +250,7 @@ EOF
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sed "/^#cmakedefine/D" < zconf.h.in > zconf.h
|
cp -p zconf.h.in zconf.h
|
||||||
|
|
||||||
cat > $test.c <<EOF
|
cat > $test.c <<EOF
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
@ -12,7 +12,6 @@ amd64/ by Mikhail Teterin <mi@ALDAN.algebra.com>
|
|||||||
asm code for AMD64
|
asm code for AMD64
|
||||||
See patch at http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/96393
|
See patch at http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/96393
|
||||||
|
|
||||||
asm586/
|
|
||||||
asm686/ by Brian Raiter <breadbox@muppetlabs.com>
|
asm686/ by Brian Raiter <breadbox@muppetlabs.com>
|
||||||
asm code for Pentium and PPro/PII, using the AT&T (GNU as) syntax
|
asm code for Pentium and PPro/PII, using the AT&T (GNU as) syntax
|
||||||
See http://www.muppetlabs.com/~breadbox/software/assembly.html
|
See http://www.muppetlabs.com/~breadbox/software/assembly.html
|
||||||
@ -26,6 +25,10 @@ delphi/ by Cosmin Truta <cosmint@cs.ubbcluj.ro>
|
|||||||
dotzlib/ by Henrik Ravn <henrik@ravn.com>
|
dotzlib/ by Henrik Ravn <henrik@ravn.com>
|
||||||
Support for Microsoft .Net and Visual C++ .Net
|
Support for Microsoft .Net and Visual C++ .Net
|
||||||
|
|
||||||
|
gcc_gvmat64/by Gilles Vollant <info@winimage.com>
|
||||||
|
GCC Version of x86 64-bit (AMD64 and Intel EM64t) code for x64
|
||||||
|
assembler to replace longest_match() and inflate_fast()
|
||||||
|
|
||||||
infback9/ by Mark Adler <madler@alumni.caltech.edu>
|
infback9/ by Mark Adler <madler@alumni.caltech.edu>
|
||||||
Unsupported diffs to infback to decode the deflate64 format
|
Unsupported diffs to infback to decode the deflate64 format
|
||||||
|
|
||||||
@ -42,21 +45,19 @@ iostream3/ by Ludwig Schwardt <schwardt@sun.ac.za>
|
|||||||
and Kevin Ruland <kevin@rodin.wustl.edu>
|
and Kevin Ruland <kevin@rodin.wustl.edu>
|
||||||
Yet another C++ I/O streams interface
|
Yet another C++ I/O streams interface
|
||||||
|
|
||||||
masm686/ by Dan Higdon <hdan@kinesoft.com>
|
|
||||||
and Chuck Walbourn <chuckw@kinesoft.com>
|
|
||||||
asm code for Pentium Pro/PII, using the MASM syntax
|
|
||||||
|
|
||||||
masmx64/ by Gilles Vollant <info@winimage.com>
|
masmx64/ by Gilles Vollant <info@winimage.com>
|
||||||
x86 64-bit (AMD64 and Intel EM64t) code for x64 assembler to
|
x86 64-bit (AMD64 and Intel EM64t) code for x64 assembler to
|
||||||
replace longest_match() and inflate_fast()
|
replace longest_match() and inflate_fast(), also masm x86
|
||||||
|
64-bits translation of Chris Anderson inflate_fast()
|
||||||
|
|
||||||
masmx86/ by Gilles Vollant <info@winimage.com>
|
masmx86/ by Gilles Vollant <info@winimage.com>
|
||||||
x86 asm code to replace longest_match() and inflate_fast(),
|
x86 asm code to replace longest_match() and inflate_fast(),
|
||||||
for Visual C++ and MASM
|
for Visual C++ and MASM (32 bits).
|
||||||
|
Based on Brian Raiter (asm686) and Chris Anderson (inflate86)
|
||||||
|
|
||||||
minizip/ by Gilles Vollant <info@winimage.com>
|
minizip/ by Gilles Vollant <info@winimage.com>
|
||||||
Mini zip and unzip based on zlib
|
Mini zip and unzip based on zlib
|
||||||
Includes Zip64 support by Mathias Svensson <mathias@result42.com>
|
Includes Zip64 support by Mathias Svensson <mathias@result42.com>
|
||||||
See http://www.winimage.com/zLibDll/unzip.html
|
See http://www.winimage.com/zLibDll/unzip.html
|
||||||
|
|
||||||
pascal/ by Bob Dellaca <bobdl@xtra.co.nz> et al.
|
pascal/ by Bob Dellaca <bobdl@xtra.co.nz> et al.
|
||||||
|
@ -52,14 +52,73 @@
|
|||||||
#define save_r13 (64-LocalVarsSize)(%rsp)
|
#define save_r13 (64-LocalVarsSize)(%rsp)
|
||||||
#define save_r15 (80-LocalVarsSize)(%rsp)
|
#define save_r15 (80-LocalVarsSize)(%rsp)
|
||||||
|
|
||||||
|
|
||||||
|
.globl match_init, longest_match
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* On AMD64 the first argument of a function (in our case -- the pointer to
|
* On AMD64 the first argument of a function (in our case -- the pointer to
|
||||||
* deflate_state structure) is passed in %rdi, hence our offsets below are
|
* deflate_state structure) is passed in %rdi, hence our offsets below are
|
||||||
* all off of that.
|
* all off of that.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* you can check the structure offset by running
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "deflate.h"
|
||||||
|
|
||||||
|
void print_depl()
|
||||||
|
{
|
||||||
|
deflate_state ds;
|
||||||
|
deflate_state *s=&ds;
|
||||||
|
printf("size pointer=%u\n",(int)sizeof(void*));
|
||||||
|
|
||||||
|
printf("#define dsWSize (%3u)(%%rdi)\n",(int)(((char*)&(s->w_size))-((char*)s)));
|
||||||
|
printf("#define dsWMask (%3u)(%%rdi)\n",(int)(((char*)&(s->w_mask))-((char*)s)));
|
||||||
|
printf("#define dsWindow (%3u)(%%rdi)\n",(int)(((char*)&(s->window))-((char*)s)));
|
||||||
|
printf("#define dsPrev (%3u)(%%rdi)\n",(int)(((char*)&(s->prev))-((char*)s)));
|
||||||
|
printf("#define dsMatchLen (%3u)(%%rdi)\n",(int)(((char*)&(s->match_length))-((char*)s)));
|
||||||
|
printf("#define dsPrevMatch (%3u)(%%rdi)\n",(int)(((char*)&(s->prev_match))-((char*)s)));
|
||||||
|
printf("#define dsStrStart (%3u)(%%rdi)\n",(int)(((char*)&(s->strstart))-((char*)s)));
|
||||||
|
printf("#define dsMatchStart (%3u)(%%rdi)\n",(int)(((char*)&(s->match_start))-((char*)s)));
|
||||||
|
printf("#define dsLookahead (%3u)(%%rdi)\n",(int)(((char*)&(s->lookahead))-((char*)s)));
|
||||||
|
printf("#define dsPrevLen (%3u)(%%rdi)\n",(int)(((char*)&(s->prev_length))-((char*)s)));
|
||||||
|
printf("#define dsMaxChainLen (%3u)(%%rdi)\n",(int)(((char*)&(s->max_chain_length))-((char*)s)));
|
||||||
|
printf("#define dsGoodMatch (%3u)(%%rdi)\n",(int)(((char*)&(s->good_match))-((char*)s)));
|
||||||
|
printf("#define dsNiceMatch (%3u)(%%rdi)\n",(int)(((char*)&(s->nice_match))-((char*)s)));
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
to compile for XCode 3.2 on MacOSX x86_64
|
||||||
|
- run "gcc -g -c -DXCODE_MAC_X64_STRUCTURE amd64-match.S"
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef CURRENT_LINX_XCODE_MAC_X64_STRUCTURE
|
||||||
|
#define dsWSize ( 68)(%rdi)
|
||||||
|
#define dsWMask ( 76)(%rdi)
|
||||||
|
#define dsWindow ( 80)(%rdi)
|
||||||
|
#define dsPrev ( 96)(%rdi)
|
||||||
|
#define dsMatchLen (144)(%rdi)
|
||||||
|
#define dsPrevMatch (148)(%rdi)
|
||||||
|
#define dsStrStart (156)(%rdi)
|
||||||
|
#define dsMatchStart (160)(%rdi)
|
||||||
|
#define dsLookahead (164)(%rdi)
|
||||||
|
#define dsPrevLen (168)(%rdi)
|
||||||
|
#define dsMaxChainLen (172)(%rdi)
|
||||||
|
#define dsGoodMatch (188)(%rdi)
|
||||||
|
#define dsNiceMatch (192)(%rdi)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
#ifndef STRUCT_OFFSET
|
#ifndef STRUCT_OFFSET
|
||||||
# define STRUCT_OFFSET (0)
|
# define STRUCT_OFFSET (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define dsWSize ( 56 + STRUCT_OFFSET)(%rdi)
|
#define dsWSize ( 56 + STRUCT_OFFSET)(%rdi)
|
||||||
#define dsWMask ( 64 + STRUCT_OFFSET)(%rdi)
|
#define dsWMask ( 64 + STRUCT_OFFSET)(%rdi)
|
||||||
#define dsWindow ( 72 + STRUCT_OFFSET)(%rdi)
|
#define dsWindow ( 72 + STRUCT_OFFSET)(%rdi)
|
||||||
@ -74,7 +133,10 @@
|
|||||||
#define dsGoodMatch (180 + STRUCT_OFFSET)(%rdi)
|
#define dsGoodMatch (180 + STRUCT_OFFSET)(%rdi)
|
||||||
#define dsNiceMatch (184 + STRUCT_OFFSET)(%rdi)
|
#define dsNiceMatch (184 + STRUCT_OFFSET)(%rdi)
|
||||||
|
|
||||||
.globl match_init, longest_match
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
@ -222,7 +284,9 @@ LoopEntry: cmpw -1(%windowbestlen, %curmatch), %scanendw
|
|||||||
* straightforward "rep cmpsb" would not drastically degrade
|
* straightforward "rep cmpsb" would not drastically degrade
|
||||||
* performance -- unrolling it, for example, makes no difference.
|
* performance -- unrolling it, for example, makes no difference.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#undef USE_SSE /* works, but is 6-7% slower, than non-SSE... */
|
#undef USE_SSE /* works, but is 6-7% slower, than non-SSE... */
|
||||||
|
|
||||||
LoopCmps:
|
LoopCmps:
|
||||||
#ifdef USE_SSE
|
#ifdef USE_SSE
|
||||||
/* Preload the SSE registers */
|
/* Preload the SSE registers */
|
||||||
@ -244,29 +308,55 @@ LoopCmps:
|
|||||||
notw %ax
|
notw %ax
|
||||||
bsfw %ax, %ax
|
bsfw %ax, %ax
|
||||||
jnz LeaveLoopCmps
|
jnz LeaveLoopCmps
|
||||||
add $16, %rdx
|
|
||||||
|
/* this is the only iteration of the loop with a possibility of having
|
||||||
|
incremented rdx by 0x108 (each loop iteration add 16*4 = 0x40
|
||||||
|
and (0x40*4)+8=0x108 */
|
||||||
|
add $8, %rdx
|
||||||
|
jz LenMaximum
|
||||||
|
add $8, %rdx
|
||||||
|
|
||||||
|
|
||||||
pmovmskb %xmm3, %rax
|
pmovmskb %xmm3, %rax
|
||||||
notw %ax
|
notw %ax
|
||||||
bsfw %ax, %ax
|
bsfw %ax, %ax
|
||||||
jnz LeaveLoopCmps
|
jnz LeaveLoopCmps
|
||||||
|
|
||||||
|
|
||||||
add $16, %rdx
|
add $16, %rdx
|
||||||
|
|
||||||
|
|
||||||
pmovmskb %xmm5, %rax
|
pmovmskb %xmm5, %rax
|
||||||
notw %ax
|
notw %ax
|
||||||
bsfw %ax, %ax
|
bsfw %ax, %ax
|
||||||
jnz LeaveLoopCmps
|
jnz LeaveLoopCmps
|
||||||
|
|
||||||
add $16, %rdx
|
add $16, %rdx
|
||||||
|
|
||||||
|
|
||||||
pmovmskb %xmm7, %rax
|
pmovmskb %xmm7, %rax
|
||||||
notw %ax
|
notw %ax
|
||||||
bsfw %ax, %ax
|
bsfw %ax, %ax
|
||||||
jnz LeaveLoopCmps
|
jnz LeaveLoopCmps
|
||||||
|
|
||||||
add $16, %rdx
|
add $16, %rdx
|
||||||
|
|
||||||
jmp LoopCmps
|
jmp LoopCmps
|
||||||
LeaveLoopCmps: add %rax, %rdx
|
LeaveLoopCmps: add %rax, %rdx
|
||||||
#else
|
#else
|
||||||
mov (%windowbestlen, %rdx), %rax
|
mov (%windowbestlen, %rdx), %rax
|
||||||
xor (%prev, %rdx), %rax
|
xor (%prev, %rdx), %rax
|
||||||
jnz LeaveLoopCmps
|
jnz LeaveLoopCmps
|
||||||
add $8, %rdx
|
|
||||||
|
mov 8(%windowbestlen, %rdx), %rax
|
||||||
|
xor 8(%prev, %rdx), %rax
|
||||||
|
jnz LeaveLoopCmps8
|
||||||
|
|
||||||
|
mov 16(%windowbestlen, %rdx), %rax
|
||||||
|
xor 16(%prev, %rdx), %rax
|
||||||
|
jnz LeaveLoopCmps16
|
||||||
|
|
||||||
|
add $24, %rdx
|
||||||
jnz LoopCmps
|
jnz LoopCmps
|
||||||
jmp LenMaximum
|
jmp LenMaximum
|
||||||
# if 0
|
# if 0
|
||||||
@ -274,10 +364,15 @@ LeaveLoopCmps: add %rax, %rdx
|
|||||||
* This three-liner is tantalizingly simple, but bsf is a slow instruction,
|
* This three-liner is tantalizingly simple, but bsf is a slow instruction,
|
||||||
* and the complicated alternative down below is quite a bit faster. Sad...
|
* and the complicated alternative down below is quite a bit faster. Sad...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
LeaveLoopCmps: bsf %rax, %rax /* find the first non-zero bit */
|
LeaveLoopCmps: bsf %rax, %rax /* find the first non-zero bit */
|
||||||
shrl $3, %eax /* divide by 8 to get the byte */
|
shrl $3, %eax /* divide by 8 to get the byte */
|
||||||
add %rax, %rdx
|
add %rax, %rdx
|
||||||
# else
|
# else
|
||||||
|
LeaveLoopCmps16:
|
||||||
|
add $8, %rdx
|
||||||
|
LeaveLoopCmps8:
|
||||||
|
add $8, %rdx
|
||||||
LeaveLoopCmps: testl $0xFFFFFFFF, %eax /* Check the first 4 bytes */
|
LeaveLoopCmps: testl $0xFFFFFFFF, %eax /* Check the first 4 bytes */
|
||||||
jnz Check16
|
jnz Check16
|
||||||
add $4, %rdx
|
add $4, %rdx
|
||||||
|
@ -1,43 +0,0 @@
|
|||||||
This is a patched version of zlib modified to use
|
|
||||||
Pentium-optimized assembly code in the deflation algorithm. The files
|
|
||||||
changed/added by this patch are:
|
|
||||||
|
|
||||||
README.586
|
|
||||||
match.S
|
|
||||||
|
|
||||||
The effectiveness of these modifications is a bit marginal, as the the
|
|
||||||
program's bottleneck seems to be mostly L1-cache contention, for which
|
|
||||||
there is no real way to work around without rewriting the basic
|
|
||||||
algorithm. The speedup on average is around 5-10% (which is generally
|
|
||||||
less than the amount of variance between subsequent executions).
|
|
||||||
However, when used at level 9 compression, the cache contention can
|
|
||||||
drop enough for the assembly version to achieve 10-20% speedup (and
|
|
||||||
sometimes more, depending on the amount of overall redundancy in the
|
|
||||||
files). Even here, though, cache contention can still be the limiting
|
|
||||||
factor, depending on the nature of the program using the zlib library.
|
|
||||||
This may also mean that better improvements will be seen on a Pentium
|
|
||||||
with MMX, which suffers much less from L1-cache contention, but I have
|
|
||||||
not yet verified this.
|
|
||||||
|
|
||||||
Note that this code has been tailored for the Pentium in particular,
|
|
||||||
and will not perform well on the Pentium Pro (due to the use of a
|
|
||||||
partial register in the inner loop).
|
|
||||||
|
|
||||||
If you are using an assembler other than GNU as, you will have to
|
|
||||||
translate match.S to use your assembler's syntax. (Have fun.)
|
|
||||||
|
|
||||||
Brian Raiter
|
|
||||||
breadbox@muppetlabs.com
|
|
||||||
April, 1998
|
|
||||||
|
|
||||||
|
|
||||||
Added for zlib 1.1.3:
|
|
||||||
|
|
||||||
The patches come from
|
|
||||||
http://www.muppetlabs.com/~breadbox/software/assembly.html
|
|
||||||
|
|
||||||
To compile zlib with this asm file, copy match.S to the zlib directory
|
|
||||||
then do:
|
|
||||||
|
|
||||||
CFLAGS="-O3 -DASMV" ./configure
|
|
||||||
make OBJA=match.o
|
|
@ -1,364 +0,0 @@
|
|||||||
/* match.s -- Pentium-optimized version of longest_match()
|
|
||||||
* Written for zlib 1.1.2
|
|
||||||
* Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com>
|
|
||||||
*
|
|
||||||
* This is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef NO_UNDERLINE
|
|
||||||
#define match_init _match_init
|
|
||||||
#define longest_match _longest_match
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MAX_MATCH (258)
|
|
||||||
#define MIN_MATCH (3)
|
|
||||||
#define MIN_LOOKAHEAD (MAX_MATCH + MIN_MATCH + 1)
|
|
||||||
#define MAX_MATCH_8 ((MAX_MATCH + 7) & ~7)
|
|
||||||
|
|
||||||
/* stack frame offsets */
|
|
||||||
|
|
||||||
#define wmask 0 /* local copy of s->wmask */
|
|
||||||
#define window 4 /* local copy of s->window */
|
|
||||||
#define windowbestlen 8 /* s->window + bestlen */
|
|
||||||
#define chainlenscanend 12 /* high word: current chain len */
|
|
||||||
/* low word: last bytes sought */
|
|
||||||
#define scanstart 16 /* first two bytes of string */
|
|
||||||
#define scanalign 20 /* dword-misalignment of string */
|
|
||||||
#define nicematch 24 /* a good enough match size */
|
|
||||||
#define bestlen 28 /* size of best match so far */
|
|
||||||
#define scan 32 /* ptr to string wanting match */
|
|
||||||
|
|
||||||
#define LocalVarsSize (36)
|
|
||||||
/* saved ebx 36 */
|
|
||||||
/* saved edi 40 */
|
|
||||||
/* saved esi 44 */
|
|
||||||
/* saved ebp 48 */
|
|
||||||
/* return address 52 */
|
|
||||||
#define deflatestate 56 /* the function arguments */
|
|
||||||
#define curmatch 60
|
|
||||||
|
|
||||||
/* Offsets for fields in the deflate_state structure. These numbers
|
|
||||||
* are calculated from the definition of deflate_state, with the
|
|
||||||
* assumption that the compiler will dword-align the fields. (Thus,
|
|
||||||
* changing the definition of deflate_state could easily cause this
|
|
||||||
* program to crash horribly, without so much as a warning at
|
|
||||||
* compile time. Sigh.)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* All the +zlib1222add offsets are due to the addition of fields
|
|
||||||
* in zlib in the deflate_state structure since the asm code was first written
|
|
||||||
* (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)").
|
|
||||||
* (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0").
|
|
||||||
* if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8").
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define zlib1222add (8)
|
|
||||||
|
|
||||||
#define dsWSize (36+zlib1222add)
|
|
||||||
#define dsWMask (44+zlib1222add)
|
|
||||||
#define dsWindow (48+zlib1222add)
|
|
||||||
#define dsPrev (56+zlib1222add)
|
|
||||||
#define dsMatchLen (88+zlib1222add)
|
|
||||||
#define dsPrevMatch (92+zlib1222add)
|
|
||||||
#define dsStrStart (100+zlib1222add)
|
|
||||||
#define dsMatchStart (104+zlib1222add)
|
|
||||||
#define dsLookahead (108+zlib1222add)
|
|
||||||
#define dsPrevLen (112+zlib1222add)
|
|
||||||
#define dsMaxChainLen (116+zlib1222add)
|
|
||||||
#define dsGoodMatch (132+zlib1222add)
|
|
||||||
#define dsNiceMatch (136+zlib1222add)
|
|
||||||
|
|
||||||
|
|
||||||
.file "match.S"
|
|
||||||
|
|
||||||
.globl match_init, longest_match
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
/* uInt longest_match(deflate_state *deflatestate, IPos curmatch) */
|
|
||||||
|
|
||||||
longest_match:
|
|
||||||
|
|
||||||
/* Save registers that the compiler may be using, and adjust %esp to */
|
|
||||||
/* make room for our stack frame. */
|
|
||||||
|
|
||||||
pushl %ebp
|
|
||||||
pushl %edi
|
|
||||||
pushl %esi
|
|
||||||
pushl %ebx
|
|
||||||
subl $LocalVarsSize, %esp
|
|
||||||
|
|
||||||
/* Retrieve the function arguments. %ecx will hold cur_match */
|
|
||||||
/* throughout the entire function. %edx will hold the pointer to the */
|
|
||||||
/* deflate_state structure during the function's setup (before */
|
|
||||||
/* entering the main loop). */
|
|
||||||
|
|
||||||
movl deflatestate(%esp), %edx
|
|
||||||
movl curmatch(%esp), %ecx
|
|
||||||
|
|
||||||
/* if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; */
|
|
||||||
|
|
||||||
movl dsNiceMatch(%edx), %eax
|
|
||||||
movl dsLookahead(%edx), %ebx
|
|
||||||
cmpl %eax, %ebx
|
|
||||||
jl LookaheadLess
|
|
||||||
movl %eax, %ebx
|
|
||||||
LookaheadLess: movl %ebx, nicematch(%esp)
|
|
||||||
|
|
||||||
/* register Bytef *scan = s->window + s->strstart; */
|
|
||||||
|
|
||||||
movl dsWindow(%edx), %esi
|
|
||||||
movl %esi, window(%esp)
|
|
||||||
movl dsStrStart(%edx), %ebp
|
|
||||||
lea (%esi,%ebp), %edi
|
|
||||||
movl %edi, scan(%esp)
|
|
||||||
|
|
||||||
/* Determine how many bytes the scan ptr is off from being */
|
|
||||||
/* dword-aligned. */
|
|
||||||
|
|
||||||
movl %edi, %eax
|
|
||||||
negl %eax
|
|
||||||
andl $3, %eax
|
|
||||||
movl %eax, scanalign(%esp)
|
|
||||||
|
|
||||||
/* IPos limit = s->strstart > (IPos)MAX_DIST(s) ? */
|
|
||||||
/* s->strstart - (IPos)MAX_DIST(s) : NIL; */
|
|
||||||
|
|
||||||
movl dsWSize(%edx), %eax
|
|
||||||
subl $MIN_LOOKAHEAD, %eax
|
|
||||||
subl %eax, %ebp
|
|
||||||
jg LimitPositive
|
|
||||||
xorl %ebp, %ebp
|
|
||||||
LimitPositive:
|
|
||||||
|
|
||||||
/* unsigned chain_length = s->max_chain_length; */
|
|
||||||
/* if (s->prev_length >= s->good_match) { */
|
|
||||||
/* chain_length >>= 2; */
|
|
||||||
/* } */
|
|
||||||
|
|
||||||
movl dsPrevLen(%edx), %eax
|
|
||||||
movl dsGoodMatch(%edx), %ebx
|
|
||||||
cmpl %ebx, %eax
|
|
||||||
movl dsMaxChainLen(%edx), %ebx
|
|
||||||
jl LastMatchGood
|
|
||||||
shrl $2, %ebx
|
|
||||||
LastMatchGood:
|
|
||||||
|
|
||||||
/* chainlen is decremented once beforehand so that the function can */
|
|
||||||
/* use the sign flag instead of the zero flag for the exit test. */
|
|
||||||
/* It is then shifted into the high word, to make room for the scanend */
|
|
||||||
/* scanend value, which it will always accompany. */
|
|
||||||
|
|
||||||
decl %ebx
|
|
||||||
shll $16, %ebx
|
|
||||||
|
|
||||||
/* int best_len = s->prev_length; */
|
|
||||||
|
|
||||||
movl dsPrevLen(%edx), %eax
|
|
||||||
movl %eax, bestlen(%esp)
|
|
||||||
|
|
||||||
/* Store the sum of s->window + best_len in %esi locally, and in %esi. */
|
|
||||||
|
|
||||||
addl %eax, %esi
|
|
||||||
movl %esi, windowbestlen(%esp)
|
|
||||||
|
|
||||||
/* register ush scan_start = *(ushf*)scan; */
|
|
||||||
/* register ush scan_end = *(ushf*)(scan+best_len-1); */
|
|
||||||
|
|
||||||
movw (%edi), %bx
|
|
||||||
movw %bx, scanstart(%esp)
|
|
||||||
movw -1(%edi,%eax), %bx
|
|
||||||
movl %ebx, chainlenscanend(%esp)
|
|
||||||
|
|
||||||
/* Posf *prev = s->prev; */
|
|
||||||
/* uInt wmask = s->w_mask; */
|
|
||||||
|
|
||||||
movl dsPrev(%edx), %edi
|
|
||||||
movl dsWMask(%edx), %edx
|
|
||||||
mov %edx, wmask(%esp)
|
|
||||||
|
|
||||||
/* Jump into the main loop. */
|
|
||||||
|
|
||||||
jmp LoopEntry
|
|
||||||
|
|
||||||
.balign 16
|
|
||||||
|
|
||||||
/* do {
|
|
||||||
* match = s->window + cur_match;
|
|
||||||
* if (*(ushf*)(match+best_len-1) != scan_end ||
|
|
||||||
* *(ushf*)match != scan_start) continue;
|
|
||||||
* [...]
|
|
||||||
* } while ((cur_match = prev[cur_match & wmask]) > limit
|
|
||||||
* && --chain_length != 0);
|
|
||||||
*
|
|
||||||
* Here is the inner loop of the function. The function will spend the
|
|
||||||
* majority of its time in this loop, and majority of that time will
|
|
||||||
* be spent in the first ten instructions.
|
|
||||||
*
|
|
||||||
* Within this loop:
|
|
||||||
* %ebx = chainlenscanend - i.e., ((chainlen << 16) | scanend)
|
|
||||||
* %ecx = curmatch
|
|
||||||
* %edx = curmatch & wmask
|
|
||||||
* %esi = windowbestlen - i.e., (window + bestlen)
|
|
||||||
* %edi = prev
|
|
||||||
* %ebp = limit
|
|
||||||
*
|
|
||||||
* Two optimization notes on the choice of instructions:
|
|
||||||
*
|
|
||||||
* The first instruction uses a 16-bit address, which costs an extra,
|
|
||||||
* unpairable cycle. This is cheaper than doing a 32-bit access and
|
|
||||||
* zeroing the high word, due to the 3-cycle misalignment penalty which
|
|
||||||
* would occur half the time. This also turns out to be cheaper than
|
|
||||||
* doing two separate 8-bit accesses, as the memory is so rarely in the
|
|
||||||
* L1 cache.
|
|
||||||
*
|
|
||||||
* The window buffer, however, apparently spends a lot of time in the
|
|
||||||
* cache, and so it is faster to retrieve the word at the end of the
|
|
||||||
* match string with two 8-bit loads. The instructions that test the
|
|
||||||
* word at the beginning of the match string, however, are executed
|
|
||||||
* much less frequently, and there it was cheaper to use 16-bit
|
|
||||||
* instructions, which avoided the necessity of saving off and
|
|
||||||
* subsequently reloading one of the other registers.
|
|
||||||
*/
|
|
||||||
LookupLoop:
|
|
||||||
/* 1 U & V */
|
|
||||||
movw (%edi,%edx,2), %cx /* 2 U pipe */
|
|
||||||
movl wmask(%esp), %edx /* 2 V pipe */
|
|
||||||
cmpl %ebp, %ecx /* 3 U pipe */
|
|
||||||
jbe LeaveNow /* 3 V pipe */
|
|
||||||
subl $0x00010000, %ebx /* 4 U pipe */
|
|
||||||
js LeaveNow /* 4 V pipe */
|
|
||||||
LoopEntry: movb -1(%esi,%ecx), %al /* 5 U pipe */
|
|
||||||
andl %ecx, %edx /* 5 V pipe */
|
|
||||||
cmpb %bl, %al /* 6 U pipe */
|
|
||||||
jnz LookupLoop /* 6 V pipe */
|
|
||||||
movb (%esi,%ecx), %ah
|
|
||||||
cmpb %bh, %ah
|
|
||||||
jnz LookupLoop
|
|
||||||
movl window(%esp), %eax
|
|
||||||
movw (%eax,%ecx), %ax
|
|
||||||
cmpw scanstart(%esp), %ax
|
|
||||||
jnz LookupLoop
|
|
||||||
|
|
||||||
/* Store the current value of chainlen. */
|
|
||||||
|
|
||||||
movl %ebx, chainlenscanend(%esp)
|
|
||||||
|
|
||||||
/* Point %edi to the string under scrutiny, and %esi to the string we */
|
|
||||||
/* are hoping to match it up with. In actuality, %esi and %edi are */
|
|
||||||
/* both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and %edx is */
|
|
||||||
/* initialized to -(MAX_MATCH_8 - scanalign). */
|
|
||||||
|
|
||||||
movl window(%esp), %esi
|
|
||||||
movl scan(%esp), %edi
|
|
||||||
addl %ecx, %esi
|
|
||||||
movl scanalign(%esp), %eax
|
|
||||||
movl $(-MAX_MATCH_8), %edx
|
|
||||||
lea MAX_MATCH_8(%edi,%eax), %edi
|
|
||||||
lea MAX_MATCH_8(%esi,%eax), %esi
|
|
||||||
|
|
||||||
/* Test the strings for equality, 8 bytes at a time. At the end,
|
|
||||||
* adjust %edx so that it is offset to the exact byte that mismatched.
|
|
||||||
*
|
|
||||||
* We already know at this point that the first three bytes of the
|
|
||||||
* strings match each other, and they can be safely passed over before
|
|
||||||
* starting the compare loop. So what this code does is skip over 0-3
|
|
||||||
* bytes, as much as necessary in order to dword-align the %edi
|
|
||||||
* pointer. (%esi will still be misaligned three times out of four.)
|
|
||||||
*
|
|
||||||
* It should be confessed that this loop usually does not represent
|
|
||||||
* much of the total running time. Replacing it with a more
|
|
||||||
* straightforward "rep cmpsb" would not drastically degrade
|
|
||||||
* performance.
|
|
||||||
*/
|
|
||||||
LoopCmps:
|
|
||||||
movl (%esi,%edx), %eax
|
|
||||||
movl (%edi,%edx), %ebx
|
|
||||||
xorl %ebx, %eax
|
|
||||||
jnz LeaveLoopCmps
|
|
||||||
movl 4(%esi,%edx), %eax
|
|
||||||
movl 4(%edi,%edx), %ebx
|
|
||||||
xorl %ebx, %eax
|
|
||||||
jnz LeaveLoopCmps4
|
|
||||||
addl $8, %edx
|
|
||||||
jnz LoopCmps
|
|
||||||
jmp LenMaximum
|
|
||||||
LeaveLoopCmps4: addl $4, %edx
|
|
||||||
LeaveLoopCmps: testl $0x0000FFFF, %eax
|
|
||||||
jnz LenLower
|
|
||||||
addl $2, %edx
|
|
||||||
shrl $16, %eax
|
|
||||||
LenLower: subb $1, %al
|
|
||||||
adcl $0, %edx
|
|
||||||
|
|
||||||
/* Calculate the length of the match. If it is longer than MAX_MATCH, */
|
|
||||||
/* then automatically accept it as the best possible match and leave. */
|
|
||||||
|
|
||||||
lea (%edi,%edx), %eax
|
|
||||||
movl scan(%esp), %edi
|
|
||||||
subl %edi, %eax
|
|
||||||
cmpl $MAX_MATCH, %eax
|
|
||||||
jge LenMaximum
|
|
||||||
|
|
||||||
/* If the length of the match is not longer than the best match we */
|
|
||||||
/* have so far, then forget it and return to the lookup loop. */
|
|
||||||
|
|
||||||
movl deflatestate(%esp), %edx
|
|
||||||
movl bestlen(%esp), %ebx
|
|
||||||
cmpl %ebx, %eax
|
|
||||||
jg LongerMatch
|
|
||||||
movl chainlenscanend(%esp), %ebx
|
|
||||||
movl windowbestlen(%esp), %esi
|
|
||||||
movl dsPrev(%edx), %edi
|
|
||||||
movl wmask(%esp), %edx
|
|
||||||
andl %ecx, %edx
|
|
||||||
jmp LookupLoop
|
|
||||||
|
|
||||||
/* s->match_start = cur_match; */
|
|
||||||
/* best_len = len; */
|
|
||||||
/* if (len >= nice_match) break; */
|
|
||||||
/* scan_end = *(ushf*)(scan+best_len-1); */
|
|
||||||
|
|
||||||
LongerMatch: movl nicematch(%esp), %ebx
|
|
||||||
movl %eax, bestlen(%esp)
|
|
||||||
movl %ecx, dsMatchStart(%edx)
|
|
||||||
cmpl %ebx, %eax
|
|
||||||
jge LeaveNow
|
|
||||||
movl window(%esp), %esi
|
|
||||||
addl %eax, %esi
|
|
||||||
movl %esi, windowbestlen(%esp)
|
|
||||||
movl chainlenscanend(%esp), %ebx
|
|
||||||
movw -1(%edi,%eax), %bx
|
|
||||||
movl dsPrev(%edx), %edi
|
|
||||||
movl %ebx, chainlenscanend(%esp)
|
|
||||||
movl wmask(%esp), %edx
|
|
||||||
andl %ecx, %edx
|
|
||||||
jmp LookupLoop
|
|
||||||
|
|
||||||
/* Accept the current string, with the maximum possible length. */
|
|
||||||
|
|
||||||
LenMaximum: movl deflatestate(%esp), %edx
|
|
||||||
movl $MAX_MATCH, bestlen(%esp)
|
|
||||||
movl %ecx, dsMatchStart(%edx)
|
|
||||||
|
|
||||||
/* if ((uInt)best_len <= s->lookahead) return (uInt)best_len; */
|
|
||||||
/* return s->lookahead; */
|
|
||||||
|
|
||||||
LeaveNow:
|
|
||||||
movl deflatestate(%esp), %edx
|
|
||||||
movl bestlen(%esp), %ebx
|
|
||||||
movl dsLookahead(%edx), %eax
|
|
||||||
cmpl %eax, %ebx
|
|
||||||
jg LookaheadRet
|
|
||||||
movl %ebx, %eax
|
|
||||||
LookaheadRet:
|
|
||||||
|
|
||||||
/* Restore the stack and return from whence we came. */
|
|
||||||
|
|
||||||
addl $LocalVarsSize, %esp
|
|
||||||
popl %ebx
|
|
||||||
popl %esi
|
|
||||||
popl %edi
|
|
||||||
popl %ebp
|
|
||||||
match_init: ret
|
|
@ -32,3 +32,20 @@ then do:
|
|||||||
|
|
||||||
CFLAGS="-O3 -DASMV" ./configure
|
CFLAGS="-O3 -DASMV" ./configure
|
||||||
make OBJA=match.o
|
make OBJA=match.o
|
||||||
|
|
||||||
|
|
||||||
|
Update:
|
||||||
|
|
||||||
|
I've been ignoring these assembly routines for years, believing that
|
||||||
|
gcc's generated code had caught up with it sometime around gcc 2.95
|
||||||
|
and the major rearchitecting of the Pentium 4. However, I recently
|
||||||
|
learned that, despite what I believed, this code still has some life
|
||||||
|
in it. On the Pentium 4 and AMD64 chips, it continues to run about 8%
|
||||||
|
faster than the code produced by gcc 4.1.
|
||||||
|
|
||||||
|
In acknowledgement of its continuing usefulness, I've altered the
|
||||||
|
license to match that of the rest of zlib. Share and Enjoy!
|
||||||
|
|
||||||
|
Brian Raiter
|
||||||
|
breadbox@muppetlabs.com
|
||||||
|
April, 2007
|
||||||
|
@ -1,9 +1,23 @@
|
|||||||
/* match.s -- Pentium-Pro-optimized version of longest_match()
|
/* match.S -- x86 assembly version of the zlib longest_match() function.
|
||||||
* Written for zlib 1.1.2
|
* Optimized for the Intel 686 chips (PPro and later).
|
||||||
* Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com>
|
|
||||||
*
|
*
|
||||||
* This is free software; you can redistribute it and/or modify it
|
* Copyright (C) 1998, 2007 Brian Raiter <breadbox@muppetlabs.com>
|
||||||
* under the terms of the GNU General Public License.
|
*
|
||||||
|
* This software is provided 'as-is', without any express or implied
|
||||||
|
* warranty. In no event will the author be held liable for any damages
|
||||||
|
* arising from the use of this software.
|
||||||
|
*
|
||||||
|
* Permission is granted to anyone to use this software for any purpose,
|
||||||
|
* including commercial applications, and to alter it and redistribute it
|
||||||
|
* freely, subject to the following restrictions:
|
||||||
|
*
|
||||||
|
* 1. The origin of this software must not be misrepresented; you must not
|
||||||
|
* claim that you wrote the original software. If you use this software
|
||||||
|
* in a product, an acknowledgment in the product documentation would be
|
||||||
|
* appreciated but is not required.
|
||||||
|
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
* misrepresented as being the original software.
|
||||||
|
* 3. This notice may not be removed or altered from any source distribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef NO_UNDERLINE
|
#ifndef NO_UNDERLINE
|
||||||
|
@ -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.3';
|
zlib_version = '1.2.4';
|
||||||
|
|
||||||
type
|
type
|
||||||
EZlibError = class(Exception);
|
EZlibError = class(Exception);
|
||||||
|
@ -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.3", Info.Version);
|
Assert.AreEqual("1.2.4", 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);
|
||||||
|
574
contrib/gcc_gvmat64/gvmat64.S
Normal file
574
contrib/gcc_gvmat64/gvmat64.S
Normal file
@ -0,0 +1,574 @@
|
|||||||
|
/*
|
||||||
|
;uInt longest_match_x64(
|
||||||
|
; deflate_state *s,
|
||||||
|
; IPos cur_match); // current match
|
||||||
|
|
||||||
|
; gvmat64.S -- Asm portion of the optimized longest_match for 32 bits x86_64
|
||||||
|
; (AMD64 on Athlon 64, Opteron, Phenom
|
||||||
|
; and Intel EM64T on Pentium 4 with EM64T, Pentium D, Core 2 Duo, Core I5/I7)
|
||||||
|
; this file is translation from gvmat64.asm to GCC 4.x (for Linux, Mac XCode)
|
||||||
|
; Copyright (C) 1995-2010 Jean-loup Gailly, Brian Raiter and Gilles Vollant.
|
||||||
|
;
|
||||||
|
; File written by Gilles Vollant, by converting to assembly the longest_match
|
||||||
|
; from Jean-loup Gailly in deflate.c of zLib and infoZip zip.
|
||||||
|
; and by taking inspiration on asm686 with masm, optimised assembly code
|
||||||
|
; from Brian Raiter, written 1998
|
||||||
|
;
|
||||||
|
; This software is provided 'as-is', without any express or implied
|
||||||
|
; warranty. In no event will the authors be held liable for any damages
|
||||||
|
; arising from the use of this software.
|
||||||
|
;
|
||||||
|
; Permission is granted to anyone to use this software for any purpose,
|
||||||
|
; including commercial applications, and to alter it and redistribute it
|
||||||
|
; freely, subject to the following restrictions:
|
||||||
|
;
|
||||||
|
; 1. The origin of this software must not be misrepresented; you must not
|
||||||
|
; claim that you wrote the original software. If you use this software
|
||||||
|
; in a product, an acknowledgment in the product documentation would be
|
||||||
|
; appreciated but is not required.
|
||||||
|
; 2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
; misrepresented as being the original software
|
||||||
|
; 3. This notice may not be removed or altered from any source distribution.
|
||||||
|
;
|
||||||
|
; http://www.zlib.net
|
||||||
|
; http://www.winimage.com/zLibDll
|
||||||
|
; http://www.muppetlabs.com/~breadbox/software/assembly.html
|
||||||
|
;
|
||||||
|
; to compile this file for zLib, I use option:
|
||||||
|
; gcc -c -arch x86_64 gvmat64.S
|
||||||
|
|
||||||
|
|
||||||
|
;uInt longest_match(s, cur_match)
|
||||||
|
; deflate_state *s;
|
||||||
|
; IPos cur_match; // current match /
|
||||||
|
;
|
||||||
|
; with XCode for Mac, I had strange error with some jump on intel syntax
|
||||||
|
; this is why BEFORE_JMP and AFTER_JMP are used
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define BEFORE_JMP .att_syntax
|
||||||
|
#define AFTER_JMP .intel_syntax noprefix
|
||||||
|
|
||||||
|
#ifndef NO_UNDERLINE
|
||||||
|
# define match_init _match_init
|
||||||
|
# define longest_match _longest_match
|
||||||
|
#endif
|
||||||
|
|
||||||
|
.intel_syntax noprefix
|
||||||
|
|
||||||
|
.globl match_init, longest_match
|
||||||
|
.text
|
||||||
|
longest_match:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define LocalVarsSize 96
|
||||||
|
/*
|
||||||
|
; register used : rax,rbx,rcx,rdx,rsi,rdi,r8,r9,r10,r11,r12
|
||||||
|
; free register : r14,r15
|
||||||
|
; register can be saved : rsp
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define chainlenwmask (rsp + 8 - LocalVarsSize)
|
||||||
|
#define nicematch (rsp + 16 - LocalVarsSize)
|
||||||
|
|
||||||
|
#define save_rdi (rsp + 24 - LocalVarsSize)
|
||||||
|
#define save_rsi (rsp + 32 - LocalVarsSize)
|
||||||
|
#define save_rbx (rsp + 40 - LocalVarsSize)
|
||||||
|
#define save_rbp (rsp + 48 - LocalVarsSize)
|
||||||
|
#define save_r12 (rsp + 56 - LocalVarsSize)
|
||||||
|
#define save_r13 (rsp + 64 - LocalVarsSize)
|
||||||
|
#define save_r14 (rsp + 72 - LocalVarsSize)
|
||||||
|
#define save_r15 (rsp + 80 - LocalVarsSize)
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
; all the +4 offsets are due to the addition of pending_buf_size (in zlib
|
||||||
|
; in the deflate_state structure since the asm code was first written
|
||||||
|
; (if you compile with zlib 1.0.4 or older, remove the +4).
|
||||||
|
; Note : these value are good with a 8 bytes boundary pack structure
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MAX_MATCH 258
|
||||||
|
#define MIN_MATCH 3
|
||||||
|
#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
|
||||||
|
|
||||||
|
/*
|
||||||
|
;;; Offsets for fields in the deflate_state structure. These numbers
|
||||||
|
;;; are calculated from the definition of deflate_state, with the
|
||||||
|
;;; assumption that the compiler will dword-align the fields. (Thus,
|
||||||
|
;;; changing the definition of deflate_state could easily cause this
|
||||||
|
;;; program to crash horribly, without so much as a warning at
|
||||||
|
;;; compile time. Sigh.)
|
||||||
|
|
||||||
|
; all the +zlib1222add offsets are due to the addition of fields
|
||||||
|
; in zlib in the deflate_state structure since the asm code was first written
|
||||||
|
; (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)").
|
||||||
|
; (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0").
|
||||||
|
; if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8").
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* you can check the structure offset by running
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "deflate.h"
|
||||||
|
|
||||||
|
void print_depl()
|
||||||
|
{
|
||||||
|
deflate_state ds;
|
||||||
|
deflate_state *s=&ds;
|
||||||
|
printf("size pointer=%u\n",(int)sizeof(void*));
|
||||||
|
|
||||||
|
printf("#define dsWSize %u\n",(int)(((char*)&(s->w_size))-((char*)s)));
|
||||||
|
printf("#define dsWMask %u\n",(int)(((char*)&(s->w_mask))-((char*)s)));
|
||||||
|
printf("#define dsWindow %u\n",(int)(((char*)&(s->window))-((char*)s)));
|
||||||
|
printf("#define dsPrev %u\n",(int)(((char*)&(s->prev))-((char*)s)));
|
||||||
|
printf("#define dsMatchLen %u\n",(int)(((char*)&(s->match_length))-((char*)s)));
|
||||||
|
printf("#define dsPrevMatch %u\n",(int)(((char*)&(s->prev_match))-((char*)s)));
|
||||||
|
printf("#define dsStrStart %u\n",(int)(((char*)&(s->strstart))-((char*)s)));
|
||||||
|
printf("#define dsMatchStart %u\n",(int)(((char*)&(s->match_start))-((char*)s)));
|
||||||
|
printf("#define dsLookahead %u\n",(int)(((char*)&(s->lookahead))-((char*)s)));
|
||||||
|
printf("#define dsPrevLen %u\n",(int)(((char*)&(s->prev_length))-((char*)s)));
|
||||||
|
printf("#define dsMaxChainLen %u\n",(int)(((char*)&(s->max_chain_length))-((char*)s)));
|
||||||
|
printf("#define dsGoodMatch %u\n",(int)(((char*)&(s->good_match))-((char*)s)));
|
||||||
|
printf("#define dsNiceMatch %u\n",(int)(((char*)&(s->nice_match))-((char*)s)));
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define dsWSize 68
|
||||||
|
#define dsWMask 76
|
||||||
|
#define dsWindow 80
|
||||||
|
#define dsPrev 96
|
||||||
|
#define dsMatchLen 144
|
||||||
|
#define dsPrevMatch 148
|
||||||
|
#define dsStrStart 156
|
||||||
|
#define dsMatchStart 160
|
||||||
|
#define dsLookahead 164
|
||||||
|
#define dsPrevLen 168
|
||||||
|
#define dsMaxChainLen 172
|
||||||
|
#define dsGoodMatch 188
|
||||||
|
#define dsNiceMatch 192
|
||||||
|
|
||||||
|
#define window_size [ rcx + dsWSize]
|
||||||
|
#define WMask [ rcx + dsWMask]
|
||||||
|
#define window_ad [ rcx + dsWindow]
|
||||||
|
#define prev_ad [ rcx + dsPrev]
|
||||||
|
#define strstart [ rcx + dsStrStart]
|
||||||
|
#define match_start [ rcx + dsMatchStart]
|
||||||
|
#define Lookahead [ rcx + dsLookahead] //; 0ffffffffh on infozip
|
||||||
|
#define prev_length [ rcx + dsPrevLen]
|
||||||
|
#define max_chain_length [ rcx + dsMaxChainLen]
|
||||||
|
#define good_match [ rcx + dsGoodMatch]
|
||||||
|
#define nice_match [ rcx + dsNiceMatch]
|
||||||
|
|
||||||
|
/*
|
||||||
|
; windows:
|
||||||
|
; parameter 1 in rcx(deflate state s), param 2 in rdx (cur match)
|
||||||
|
|
||||||
|
; see http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx and
|
||||||
|
; http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp
|
||||||
|
;
|
||||||
|
; All registers must be preserved across the call, except for
|
||||||
|
; rax, rcx, rdx, r8, r9, r10, and r11, which are scratch.
|
||||||
|
|
||||||
|
;
|
||||||
|
; gcc on macosx-linux:
|
||||||
|
; see http://www.x86-64.org/documentation/abi-0.99.pdf
|
||||||
|
; param 1 in rdi, param 2 in rsi
|
||||||
|
; rbx, rsp, rbp, r12 to r15 must be preserved
|
||||||
|
|
||||||
|
;;; Save registers that the compiler may be using, and adjust esp to
|
||||||
|
;;; make room for our stack frame.
|
||||||
|
|
||||||
|
|
||||||
|
;;; Retrieve the function arguments. r8d will hold cur_match
|
||||||
|
;;; throughout the entire function. edx will hold the pointer to the
|
||||||
|
;;; deflate_state structure during the function's setup (before
|
||||||
|
;;; entering the main loop.
|
||||||
|
|
||||||
|
; ms: parameter 1 in rcx (deflate_state* s), param 2 in edx -> r8 (cur match)
|
||||||
|
; mac: param 1 in rdi, param 2 rsi
|
||||||
|
; this clear high 32 bits of r8, which can be garbage in both r8 and rdx
|
||||||
|
*/
|
||||||
|
mov [save_rbx],rbx
|
||||||
|
mov [save_rbp],rbp
|
||||||
|
|
||||||
|
|
||||||
|
mov rcx,rdi
|
||||||
|
|
||||||
|
mov r8d,esi
|
||||||
|
|
||||||
|
|
||||||
|
mov [save_r12],r12
|
||||||
|
mov [save_r13],r13
|
||||||
|
mov [save_r14],r14
|
||||||
|
mov [save_r15],r15
|
||||||
|
|
||||||
|
|
||||||
|
//;;; uInt wmask = s->w_mask;
|
||||||
|
//;;; unsigned chain_length = s->max_chain_length;
|
||||||
|
//;;; if (s->prev_length >= s->good_match) {
|
||||||
|
//;;; chain_length >>= 2;
|
||||||
|
//;;; }
|
||||||
|
|
||||||
|
|
||||||
|
mov edi, prev_length
|
||||||
|
mov esi, good_match
|
||||||
|
mov eax, WMask
|
||||||
|
mov ebx, max_chain_length
|
||||||
|
cmp edi, esi
|
||||||
|
jl LastMatchGood
|
||||||
|
shr ebx, 2
|
||||||
|
LastMatchGood:
|
||||||
|
|
||||||
|
//;;; chainlen is decremented once beforehand so that the function can
|
||||||
|
//;;; use the sign flag instead of the zero flag for the exit test.
|
||||||
|
//;;; It is then shifted into the high word, to make room for the wmask
|
||||||
|
//;;; value, which it will always accompany.
|
||||||
|
|
||||||
|
dec ebx
|
||||||
|
shl ebx, 16
|
||||||
|
or ebx, eax
|
||||||
|
|
||||||
|
//;;; on zlib only
|
||||||
|
//;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mov eax, nice_match
|
||||||
|
mov [chainlenwmask], ebx
|
||||||
|
mov r10d, Lookahead
|
||||||
|
cmp r10d, eax
|
||||||
|
cmovnl r10d, eax
|
||||||
|
mov [nicematch],r10d
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//;;; register Bytef *scan = s->window + s->strstart;
|
||||||
|
mov r10, window_ad
|
||||||
|
mov ebp, strstart
|
||||||
|
lea r13, [r10 + rbp]
|
||||||
|
|
||||||
|
//;;; Determine how many bytes the scan ptr is off from being
|
||||||
|
//;;; dword-aligned.
|
||||||
|
|
||||||
|
mov r9,r13
|
||||||
|
neg r13
|
||||||
|
and r13,3
|
||||||
|
|
||||||
|
//;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
|
||||||
|
//;;; s->strstart - (IPos)MAX_DIST(s) : NIL;
|
||||||
|
|
||||||
|
|
||||||
|
mov eax, window_size
|
||||||
|
sub eax, MIN_LOOKAHEAD
|
||||||
|
|
||||||
|
|
||||||
|
xor edi,edi
|
||||||
|
sub ebp, eax
|
||||||
|
|
||||||
|
mov r11d, prev_length
|
||||||
|
|
||||||
|
cmovng ebp,edi
|
||||||
|
|
||||||
|
//;;; int best_len = s->prev_length;
|
||||||
|
|
||||||
|
|
||||||
|
//;;; Store the sum of s->window + best_len in esi locally, and in esi.
|
||||||
|
|
||||||
|
lea rsi,[r10+r11]
|
||||||
|
|
||||||
|
//;;; register ush scan_start = *(ushf*)scan;
|
||||||
|
//;;; register ush scan_end = *(ushf*)(scan+best_len-1);
|
||||||
|
//;;; Posf *prev = s->prev;
|
||||||
|
|
||||||
|
movzx r12d,word ptr [r9]
|
||||||
|
movzx ebx, word ptr [r9 + r11 - 1]
|
||||||
|
|
||||||
|
mov rdi, prev_ad
|
||||||
|
|
||||||
|
//;;; Jump into the main loop.
|
||||||
|
|
||||||
|
mov edx, [chainlenwmask]
|
||||||
|
|
||||||
|
cmp bx,word ptr [rsi + r8 - 1]
|
||||||
|
jz LookupLoopIsZero
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
LookupLoop1:
|
||||||
|
and r8d, edx
|
||||||
|
|
||||||
|
movzx r8d, word ptr [rdi + r8*2]
|
||||||
|
cmp r8d, ebp
|
||||||
|
jbe LeaveNow
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
sub edx, 0x00010000
|
||||||
|
BEFORE_JMP
|
||||||
|
js LeaveNow
|
||||||
|
AFTER_JMP
|
||||||
|
|
||||||
|
LoopEntry1:
|
||||||
|
cmp bx,word ptr [rsi + r8 - 1]
|
||||||
|
BEFORE_JMP
|
||||||
|
jz LookupLoopIsZero
|
||||||
|
AFTER_JMP
|
||||||
|
|
||||||
|
LookupLoop2:
|
||||||
|
and r8d, edx
|
||||||
|
|
||||||
|
movzx r8d, word ptr [rdi + r8*2]
|
||||||
|
cmp r8d, ebp
|
||||||
|
BEFORE_JMP
|
||||||
|
jbe LeaveNow
|
||||||
|
AFTER_JMP
|
||||||
|
sub edx, 0x00010000
|
||||||
|
BEFORE_JMP
|
||||||
|
js LeaveNow
|
||||||
|
AFTER_JMP
|
||||||
|
|
||||||
|
LoopEntry2:
|
||||||
|
cmp bx,word ptr [rsi + r8 - 1]
|
||||||
|
BEFORE_JMP
|
||||||
|
jz LookupLoopIsZero
|
||||||
|
AFTER_JMP
|
||||||
|
|
||||||
|
LookupLoop4:
|
||||||
|
and r8d, edx
|
||||||
|
|
||||||
|
movzx r8d, word ptr [rdi + r8*2]
|
||||||
|
cmp r8d, ebp
|
||||||
|
BEFORE_JMP
|
||||||
|
jbe LeaveNow
|
||||||
|
AFTER_JMP
|
||||||
|
sub edx, 0x00010000
|
||||||
|
BEFORE_JMP
|
||||||
|
js LeaveNow
|
||||||
|
AFTER_JMP
|
||||||
|
|
||||||
|
LoopEntry4:
|
||||||
|
|
||||||
|
cmp bx,word ptr [rsi + r8 - 1]
|
||||||
|
BEFORE_JMP
|
||||||
|
jnz LookupLoop1
|
||||||
|
jmp LookupLoopIsZero
|
||||||
|
AFTER_JMP
|
||||||
|
/*
|
||||||
|
;;; do {
|
||||||
|
;;; match = s->window + cur_match;
|
||||||
|
;;; if (*(ushf*)(match+best_len-1) != scan_end ||
|
||||||
|
;;; *(ushf*)match != scan_start) continue;
|
||||||
|
;;; [...]
|
||||||
|
;;; } while ((cur_match = prev[cur_match & wmask]) > limit
|
||||||
|
;;; && --chain_length != 0);
|
||||||
|
;;;
|
||||||
|
;;; Here is the inner loop of the function. The function will spend the
|
||||||
|
;;; majority of its time in this loop, and majority of that time will
|
||||||
|
;;; be spent in the first ten instructions.
|
||||||
|
;;;
|
||||||
|
;;; Within this loop:
|
||||||
|
;;; ebx = scanend
|
||||||
|
;;; r8d = curmatch
|
||||||
|
;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask)
|
||||||
|
;;; esi = windowbestlen - i.e., (window + bestlen)
|
||||||
|
;;; edi = prev
|
||||||
|
;;; ebp = limit
|
||||||
|
*/
|
||||||
|
.balign 16
|
||||||
|
LookupLoop:
|
||||||
|
and r8d, edx
|
||||||
|
|
||||||
|
movzx r8d, word ptr [rdi + r8*2]
|
||||||
|
cmp r8d, ebp
|
||||||
|
BEFORE_JMP
|
||||||
|
jbe LeaveNow
|
||||||
|
AFTER_JMP
|
||||||
|
sub edx, 0x00010000
|
||||||
|
BEFORE_JMP
|
||||||
|
js LeaveNow
|
||||||
|
AFTER_JMP
|
||||||
|
|
||||||
|
LoopEntry:
|
||||||
|
|
||||||
|
cmp bx,word ptr [rsi + r8 - 1]
|
||||||
|
BEFORE_JMP
|
||||||
|
jnz LookupLoop1
|
||||||
|
AFTER_JMP
|
||||||
|
LookupLoopIsZero:
|
||||||
|
cmp r12w, word ptr [r10 + r8]
|
||||||
|
BEFORE_JMP
|
||||||
|
jnz LookupLoop1
|
||||||
|
AFTER_JMP
|
||||||
|
|
||||||
|
|
||||||
|
//;;; Store the current value of chainlen.
|
||||||
|
mov [chainlenwmask], edx
|
||||||
|
/*
|
||||||
|
;;; Point edi to the string under scrutiny, and esi to the string we
|
||||||
|
;;; are hoping to match it up with. In actuality, esi and edi are
|
||||||
|
;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is
|
||||||
|
;;; initialized to -(MAX_MATCH_8 - scanalign).
|
||||||
|
*/
|
||||||
|
lea rsi,[r8+r10]
|
||||||
|
mov rdx, 0xfffffffffffffef8 //; -(MAX_MATCH_8)
|
||||||
|
lea rsi, [rsi + r13 + 0x0108] //;MAX_MATCH_8]
|
||||||
|
lea rdi, [r9 + r13 + 0x0108] //;MAX_MATCH_8]
|
||||||
|
|
||||||
|
prefetcht1 [rsi+rdx]
|
||||||
|
prefetcht1 [rdi+rdx]
|
||||||
|
|
||||||
|
/*
|
||||||
|
;;; Test the strings for equality, 8 bytes at a time. At the end,
|
||||||
|
;;; adjust rdx so that it is offset to the exact byte that mismatched.
|
||||||
|
;;;
|
||||||
|
;;; We already know at this point that the first three bytes of the
|
||||||
|
;;; strings match each other, and they can be safely passed over before
|
||||||
|
;;; starting the compare loop. So what this code does is skip over 0-3
|
||||||
|
;;; bytes, as much as necessary in order to dword-align the edi
|
||||||
|
;;; pointer. (rsi will still be misaligned three times out of four.)
|
||||||
|
;;;
|
||||||
|
;;; It should be confessed that this loop usually does not represent
|
||||||
|
;;; much of the total running time. Replacing it with a more
|
||||||
|
;;; straightforward "rep cmpsb" would not drastically degrade
|
||||||
|
;;; performance.
|
||||||
|
*/
|
||||||
|
|
||||||
|
LoopCmps:
|
||||||
|
mov rax, [rsi + rdx]
|
||||||
|
xor rax, [rdi + rdx]
|
||||||
|
jnz LeaveLoopCmps
|
||||||
|
|
||||||
|
mov rax, [rsi + rdx + 8]
|
||||||
|
xor rax, [rdi + rdx + 8]
|
||||||
|
jnz LeaveLoopCmps8
|
||||||
|
|
||||||
|
|
||||||
|
mov rax, [rsi + rdx + 8+8]
|
||||||
|
xor rax, [rdi + rdx + 8+8]
|
||||||
|
jnz LeaveLoopCmps16
|
||||||
|
|
||||||
|
add rdx,8+8+8
|
||||||
|
|
||||||
|
BEFORE_JMP
|
||||||
|
jnz LoopCmps
|
||||||
|
jmp LenMaximum
|
||||||
|
AFTER_JMP
|
||||||
|
|
||||||
|
LeaveLoopCmps16: add rdx,8
|
||||||
|
LeaveLoopCmps8: add rdx,8
|
||||||
|
LeaveLoopCmps:
|
||||||
|
|
||||||
|
test eax, 0x0000FFFF
|
||||||
|
jnz LenLower
|
||||||
|
|
||||||
|
test eax,0xffffffff
|
||||||
|
|
||||||
|
jnz LenLower32
|
||||||
|
|
||||||
|
add rdx,4
|
||||||
|
shr rax,32
|
||||||
|
or ax,ax
|
||||||
|
BEFORE_JMP
|
||||||
|
jnz LenLower
|
||||||
|
AFTER_JMP
|
||||||
|
|
||||||
|
LenLower32:
|
||||||
|
shr eax,16
|
||||||
|
add rdx,2
|
||||||
|
|
||||||
|
LenLower:
|
||||||
|
sub al, 1
|
||||||
|
adc rdx, 0
|
||||||
|
//;;; Calculate the length of the match. If it is longer than MAX_MATCH,
|
||||||
|
//;;; then automatically accept it as the best possible match and leave.
|
||||||
|
|
||||||
|
lea rax, [rdi + rdx]
|
||||||
|
sub rax, r9
|
||||||
|
cmp eax, MAX_MATCH
|
||||||
|
BEFORE_JMP
|
||||||
|
jge LenMaximum
|
||||||
|
AFTER_JMP
|
||||||
|
/*
|
||||||
|
;;; If the length of the match is not longer than the best match we
|
||||||
|
;;; have so far, then forget it and return to the lookup loop.
|
||||||
|
;///////////////////////////////////
|
||||||
|
*/
|
||||||
|
cmp eax, r11d
|
||||||
|
jg LongerMatch
|
||||||
|
|
||||||
|
lea rsi,[r10+r11]
|
||||||
|
|
||||||
|
mov rdi, prev_ad
|
||||||
|
mov edx, [chainlenwmask]
|
||||||
|
BEFORE_JMP
|
||||||
|
jmp LookupLoop
|
||||||
|
AFTER_JMP
|
||||||
|
/*
|
||||||
|
;;; s->match_start = cur_match;
|
||||||
|
;;; best_len = len;
|
||||||
|
;;; if (len >= nice_match) break;
|
||||||
|
;;; scan_end = *(ushf*)(scan+best_len-1);
|
||||||
|
*/
|
||||||
|
LongerMatch:
|
||||||
|
mov r11d, eax
|
||||||
|
mov match_start, r8d
|
||||||
|
cmp eax, [nicematch]
|
||||||
|
BEFORE_JMP
|
||||||
|
jge LeaveNow
|
||||||
|
AFTER_JMP
|
||||||
|
|
||||||
|
lea rsi,[r10+rax]
|
||||||
|
|
||||||
|
movzx ebx, word ptr [r9 + rax - 1]
|
||||||
|
mov rdi, prev_ad
|
||||||
|
mov edx, [chainlenwmask]
|
||||||
|
BEFORE_JMP
|
||||||
|
jmp LookupLoop
|
||||||
|
AFTER_JMP
|
||||||
|
|
||||||
|
//;;; Accept the current string, with the maximum possible length.
|
||||||
|
|
||||||
|
LenMaximum:
|
||||||
|
mov r11d,MAX_MATCH
|
||||||
|
mov match_start, r8d
|
||||||
|
|
||||||
|
//;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
|
||||||
|
//;;; return s->lookahead;
|
||||||
|
|
||||||
|
LeaveNow:
|
||||||
|
mov eax, Lookahead
|
||||||
|
cmp r11d, eax
|
||||||
|
cmovng eax, r11d
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//;;; Restore the stack and return from whence we came.
|
||||||
|
|
||||||
|
|
||||||
|
// mov rsi,[save_rsi]
|
||||||
|
// mov rdi,[save_rdi]
|
||||||
|
mov rbx,[save_rbx]
|
||||||
|
mov rbp,[save_rbp]
|
||||||
|
mov r12,[save_r12]
|
||||||
|
mov r13,[save_r13]
|
||||||
|
mov r14,[save_r14]
|
||||||
|
mov r15,[save_r15]
|
||||||
|
|
||||||
|
|
||||||
|
ret 0
|
||||||
|
//; please don't remove this string !
|
||||||
|
//; Your can freely use gvmat64 in any free or commercial app
|
||||||
|
//; but it is far better don't remove the string in the binary!
|
||||||
|
// db 0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998, converted to amd 64 by Gilles Vollant 2005",0dh,0ah,0
|
||||||
|
|
||||||
|
|
||||||
|
match_init:
|
||||||
|
ret 0
|
||||||
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
|||||||
#define MAXBITS 15
|
#define MAXBITS 15
|
||||||
|
|
||||||
const char inflate9_copyright[] =
|
const char inflate9_copyright[] =
|
||||||
" inflate9 1.2.3.9 Copyright 1995-2010 Mark Adler ";
|
" inflate9 1.2.4 Copyright 1995-2010 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, 193, 201};
|
133, 133, 133, 133, 144, 66, 199};
|
||||||
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,
|
||||||
|
@ -1,413 +0,0 @@
|
|||||||
|
|
||||||
; match.asm -- Pentium-Pro optimized version of longest_match()
|
|
||||||
;
|
|
||||||
; Updated for zlib 1.1.3 and converted to MASM 6.1x
|
|
||||||
; Copyright (C) 2000 Dan Higdon <hdan@kinesoft.com>
|
|
||||||
; and Chuck Walbourn <chuckw@kinesoft.com>
|
|
||||||
; Corrections by Cosmin Truta <cosmint@cs.ubbcluj.ro>
|
|
||||||
;
|
|
||||||
; This is free software; you can redistribute it and/or modify it
|
|
||||||
; under the terms of the GNU General Public License.
|
|
||||||
|
|
||||||
; Based on match.S
|
|
||||||
; Written for zlib 1.1.2
|
|
||||||
; Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com>
|
|
||||||
;
|
|
||||||
; Modified by Gilles Vollant (2005) for add gzhead and gzindex
|
|
||||||
|
|
||||||
.686P
|
|
||||||
.MODEL FLAT
|
|
||||||
|
|
||||||
;===========================================================================
|
|
||||||
; EQUATES
|
|
||||||
;===========================================================================
|
|
||||||
|
|
||||||
MAX_MATCH EQU 258
|
|
||||||
MIN_MATCH EQU 3
|
|
||||||
MIN_LOOKAHEAD EQU (MAX_MATCH + MIN_MATCH + 1)
|
|
||||||
MAX_MATCH_8 EQU ((MAX_MATCH + 7) AND (NOT 7))
|
|
||||||
|
|
||||||
;===========================================================================
|
|
||||||
; STRUCTURES
|
|
||||||
;===========================================================================
|
|
||||||
|
|
||||||
; This STRUCT assumes a 4-byte alignment
|
|
||||||
|
|
||||||
DEFLATE_STATE STRUCT
|
|
||||||
ds_strm dd ?
|
|
||||||
ds_status dd ?
|
|
||||||
ds_pending_buf dd ?
|
|
||||||
ds_pending_buf_size dd ?
|
|
||||||
ds_pending_out dd ?
|
|
||||||
ds_pending dd ?
|
|
||||||
ds_wrap dd ?
|
|
||||||
; gzhead and gzindex are added in zlib 1.2.2.2 (see deflate.h)
|
|
||||||
ds_gzhead dd ?
|
|
||||||
ds_gzindex dd ?
|
|
||||||
ds_data_type db ?
|
|
||||||
ds_method db ?
|
|
||||||
db ? ; padding
|
|
||||||
db ? ; padding
|
|
||||||
ds_last_flush dd ?
|
|
||||||
ds_w_size dd ? ; used
|
|
||||||
ds_w_bits dd ?
|
|
||||||
ds_w_mask dd ? ; used
|
|
||||||
ds_window dd ? ; used
|
|
||||||
ds_window_size dd ?
|
|
||||||
ds_prev dd ? ; used
|
|
||||||
ds_head dd ?
|
|
||||||
ds_ins_h dd ?
|
|
||||||
ds_hash_size dd ?
|
|
||||||
ds_hash_bits dd ?
|
|
||||||
ds_hash_mask dd ?
|
|
||||||
ds_hash_shift dd ?
|
|
||||||
ds_block_start dd ?
|
|
||||||
ds_match_length dd ? ; used
|
|
||||||
ds_prev_match dd ? ; used
|
|
||||||
ds_match_available dd ?
|
|
||||||
ds_strstart dd ? ; used
|
|
||||||
ds_match_start dd ? ; used
|
|
||||||
ds_lookahead dd ? ; used
|
|
||||||
ds_prev_length dd ? ; used
|
|
||||||
ds_max_chain_length dd ? ; used
|
|
||||||
ds_max_laxy_match dd ?
|
|
||||||
ds_level dd ?
|
|
||||||
ds_strategy dd ?
|
|
||||||
ds_good_match dd ? ; used
|
|
||||||
ds_nice_match dd ? ; used
|
|
||||||
|
|
||||||
; Don't need anymore of the struct for match
|
|
||||||
DEFLATE_STATE ENDS
|
|
||||||
|
|
||||||
;===========================================================================
|
|
||||||
; CODE
|
|
||||||
;===========================================================================
|
|
||||||
_TEXT SEGMENT
|
|
||||||
|
|
||||||
;---------------------------------------------------------------------------
|
|
||||||
; match_init
|
|
||||||
;---------------------------------------------------------------------------
|
|
||||||
ALIGN 4
|
|
||||||
PUBLIC _match_init
|
|
||||||
_match_init PROC
|
|
||||||
; no initialization needed
|
|
||||||
ret
|
|
||||||
_match_init ENDP
|
|
||||||
|
|
||||||
;---------------------------------------------------------------------------
|
|
||||||
; uInt longest_match(deflate_state *deflatestate, IPos curmatch)
|
|
||||||
;---------------------------------------------------------------------------
|
|
||||||
ALIGN 4
|
|
||||||
|
|
||||||
PUBLIC _longest_match
|
|
||||||
_longest_match PROC
|
|
||||||
|
|
||||||
; Since this code uses EBP for a scratch register, the stack frame must
|
|
||||||
; be manually constructed and referenced relative to the ESP register.
|
|
||||||
|
|
||||||
; Stack image
|
|
||||||
; Variables
|
|
||||||
chainlenwmask = 0 ; high word: current chain len
|
|
||||||
; low word: s->wmask
|
|
||||||
window = 4 ; local copy of s->window
|
|
||||||
windowbestlen = 8 ; s->window + bestlen
|
|
||||||
scanend = 12 ; last two bytes of string
|
|
||||||
scanstart = 16 ; first two bytes of string
|
|
||||||
scanalign = 20 ; dword-misalignment of string
|
|
||||||
nicematch = 24 ; a good enough match size
|
|
||||||
bestlen = 28 ; size of best match so far
|
|
||||||
scan = 32 ; ptr to string wanting match
|
|
||||||
varsize = 36 ; number of bytes (also offset to last saved register)
|
|
||||||
|
|
||||||
; Saved Registers (actually pushed into place)
|
|
||||||
ebx_save = 36
|
|
||||||
edi_save = 40
|
|
||||||
esi_save = 44
|
|
||||||
ebp_save = 48
|
|
||||||
|
|
||||||
; Parameters
|
|
||||||
retaddr = 52
|
|
||||||
deflatestate = 56
|
|
||||||
curmatch = 60
|
|
||||||
|
|
||||||
; Save registers that the compiler may be using
|
|
||||||
push ebp
|
|
||||||
push edi
|
|
||||||
push esi
|
|
||||||
push ebx
|
|
||||||
|
|
||||||
; Allocate local variable space
|
|
||||||
sub esp,varsize
|
|
||||||
|
|
||||||
; Retrieve the function arguments. ecx will hold cur_match
|
|
||||||
; throughout the entire function. edx will hold the pointer to the
|
|
||||||
; deflate_state structure during the function's setup (before
|
|
||||||
; entering the main loop).
|
|
||||||
|
|
||||||
mov edx, [esp+deflatestate]
|
|
||||||
ASSUME edx:PTR DEFLATE_STATE
|
|
||||||
|
|
||||||
mov ecx, [esp+curmatch]
|
|
||||||
|
|
||||||
; uInt wmask = s->w_mask;
|
|
||||||
; unsigned chain_length = s->max_chain_length;
|
|
||||||
; if (s->prev_length >= s->good_match) {
|
|
||||||
; chain_length >>= 2;
|
|
||||||
; }
|
|
||||||
|
|
||||||
mov eax, [edx].ds_prev_length
|
|
||||||
mov ebx, [edx].ds_good_match
|
|
||||||
cmp eax, ebx
|
|
||||||
mov eax, [edx].ds_w_mask
|
|
||||||
mov ebx, [edx].ds_max_chain_length
|
|
||||||
jl SHORT LastMatchGood
|
|
||||||
shr ebx, 2
|
|
||||||
LastMatchGood:
|
|
||||||
|
|
||||||
; chainlen is decremented once beforehand so that the function can
|
|
||||||
; use the sign flag instead of the zero flag for the exit test.
|
|
||||||
; It is then shifted into the high word, to make room for the wmask
|
|
||||||
; value, which it will always accompany.
|
|
||||||
|
|
||||||
dec ebx
|
|
||||||
shl ebx, 16
|
|
||||||
or ebx, eax
|
|
||||||
mov [esp+chainlenwmask], ebx
|
|
||||||
|
|
||||||
; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
|
|
||||||
|
|
||||||
mov eax, [edx].ds_nice_match
|
|
||||||
mov ebx, [edx].ds_lookahead
|
|
||||||
cmp ebx, eax
|
|
||||||
jl SHORT LookaheadLess
|
|
||||||
mov ebx, eax
|
|
||||||
LookaheadLess:
|
|
||||||
mov [esp+nicematch], ebx
|
|
||||||
|
|
||||||
;/* register Bytef *scan = s->window + s->strstart; */
|
|
||||||
|
|
||||||
mov esi, [edx].ds_window
|
|
||||||
mov [esp+window], esi
|
|
||||||
mov ebp, [edx].ds_strstart
|
|
||||||
lea edi, [esi+ebp]
|
|
||||||
mov [esp+scan],edi
|
|
||||||
|
|
||||||
;/* Determine how many bytes the scan ptr is off from being */
|
|
||||||
;/* dword-aligned. */
|
|
||||||
|
|
||||||
mov eax, edi
|
|
||||||
neg eax
|
|
||||||
and eax, 3
|
|
||||||
mov [esp+scanalign], eax
|
|
||||||
|
|
||||||
;/* IPos limit = s->strstart > (IPos)MAX_DIST(s) ? */
|
|
||||||
;/* s->strstart - (IPos)MAX_DIST(s) : NIL; */
|
|
||||||
|
|
||||||
mov eax, [edx].ds_w_size
|
|
||||||
sub eax, MIN_LOOKAHEAD
|
|
||||||
sub ebp, eax
|
|
||||||
jg SHORT LimitPositive
|
|
||||||
xor ebp, ebp
|
|
||||||
LimitPositive:
|
|
||||||
|
|
||||||
;/* int best_len = s->prev_length; */
|
|
||||||
|
|
||||||
mov eax, [edx].ds_prev_length
|
|
||||||
mov [esp+bestlen], eax
|
|
||||||
|
|
||||||
;/* Store the sum of s->window + best_len in %esi locally, and in %esi. */
|
|
||||||
|
|
||||||
add esi, eax
|
|
||||||
mov [esp+windowbestlen], esi
|
|
||||||
|
|
||||||
;/* register ush scan_start = *(ushf*)scan; */
|
|
||||||
;/* register ush scan_end = *(ushf*)(scan+best_len-1); */
|
|
||||||
;/* Posf *prev = s->prev; */
|
|
||||||
|
|
||||||
movzx ebx, WORD PTR[edi]
|
|
||||||
mov [esp+scanstart], ebx
|
|
||||||
movzx ebx, WORD PTR[eax+edi-1]
|
|
||||||
mov [esp+scanend], ebx
|
|
||||||
mov edi, [edx].ds_prev
|
|
||||||
|
|
||||||
;/* Jump into the main loop. */
|
|
||||||
|
|
||||||
mov edx, [esp+chainlenwmask]
|
|
||||||
jmp SHORT LoopEntry
|
|
||||||
|
|
||||||
;/* do {
|
|
||||||
; * match = s->window + cur_match;
|
|
||||||
; * if (*(ushf*)(match+best_len-1) != scan_end ||
|
|
||||||
; * *(ushf*)match != scan_start) continue;
|
|
||||||
; * [...]
|
|
||||||
; * } while ((cur_match = prev[cur_match & wmask]) > limit
|
|
||||||
; * && --chain_length != 0);
|
|
||||||
; *
|
|
||||||
; * Here is the inner loop of the function. The function will spend the
|
|
||||||
; * majority of its time in this loop, and majority of that time will
|
|
||||||
; * be spent in the first ten instructions.
|
|
||||||
; *
|
|
||||||
; * Within this loop:
|
|
||||||
; * %ebx = scanend
|
|
||||||
; * %ecx = curmatch
|
|
||||||
; * %edx = chainlenwmask - i.e., ((chainlen << 16) | wmask)
|
|
||||||
; * %esi = windowbestlen - i.e., (window + bestlen)
|
|
||||||
; * %edi = prev
|
|
||||||
; * %ebp = limit
|
|
||||||
; */
|
|
||||||
|
|
||||||
ALIGN 4
|
|
||||||
LookupLoop:
|
|
||||||
and ecx, edx
|
|
||||||
movzx ecx, WORD PTR[edi+ecx*2]
|
|
||||||
cmp ecx, ebp
|
|
||||||
jbe LeaveNow
|
|
||||||
sub edx, 000010000H
|
|
||||||
js LeaveNow
|
|
||||||
|
|
||||||
LoopEntry:
|
|
||||||
movzx eax, WORD PTR[esi+ecx-1]
|
|
||||||
cmp eax, ebx
|
|
||||||
jnz SHORT LookupLoop
|
|
||||||
|
|
||||||
mov eax, [esp+window]
|
|
||||||
movzx eax, WORD PTR[eax+ecx]
|
|
||||||
cmp eax, [esp+scanstart]
|
|
||||||
jnz SHORT LookupLoop
|
|
||||||
|
|
||||||
;/* Store the current value of chainlen. */
|
|
||||||
|
|
||||||
mov [esp+chainlenwmask], edx
|
|
||||||
|
|
||||||
;/* Point %edi to the string under scrutiny, and %esi to the string we */
|
|
||||||
;/* are hoping to match it up with. In actuality, %esi and %edi are */
|
|
||||||
;/* both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and %edx is */
|
|
||||||
;/* initialized to -(MAX_MATCH_8 - scanalign). */
|
|
||||||
|
|
||||||
mov esi, [esp+window]
|
|
||||||
mov edi, [esp+scan]
|
|
||||||
add esi, ecx
|
|
||||||
mov eax, [esp+scanalign]
|
|
||||||
mov edx, -MAX_MATCH_8
|
|
||||||
lea edi, [edi+eax+MAX_MATCH_8]
|
|
||||||
lea esi, [esi+eax+MAX_MATCH_8]
|
|
||||||
|
|
||||||
;/* Test the strings for equality, 8 bytes at a time. At the end,
|
|
||||||
; * adjust %edx so that it is offset to the exact byte that mismatched.
|
|
||||||
; *
|
|
||||||
; * We already know at this point that the first three bytes of the
|
|
||||||
; * strings match each other, and they can be safely passed over before
|
|
||||||
; * starting the compare loop. So what this code does is skip over 0-3
|
|
||||||
; * bytes, as much as necessary in order to dword-align the %edi
|
|
||||||
; * pointer. (%esi will still be misaligned three times out of four.)
|
|
||||||
; *
|
|
||||||
; * It should be confessed that this loop usually does not represent
|
|
||||||
; * much of the total running time. Replacing it with a more
|
|
||||||
; * straightforward "rep cmpsb" would not drastically degrade
|
|
||||||
; * performance.
|
|
||||||
; */
|
|
||||||
|
|
||||||
LoopCmps:
|
|
||||||
mov eax, DWORD PTR[esi+edx]
|
|
||||||
xor eax, DWORD PTR[edi+edx]
|
|
||||||
jnz SHORT LeaveLoopCmps
|
|
||||||
|
|
||||||
mov eax, DWORD PTR[esi+edx+4]
|
|
||||||
xor eax, DWORD PTR[edi+edx+4]
|
|
||||||
jnz SHORT LeaveLoopCmps4
|
|
||||||
|
|
||||||
add edx, 8
|
|
||||||
jnz SHORT LoopCmps
|
|
||||||
jmp LenMaximum
|
|
||||||
ALIGN 4
|
|
||||||
|
|
||||||
LeaveLoopCmps4:
|
|
||||||
add edx, 4
|
|
||||||
|
|
||||||
LeaveLoopCmps:
|
|
||||||
test eax, 00000FFFFH
|
|
||||||
jnz SHORT LenLower
|
|
||||||
|
|
||||||
add edx, 2
|
|
||||||
shr eax, 16
|
|
||||||
|
|
||||||
LenLower:
|
|
||||||
sub al, 1
|
|
||||||
adc edx, 0
|
|
||||||
|
|
||||||
;/* Calculate the length of the match. If it is longer than MAX_MATCH, */
|
|
||||||
;/* then automatically accept it as the best possible match and leave. */
|
|
||||||
|
|
||||||
lea eax, [edi+edx]
|
|
||||||
mov edi, [esp+scan]
|
|
||||||
sub eax, edi
|
|
||||||
cmp eax, MAX_MATCH
|
|
||||||
jge SHORT LenMaximum
|
|
||||||
|
|
||||||
;/* If the length of the match is not longer than the best match we */
|
|
||||||
;/* have so far, then forget it and return to the lookup loop. */
|
|
||||||
|
|
||||||
mov edx, [esp+deflatestate]
|
|
||||||
mov ebx, [esp+bestlen]
|
|
||||||
cmp eax, ebx
|
|
||||||
jg SHORT LongerMatch
|
|
||||||
mov esi, [esp+windowbestlen]
|
|
||||||
mov edi, [edx].ds_prev
|
|
||||||
mov ebx, [esp+scanend]
|
|
||||||
mov edx, [esp+chainlenwmask]
|
|
||||||
jmp LookupLoop
|
|
||||||
ALIGN 4
|
|
||||||
|
|
||||||
;/* s->match_start = cur_match; */
|
|
||||||
;/* best_len = len; */
|
|
||||||
;/* if (len >= nice_match) break; */
|
|
||||||
;/* scan_end = *(ushf*)(scan+best_len-1); */
|
|
||||||
|
|
||||||
LongerMatch:
|
|
||||||
mov ebx, [esp+nicematch]
|
|
||||||
mov [esp+bestlen], eax
|
|
||||||
mov [edx].ds_match_start, ecx
|
|
||||||
cmp eax, ebx
|
|
||||||
jge SHORT LeaveNow
|
|
||||||
mov esi, [esp+window]
|
|
||||||
add esi, eax
|
|
||||||
mov [esp+windowbestlen], esi
|
|
||||||
movzx ebx, WORD PTR[edi+eax-1]
|
|
||||||
mov edi, [edx].ds_prev
|
|
||||||
mov [esp+scanend], ebx
|
|
||||||
mov edx, [esp+chainlenwmask]
|
|
||||||
jmp LookupLoop
|
|
||||||
ALIGN 4
|
|
||||||
|
|
||||||
;/* Accept the current string, with the maximum possible length. */
|
|
||||||
|
|
||||||
LenMaximum:
|
|
||||||
mov edx, [esp+deflatestate]
|
|
||||||
mov DWORD PTR[esp+bestlen], MAX_MATCH
|
|
||||||
mov [edx].ds_match_start, ecx
|
|
||||||
|
|
||||||
;/* if ((uInt)best_len <= s->lookahead) return (uInt)best_len; */
|
|
||||||
;/* return s->lookahead; */
|
|
||||||
|
|
||||||
LeaveNow:
|
|
||||||
mov edx, [esp+deflatestate]
|
|
||||||
mov ebx, [esp+bestlen]
|
|
||||||
mov eax, [edx].ds_lookahead
|
|
||||||
cmp ebx, eax
|
|
||||||
jg SHORT LookaheadRet
|
|
||||||
mov eax, ebx
|
|
||||||
LookaheadRet:
|
|
||||||
|
|
||||||
; Restore the stack and return from whence we came.
|
|
||||||
|
|
||||||
add esp, varsize
|
|
||||||
pop ebx
|
|
||||||
pop esi
|
|
||||||
pop edi
|
|
||||||
pop ebp
|
|
||||||
ret
|
|
||||||
|
|
||||||
_longest_match ENDP
|
|
||||||
|
|
||||||
_TEXT ENDS
|
|
||||||
END
|
|
@ -2,8 +2,10 @@
|
|||||||
; deflate_state *s,
|
; deflate_state *s,
|
||||||
; IPos cur_match); /* current match */
|
; IPos cur_match); /* current match */
|
||||||
|
|
||||||
; gvmat64.asm -- Asm portion of the optimized longest_match for 32 bits x86
|
; gvmat64.asm -- Asm portion of the optimized longest_match for 32 bits x86_64
|
||||||
; Copyright (C) 1995-2005 Jean-loup Gailly, Brian Raiter and Gilles Vollant.
|
; (AMD64 on Athlon 64, Opteron, Phenom
|
||||||
|
; and Intel EM64T on Pentium 4 with EM64T, Pentium D, Core 2 Duo, Core I5/I7)
|
||||||
|
; Copyright (C) 1995-2010 Jean-loup Gailly, Brian Raiter and Gilles Vollant.
|
||||||
;
|
;
|
||||||
; File written by Gilles Vollant, by converting to assembly the longest_match
|
; File written by Gilles Vollant, by converting to assembly the longest_match
|
||||||
; from Jean-loup Gailly in deflate.c of zLib and infoZip zip.
|
; from Jean-loup Gailly in deflate.c of zLib and infoZip zip.
|
||||||
@ -11,6 +13,24 @@
|
|||||||
; and by taking inspiration on asm686 with masm, optimised assembly code
|
; and by taking inspiration on asm686 with masm, optimised assembly code
|
||||||
; from Brian Raiter, written 1998
|
; from Brian Raiter, written 1998
|
||||||
;
|
;
|
||||||
|
; This software is provided 'as-is', without any express or implied
|
||||||
|
; warranty. In no event will the authors be held liable for any damages
|
||||||
|
; arising from the use of this software.
|
||||||
|
;
|
||||||
|
; Permission is granted to anyone to use this software for any purpose,
|
||||||
|
; including commercial applications, and to alter it and redistribute it
|
||||||
|
; freely, subject to the following restrictions:
|
||||||
|
;
|
||||||
|
; 1. The origin of this software must not be misrepresented; you must not
|
||||||
|
; claim that you wrote the original software. If you use this software
|
||||||
|
; in a product, an acknowledgment in the product documentation would be
|
||||||
|
; appreciated but is not required.
|
||||||
|
; 2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
; misrepresented as being the original software
|
||||||
|
; 3. This notice may not be removed or altered from any source distribution.
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;
|
||||||
; http://www.zlib.net
|
; http://www.zlib.net
|
||||||
; http://www.winimage.com/zLibDll
|
; http://www.winimage.com/zLibDll
|
||||||
; http://www.muppetlabs.com/~breadbox/software/assembly.html
|
; http://www.muppetlabs.com/~breadbox/software/assembly.html
|
||||||
@ -26,10 +46,10 @@
|
|||||||
;
|
;
|
||||||
; This file compile with Microsoft Macro Assembler (x64) for AMD64
|
; This file compile with Microsoft Macro Assembler (x64) for AMD64
|
||||||
;
|
;
|
||||||
; ml64.exe is given with Visual Studio 2005 and Windows 2003 server DDK
|
; ml64.exe is given with Visual Studio 2005/2008/2010 and Windows WDK
|
||||||
;
|
;
|
||||||
; (you can get Windows 2003 server DDK with ml64 and cl for AMD64 from
|
; (you can get Windows WDK with ml64 for AMD64 from
|
||||||
; http://www.microsoft.com/whdc/devtools/ddk/default.mspx for low price)
|
; http://www.microsoft.com/whdc/Devtools/wdk/default.mspx for low price)
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
@ -71,6 +91,25 @@ save_r13 equ rsp + 64 - LocalVarsSize
|
|||||||
;save_r15 equ rsp + 80 - LocalVarsSize
|
;save_r15 equ rsp + 80 - LocalVarsSize
|
||||||
|
|
||||||
|
|
||||||
|
; summary of register usage
|
||||||
|
; scanend ebx
|
||||||
|
; scanendw bx
|
||||||
|
; chainlenwmask edx
|
||||||
|
; curmatch rsi
|
||||||
|
; curmatchd esi
|
||||||
|
; windowbestlen r8
|
||||||
|
; scanalign r9
|
||||||
|
; scanalignd r9d
|
||||||
|
; window r10
|
||||||
|
; bestlen r11
|
||||||
|
; bestlend r11d
|
||||||
|
; scanstart r12d
|
||||||
|
; scanstartw r12w
|
||||||
|
; scan r13
|
||||||
|
; nicematch r14d
|
||||||
|
; limit r15
|
||||||
|
; limitd r15d
|
||||||
|
; prev rcx
|
||||||
|
|
||||||
; all the +4 offsets are due to the addition of pending_buf_size (in zlib
|
; all the +4 offsets are due to the addition of pending_buf_size (in zlib
|
||||||
; in the deflate_state structure since the asm code was first written
|
; in the deflate_state structure since the asm code was first written
|
||||||
|
@ -130,7 +130,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
|
|||||||
ar.beg = ar.out - (start - strm->avail_out);
|
ar.beg = ar.out - (start - strm->avail_out);
|
||||||
ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT);
|
ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT);
|
||||||
ar.wsize = state->wsize;
|
ar.wsize = state->wsize;
|
||||||
ar.write = state->write;
|
ar.write = state->wnext;
|
||||||
ar.window = state->window;
|
ar.window = state->window;
|
||||||
ar.hold = state->hold;
|
ar.hold = state->hold;
|
||||||
ar.bits = state->bits;
|
ar.bits = state->bits;
|
||||||
|
@ -9,11 +9,15 @@
|
|||||||
; ml64.exe /Flinffasx64 /c /Zi inffasx64.asm
|
; ml64.exe /Flinffasx64 /c /Zi inffasx64.asm
|
||||||
; with Microsoft Macro Assembler (x64) for AMD64
|
; with Microsoft Macro Assembler (x64) for AMD64
|
||||||
;
|
;
|
||||||
; ml64.exe is given with Visual Studio 2005, Windows 2003 server DDK
|
|
||||||
|
; This file compile with Microsoft Macro Assembler (x64) for AMD64
|
||||||
;
|
;
|
||||||
; (you can get Windows 2003 server DDK with ml64 and cl.exe for AMD64 from
|
; ml64.exe is given with Visual Studio 2005/2008/2010 and Windows WDK
|
||||||
; http://www.microsoft.com/whdc/devtools/ddk/default.mspx for low price)
|
|
||||||
;
|
;
|
||||||
|
; (you can get Windows WDK with ml64 for AMD64 from
|
||||||
|
; http://www.microsoft.com/whdc/Devtools/wdk/default.mspx for low price)
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
.code
|
.code
|
||||||
inffas8664fnc PROC
|
inffas8664fnc PROC
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
ml /coff /Zi /c /Flgvmat32.lst gvmat32.asm
|
ml /coff /Zi /c /Flmatch686.lst match686.asm
|
||||||
ml /coff /Zi /c /Flinffas32.lst inffas32.asm
|
ml /coff /Zi /c /Flinffas32.lst inffas32.asm
|
||||||
|
@ -1,972 +0,0 @@
|
|||||||
; gvmat32.asm -- Asm portion of the optimized longest_match for 32 bits x86
|
|
||||||
; Copyright (C) 1995-1996 Jean-loup Gailly and Gilles Vollant.
|
|
||||||
; File written by Gilles Vollant, by modifiying the longest_match
|
|
||||||
; from Jean-loup Gailly in deflate.c
|
|
||||||
;
|
|
||||||
; http://www.zlib.net
|
|
||||||
; http://www.winimage.com/zLibDll
|
|
||||||
; http://www.muppetlabs.com/~breadbox/software/assembly.html
|
|
||||||
;
|
|
||||||
; For Visual C++ 4.x and higher and ML 6.x and higher
|
|
||||||
; ml.exe is in directory \MASM611C of Win95 DDK
|
|
||||||
; ml.exe is also distributed in http://www.masm32.com/masmdl.htm
|
|
||||||
; and in VC++2003 toolkit at http://msdn.microsoft.com/visualc/vctoolkit2003/
|
|
||||||
;
|
|
||||||
; this file contain two implementation of longest_match
|
|
||||||
;
|
|
||||||
; longest_match_7fff : written 1996 by Gilles Vollant optimized for
|
|
||||||
; first Pentium. Assume s->w_mask == 0x7fff
|
|
||||||
; longest_match_686 : written by Brian raiter (1998), optimized for Pentium Pro
|
|
||||||
;
|
|
||||||
; for using an seembly version of longest_match, you need define ASMV in project
|
|
||||||
; There is two way in using gvmat32.asm
|
|
||||||
;
|
|
||||||
; A) Suggested method
|
|
||||||
; if you want include both longest_match_7fff and longest_match_686
|
|
||||||
; compile the asm file running
|
|
||||||
; ml /coff /Zi /Flgvmat32.lst /c gvmat32.asm
|
|
||||||
; and include gvmat32c.c in your project
|
|
||||||
; if you have an old cpu (386,486 or first Pentium) and s->w_mask==0x7fff,
|
|
||||||
; longest_match_7fff will be used
|
|
||||||
; if you have a more modern CPU (Pentium Pro, II and higher)
|
|
||||||
; longest_match_686 will be used
|
|
||||||
; on old cpu with s->w_mask!=0x7fff, longest_match_686 will be used,
|
|
||||||
; but this is not a sitation you'll find often
|
|
||||||
;
|
|
||||||
; B) Alternative
|
|
||||||
; if you are not interresed in old cpu performance and want the smaller
|
|
||||||
; binaries possible
|
|
||||||
;
|
|
||||||
; compile the asm file running
|
|
||||||
; ml /coff /Zi /c /Flgvmat32.lst /DNOOLDPENTIUMCODE gvmat32.asm
|
|
||||||
; and do not include gvmat32c.c in your project (ou define also
|
|
||||||
; NOOLDPENTIUMCODE)
|
|
||||||
;
|
|
||||||
; note : as I known, longest_match_686 is very faster than longest_match_7fff
|
|
||||||
; on pentium Pro/II/III, faster (but less) in P4, but it seem
|
|
||||||
; longest_match_7fff can be faster (very very litte) on AMD Athlon64/K8
|
|
||||||
;
|
|
||||||
; see below : zlib1222add must be adjuster if you use a zlib version < 1.2.2.2
|
|
||||||
|
|
||||||
;uInt longest_match_7fff(s, cur_match)
|
|
||||||
; deflate_state *s;
|
|
||||||
; IPos cur_match; /* current match */
|
|
||||||
|
|
||||||
NbStack equ 76
|
|
||||||
cur_match equ dword ptr[esp+NbStack-0]
|
|
||||||
str_s equ dword ptr[esp+NbStack-4]
|
|
||||||
; 5 dword on top (ret,ebp,esi,edi,ebx)
|
|
||||||
adrret equ dword ptr[esp+NbStack-8]
|
|
||||||
pushebp equ dword ptr[esp+NbStack-12]
|
|
||||||
pushedi equ dword ptr[esp+NbStack-16]
|
|
||||||
pushesi equ dword ptr[esp+NbStack-20]
|
|
||||||
pushebx equ dword ptr[esp+NbStack-24]
|
|
||||||
|
|
||||||
chain_length equ dword ptr [esp+NbStack-28]
|
|
||||||
limit equ dword ptr [esp+NbStack-32]
|
|
||||||
best_len equ dword ptr [esp+NbStack-36]
|
|
||||||
window equ dword ptr [esp+NbStack-40]
|
|
||||||
prev equ dword ptr [esp+NbStack-44]
|
|
||||||
scan_start equ word ptr [esp+NbStack-48]
|
|
||||||
wmask equ dword ptr [esp+NbStack-52]
|
|
||||||
match_start_ptr equ dword ptr [esp+NbStack-56]
|
|
||||||
nice_match equ dword ptr [esp+NbStack-60]
|
|
||||||
scan equ dword ptr [esp+NbStack-64]
|
|
||||||
|
|
||||||
windowlen equ dword ptr [esp+NbStack-68]
|
|
||||||
match_start equ dword ptr [esp+NbStack-72]
|
|
||||||
strend equ dword ptr [esp+NbStack-76]
|
|
||||||
NbStackAdd equ (NbStack-24)
|
|
||||||
|
|
||||||
.386p
|
|
||||||
|
|
||||||
name gvmatch
|
|
||||||
.MODEL FLAT
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; all the +zlib1222add offsets are due to the addition of fields
|
|
||||||
; in zlib in the deflate_state structure since the asm code was first written
|
|
||||||
; (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)").
|
|
||||||
; (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0").
|
|
||||||
; if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8").
|
|
||||||
|
|
||||||
zlib1222add equ 8
|
|
||||||
|
|
||||||
; Note : these value are good with a 8 bytes boundary pack structure
|
|
||||||
dep_chain_length equ 74h+zlib1222add
|
|
||||||
dep_window equ 30h+zlib1222add
|
|
||||||
dep_strstart equ 64h+zlib1222add
|
|
||||||
dep_prev_length equ 70h+zlib1222add
|
|
||||||
dep_nice_match equ 88h+zlib1222add
|
|
||||||
dep_w_size equ 24h+zlib1222add
|
|
||||||
dep_prev equ 38h+zlib1222add
|
|
||||||
dep_w_mask equ 2ch+zlib1222add
|
|
||||||
dep_good_match equ 84h+zlib1222add
|
|
||||||
dep_match_start equ 68h+zlib1222add
|
|
||||||
dep_lookahead equ 6ch+zlib1222add
|
|
||||||
|
|
||||||
|
|
||||||
_TEXT segment
|
|
||||||
|
|
||||||
IFDEF NOUNDERLINE
|
|
||||||
IFDEF NOOLDPENTIUMCODE
|
|
||||||
public longest_match
|
|
||||||
public match_init
|
|
||||||
ELSE
|
|
||||||
public longest_match_7fff
|
|
||||||
public cpudetect32
|
|
||||||
public longest_match_686
|
|
||||||
ENDIF
|
|
||||||
ELSE
|
|
||||||
IFDEF NOOLDPENTIUMCODE
|
|
||||||
public _longest_match
|
|
||||||
public _match_init
|
|
||||||
ELSE
|
|
||||||
public _longest_match_7fff
|
|
||||||
public _cpudetect32
|
|
||||||
public _longest_match_686
|
|
||||||
ENDIF
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
MAX_MATCH equ 258
|
|
||||||
MIN_MATCH equ 3
|
|
||||||
MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
IFNDEF NOOLDPENTIUMCODE
|
|
||||||
IFDEF NOUNDERLINE
|
|
||||||
longest_match_7fff proc near
|
|
||||||
ELSE
|
|
||||||
_longest_match_7fff proc near
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
mov edx,[esp+4]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
push ebp
|
|
||||||
push edi
|
|
||||||
push esi
|
|
||||||
push ebx
|
|
||||||
|
|
||||||
sub esp,NbStackAdd
|
|
||||||
|
|
||||||
; initialize or check the variables used in match.asm.
|
|
||||||
mov ebp,edx
|
|
||||||
|
|
||||||
; chain_length = s->max_chain_length
|
|
||||||
; if (prev_length>=good_match) chain_length >>= 2
|
|
||||||
mov edx,[ebp+dep_chain_length]
|
|
||||||
mov ebx,[ebp+dep_prev_length]
|
|
||||||
cmp [ebp+dep_good_match],ebx
|
|
||||||
ja noshr
|
|
||||||
shr edx,2
|
|
||||||
noshr:
|
|
||||||
; we increment chain_length because in the asm, the --chain_lenght is in the beginning of the loop
|
|
||||||
inc edx
|
|
||||||
mov edi,[ebp+dep_nice_match]
|
|
||||||
mov chain_length,edx
|
|
||||||
mov eax,[ebp+dep_lookahead]
|
|
||||||
cmp eax,edi
|
|
||||||
; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
|
|
||||||
jae nolookaheadnicematch
|
|
||||||
mov edi,eax
|
|
||||||
nolookaheadnicematch:
|
|
||||||
; best_len = s->prev_length
|
|
||||||
mov best_len,ebx
|
|
||||||
|
|
||||||
; window = s->window
|
|
||||||
mov esi,[ebp+dep_window]
|
|
||||||
mov ecx,[ebp+dep_strstart]
|
|
||||||
mov window,esi
|
|
||||||
|
|
||||||
mov nice_match,edi
|
|
||||||
; scan = window + strstart
|
|
||||||
add esi,ecx
|
|
||||||
mov scan,esi
|
|
||||||
; dx = *window
|
|
||||||
mov dx,word ptr [esi]
|
|
||||||
; bx = *(window+best_len-1)
|
|
||||||
mov bx,word ptr [esi+ebx-1]
|
|
||||||
add esi,MAX_MATCH-1
|
|
||||||
; scan_start = *scan
|
|
||||||
mov scan_start,dx
|
|
||||||
; strend = scan + MAX_MATCH-1
|
|
||||||
mov strend,esi
|
|
||||||
; bx = scan_end = *(window+best_len-1)
|
|
||||||
|
|
||||||
; IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
|
|
||||||
; s->strstart - (IPos)MAX_DIST(s) : NIL;
|
|
||||||
|
|
||||||
mov esi,[ebp+dep_w_size]
|
|
||||||
sub esi,MIN_LOOKAHEAD
|
|
||||||
; here esi = MAX_DIST(s)
|
|
||||||
sub ecx,esi
|
|
||||||
ja nodist
|
|
||||||
xor ecx,ecx
|
|
||||||
nodist:
|
|
||||||
mov limit,ecx
|
|
||||||
|
|
||||||
; prev = s->prev
|
|
||||||
mov edx,[ebp+dep_prev]
|
|
||||||
mov prev,edx
|
|
||||||
|
|
||||||
;
|
|
||||||
mov edx,dword ptr [ebp+dep_match_start]
|
|
||||||
mov bp,scan_start
|
|
||||||
mov eax,cur_match
|
|
||||||
mov match_start,edx
|
|
||||||
|
|
||||||
mov edx,window
|
|
||||||
mov edi,edx
|
|
||||||
add edi,best_len
|
|
||||||
mov esi,prev
|
|
||||||
dec edi
|
|
||||||
; windowlen = window + best_len -1
|
|
||||||
mov windowlen,edi
|
|
||||||
|
|
||||||
jmp beginloop2
|
|
||||||
align 4
|
|
||||||
|
|
||||||
; here, in the loop
|
|
||||||
; eax = ax = cur_match
|
|
||||||
; ecx = limit
|
|
||||||
; bx = scan_end
|
|
||||||
; bp = scan_start
|
|
||||||
; edi = windowlen (window + best_len -1)
|
|
||||||
; esi = prev
|
|
||||||
|
|
||||||
|
|
||||||
;// here; chain_length <=16
|
|
||||||
normalbeg0add16:
|
|
||||||
add chain_length,16
|
|
||||||
jz exitloop
|
|
||||||
normalbeg0:
|
|
||||||
cmp word ptr[edi+eax],bx
|
|
||||||
je normalbeg2noroll
|
|
||||||
rcontlabnoroll:
|
|
||||||
; cur_match = prev[cur_match & wmask]
|
|
||||||
and eax,7fffh
|
|
||||||
mov ax,word ptr[esi+eax*2]
|
|
||||||
; if cur_match > limit, go to exitloop
|
|
||||||
cmp ecx,eax
|
|
||||||
jnb exitloop
|
|
||||||
; if --chain_length != 0, go to exitloop
|
|
||||||
dec chain_length
|
|
||||||
jnz normalbeg0
|
|
||||||
jmp exitloop
|
|
||||||
|
|
||||||
normalbeg2noroll:
|
|
||||||
; if (scan_start==*(cur_match+window)) goto normalbeg2
|
|
||||||
cmp bp,word ptr[edx+eax]
|
|
||||||
jne rcontlabnoroll
|
|
||||||
jmp normalbeg2
|
|
||||||
|
|
||||||
contloop3:
|
|
||||||
mov edi,windowlen
|
|
||||||
|
|
||||||
; cur_match = prev[cur_match & wmask]
|
|
||||||
and eax,7fffh
|
|
||||||
mov ax,word ptr[esi+eax*2]
|
|
||||||
; if cur_match > limit, go to exitloop
|
|
||||||
cmp ecx,eax
|
|
||||||
jnbexitloopshort1:
|
|
||||||
jnb exitloop
|
|
||||||
; if --chain_length != 0, go to exitloop
|
|
||||||
|
|
||||||
|
|
||||||
; begin the main loop
|
|
||||||
beginloop2:
|
|
||||||
sub chain_length,16+1
|
|
||||||
; if chain_length <=16, don't use the unrolled loop
|
|
||||||
jna normalbeg0add16
|
|
||||||
|
|
||||||
do16:
|
|
||||||
cmp word ptr[edi+eax],bx
|
|
||||||
je normalbeg2dc0
|
|
||||||
|
|
||||||
maccn MACRO lab
|
|
||||||
and eax,7fffh
|
|
||||||
mov ax,word ptr[esi+eax*2]
|
|
||||||
cmp ecx,eax
|
|
||||||
jnb exitloop
|
|
||||||
cmp word ptr[edi+eax],bx
|
|
||||||
je lab
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
rcontloop0:
|
|
||||||
maccn normalbeg2dc1
|
|
||||||
|
|
||||||
rcontloop1:
|
|
||||||
maccn normalbeg2dc2
|
|
||||||
|
|
||||||
rcontloop2:
|
|
||||||
maccn normalbeg2dc3
|
|
||||||
|
|
||||||
rcontloop3:
|
|
||||||
maccn normalbeg2dc4
|
|
||||||
|
|
||||||
rcontloop4:
|
|
||||||
maccn normalbeg2dc5
|
|
||||||
|
|
||||||
rcontloop5:
|
|
||||||
maccn normalbeg2dc6
|
|
||||||
|
|
||||||
rcontloop6:
|
|
||||||
maccn normalbeg2dc7
|
|
||||||
|
|
||||||
rcontloop7:
|
|
||||||
maccn normalbeg2dc8
|
|
||||||
|
|
||||||
rcontloop8:
|
|
||||||
maccn normalbeg2dc9
|
|
||||||
|
|
||||||
rcontloop9:
|
|
||||||
maccn normalbeg2dc10
|
|
||||||
|
|
||||||
rcontloop10:
|
|
||||||
maccn short normalbeg2dc11
|
|
||||||
|
|
||||||
rcontloop11:
|
|
||||||
maccn short normalbeg2dc12
|
|
||||||
|
|
||||||
rcontloop12:
|
|
||||||
maccn short normalbeg2dc13
|
|
||||||
|
|
||||||
rcontloop13:
|
|
||||||
maccn short normalbeg2dc14
|
|
||||||
|
|
||||||
rcontloop14:
|
|
||||||
maccn short normalbeg2dc15
|
|
||||||
|
|
||||||
rcontloop15:
|
|
||||||
and eax,7fffh
|
|
||||||
mov ax,word ptr[esi+eax*2]
|
|
||||||
cmp ecx,eax
|
|
||||||
jnb exitloop
|
|
||||||
|
|
||||||
sub chain_length,16
|
|
||||||
ja do16
|
|
||||||
jmp normalbeg0add16
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
normbeg MACRO rcontlab,valsub
|
|
||||||
; if we are here, we know that *(match+best_len-1) == scan_end
|
|
||||||
cmp bp,word ptr[edx+eax]
|
|
||||||
; if (match != scan_start) goto rcontlab
|
|
||||||
jne rcontlab
|
|
||||||
; calculate the good chain_length, and we'll compare scan and match string
|
|
||||||
add chain_length,16-valsub
|
|
||||||
jmp iseq
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
|
|
||||||
normalbeg2dc11:
|
|
||||||
normbeg rcontloop11,11
|
|
||||||
|
|
||||||
normalbeg2dc12:
|
|
||||||
normbeg short rcontloop12,12
|
|
||||||
|
|
||||||
normalbeg2dc13:
|
|
||||||
normbeg short rcontloop13,13
|
|
||||||
|
|
||||||
normalbeg2dc14:
|
|
||||||
normbeg short rcontloop14,14
|
|
||||||
|
|
||||||
normalbeg2dc15:
|
|
||||||
normbeg short rcontloop15,15
|
|
||||||
|
|
||||||
normalbeg2dc10:
|
|
||||||
normbeg rcontloop10,10
|
|
||||||
|
|
||||||
normalbeg2dc9:
|
|
||||||
normbeg rcontloop9,9
|
|
||||||
|
|
||||||
normalbeg2dc8:
|
|
||||||
normbeg rcontloop8,8
|
|
||||||
|
|
||||||
normalbeg2dc7:
|
|
||||||
normbeg rcontloop7,7
|
|
||||||
|
|
||||||
normalbeg2dc6:
|
|
||||||
normbeg rcontloop6,6
|
|
||||||
|
|
||||||
normalbeg2dc5:
|
|
||||||
normbeg rcontloop5,5
|
|
||||||
|
|
||||||
normalbeg2dc4:
|
|
||||||
normbeg rcontloop4,4
|
|
||||||
|
|
||||||
normalbeg2dc3:
|
|
||||||
normbeg rcontloop3,3
|
|
||||||
|
|
||||||
normalbeg2dc2:
|
|
||||||
normbeg rcontloop2,2
|
|
||||||
|
|
||||||
normalbeg2dc1:
|
|
||||||
normbeg rcontloop1,1
|
|
||||||
|
|
||||||
normalbeg2dc0:
|
|
||||||
normbeg rcontloop0,0
|
|
||||||
|
|
||||||
|
|
||||||
; we go in normalbeg2 because *(ushf*)(match+best_len-1) == scan_end
|
|
||||||
|
|
||||||
normalbeg2:
|
|
||||||
mov edi,window
|
|
||||||
|
|
||||||
cmp bp,word ptr[edi+eax]
|
|
||||||
jne contloop3 ; if *(ushf*)match != scan_start, continue
|
|
||||||
|
|
||||||
iseq:
|
|
||||||
; if we are here, we know that *(match+best_len-1) == scan_end
|
|
||||||
; and (match == scan_start)
|
|
||||||
|
|
||||||
mov edi,edx
|
|
||||||
mov esi,scan ; esi = scan
|
|
||||||
add edi,eax ; edi = window + cur_match = match
|
|
||||||
|
|
||||||
mov edx,[esi+3] ; compare manually dword at match+3
|
|
||||||
xor edx,[edi+3] ; and scan +3
|
|
||||||
|
|
||||||
jz begincompare ; if equal, go to long compare
|
|
||||||
|
|
||||||
; we will determine the unmatch byte and calculate len (in esi)
|
|
||||||
or dl,dl
|
|
||||||
je eq1rr
|
|
||||||
mov esi,3
|
|
||||||
jmp trfinval
|
|
||||||
eq1rr:
|
|
||||||
or dx,dx
|
|
||||||
je eq1
|
|
||||||
|
|
||||||
mov esi,4
|
|
||||||
jmp trfinval
|
|
||||||
eq1:
|
|
||||||
and edx,0ffffffh
|
|
||||||
jz eq11
|
|
||||||
mov esi,5
|
|
||||||
jmp trfinval
|
|
||||||
eq11:
|
|
||||||
mov esi,6
|
|
||||||
jmp trfinval
|
|
||||||
|
|
||||||
begincompare:
|
|
||||||
; here we now scan and match begin same
|
|
||||||
add edi,6
|
|
||||||
add esi,6
|
|
||||||
mov ecx,(MAX_MATCH-(2+4))/4 ; scan for at most MAX_MATCH bytes
|
|
||||||
repe cmpsd ; loop until mismatch
|
|
||||||
|
|
||||||
je trfin ; go to trfin if not unmatch
|
|
||||||
; we determine the unmatch byte
|
|
||||||
sub esi,4
|
|
||||||
mov edx,[edi-4]
|
|
||||||
xor edx,[esi]
|
|
||||||
|
|
||||||
or dl,dl
|
|
||||||
jnz trfin
|
|
||||||
inc esi
|
|
||||||
|
|
||||||
or dx,dx
|
|
||||||
jnz trfin
|
|
||||||
inc esi
|
|
||||||
|
|
||||||
and edx,0ffffffh
|
|
||||||
jnz trfin
|
|
||||||
inc esi
|
|
||||||
|
|
||||||
trfin:
|
|
||||||
sub esi,scan ; esi = len
|
|
||||||
trfinval:
|
|
||||||
; here we have finised compare, and esi contain len of equal string
|
|
||||||
cmp esi,best_len ; if len > best_len, go newbestlen
|
|
||||||
ja short newbestlen
|
|
||||||
; now we restore edx, ecx and esi, for the big loop
|
|
||||||
mov esi,prev
|
|
||||||
mov ecx,limit
|
|
||||||
mov edx,window
|
|
||||||
jmp contloop3
|
|
||||||
|
|
||||||
newbestlen:
|
|
||||||
mov best_len,esi ; len become best_len
|
|
||||||
|
|
||||||
mov match_start,eax ; save new position as match_start
|
|
||||||
cmp esi,nice_match ; if best_len >= nice_match, exit
|
|
||||||
jae exitloop
|
|
||||||
mov ecx,scan
|
|
||||||
mov edx,window ; restore edx=window
|
|
||||||
add ecx,esi
|
|
||||||
add esi,edx
|
|
||||||
|
|
||||||
dec esi
|
|
||||||
mov windowlen,esi ; windowlen = window + best_len-1
|
|
||||||
mov bx,[ecx-1] ; bx = *(scan+best_len-1) = scan_end
|
|
||||||
|
|
||||||
; now we restore ecx and esi, for the big loop :
|
|
||||||
mov esi,prev
|
|
||||||
mov ecx,limit
|
|
||||||
jmp contloop3
|
|
||||||
|
|
||||||
exitloop:
|
|
||||||
; exit : s->match_start=match_start
|
|
||||||
mov ebx,match_start
|
|
||||||
mov ebp,str_s
|
|
||||||
mov ecx,best_len
|
|
||||||
mov dword ptr [ebp+dep_match_start],ebx
|
|
||||||
mov eax,dword ptr [ebp+dep_lookahead]
|
|
||||||
cmp ecx,eax
|
|
||||||
ja minexlo
|
|
||||||
mov eax,ecx
|
|
||||||
minexlo:
|
|
||||||
; return min(best_len,s->lookahead)
|
|
||||||
|
|
||||||
; restore stack and register ebx,esi,edi,ebp
|
|
||||||
add esp,NbStackAdd
|
|
||||||
|
|
||||||
pop ebx
|
|
||||||
pop esi
|
|
||||||
pop edi
|
|
||||||
pop ebp
|
|
||||||
ret
|
|
||||||
InfoAuthor:
|
|
||||||
; please don't remove this string !
|
|
||||||
; Your are free use gvmat32 in any fre or commercial apps if you don't remove the string in the binary!
|
|
||||||
db 0dh,0ah,"GVMat32 optimised assembly code written 1996-98 by Gilles Vollant",0dh,0ah
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
IFDEF NOUNDERLINE
|
|
||||||
longest_match_7fff endp
|
|
||||||
ELSE
|
|
||||||
_longest_match_7fff endp
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
|
|
||||||
IFDEF NOUNDERLINE
|
|
||||||
cpudetect32 proc near
|
|
||||||
ELSE
|
|
||||||
_cpudetect32 proc near
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
push ebx
|
|
||||||
|
|
||||||
pushfd ; push original EFLAGS
|
|
||||||
pop eax ; get original EFLAGS
|
|
||||||
mov ecx, eax ; save original EFLAGS
|
|
||||||
xor eax, 40000h ; flip AC bit in EFLAGS
|
|
||||||
push eax ; save new EFLAGS value on stack
|
|
||||||
popfd ; replace current EFLAGS value
|
|
||||||
pushfd ; get new EFLAGS
|
|
||||||
pop eax ; store new EFLAGS in EAX
|
|
||||||
xor eax, ecx ; can’t toggle AC bit, processor=80386
|
|
||||||
jz end_cpu_is_386 ; jump if 80386 processor
|
|
||||||
push ecx
|
|
||||||
popfd ; restore AC bit in EFLAGS first
|
|
||||||
|
|
||||||
pushfd
|
|
||||||
pushfd
|
|
||||||
pop ecx
|
|
||||||
|
|
||||||
mov eax, ecx ; get original EFLAGS
|
|
||||||
xor eax, 200000h ; flip ID bit in EFLAGS
|
|
||||||
push eax ; save new EFLAGS value on stack
|
|
||||||
popfd ; replace current EFLAGS value
|
|
||||||
pushfd ; get new EFLAGS
|
|
||||||
pop eax ; store new EFLAGS in EAX
|
|
||||||
popfd ; restore original EFLAGS
|
|
||||||
xor eax, ecx ; can’t toggle ID bit,
|
|
||||||
je is_old_486 ; processor=old
|
|
||||||
|
|
||||||
mov eax,1
|
|
||||||
db 0fh,0a2h ;CPUID
|
|
||||||
|
|
||||||
exitcpudetect:
|
|
||||||
pop ebx
|
|
||||||
ret
|
|
||||||
|
|
||||||
end_cpu_is_386:
|
|
||||||
mov eax,0300h
|
|
||||||
jmp exitcpudetect
|
|
||||||
|
|
||||||
is_old_486:
|
|
||||||
mov eax,0400h
|
|
||||||
jmp exitcpudetect
|
|
||||||
|
|
||||||
IFDEF NOUNDERLINE
|
|
||||||
cpudetect32 endp
|
|
||||||
ELSE
|
|
||||||
_cpudetect32 endp
|
|
||||||
ENDIF
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
MAX_MATCH equ 258
|
|
||||||
MIN_MATCH equ 3
|
|
||||||
MIN_LOOKAHEAD equ (MAX_MATCH + MIN_MATCH + 1)
|
|
||||||
MAX_MATCH_8_ equ ((MAX_MATCH + 7) AND 0FFF0h)
|
|
||||||
|
|
||||||
|
|
||||||
;;; stack frame offsets
|
|
||||||
|
|
||||||
chainlenwmask equ esp + 0 ; high word: current chain len
|
|
||||||
; low word: s->wmask
|
|
||||||
window equ esp + 4 ; local copy of s->window
|
|
||||||
windowbestlen equ esp + 8 ; s->window + bestlen
|
|
||||||
scanstart equ esp + 16 ; first two bytes of string
|
|
||||||
scanend equ esp + 12 ; last two bytes of string
|
|
||||||
scanalign equ esp + 20 ; dword-misalignment of string
|
|
||||||
nicematch equ esp + 24 ; a good enough match size
|
|
||||||
bestlen equ esp + 28 ; size of best match so far
|
|
||||||
scan equ esp + 32 ; ptr to string wanting match
|
|
||||||
|
|
||||||
LocalVarsSize equ 36
|
|
||||||
; saved ebx byte esp + 36
|
|
||||||
; saved edi byte esp + 40
|
|
||||||
; saved esi byte esp + 44
|
|
||||||
; saved ebp byte esp + 48
|
|
||||||
; return address byte esp + 52
|
|
||||||
deflatestate equ esp + 56 ; the function arguments
|
|
||||||
curmatch equ esp + 60
|
|
||||||
|
|
||||||
;;; Offsets for fields in the deflate_state structure. These numbers
|
|
||||||
;;; are calculated from the definition of deflate_state, with the
|
|
||||||
;;; assumption that the compiler will dword-align the fields. (Thus,
|
|
||||||
;;; changing the definition of deflate_state could easily cause this
|
|
||||||
;;; program to crash horribly, without so much as a warning at
|
|
||||||
;;; compile time. Sigh.)
|
|
||||||
|
|
||||||
dsWSize equ 36+zlib1222add
|
|
||||||
dsWMask equ 44+zlib1222add
|
|
||||||
dsWindow equ 48+zlib1222add
|
|
||||||
dsPrev equ 56+zlib1222add
|
|
||||||
dsMatchLen equ 88+zlib1222add
|
|
||||||
dsPrevMatch equ 92+zlib1222add
|
|
||||||
dsStrStart equ 100+zlib1222add
|
|
||||||
dsMatchStart equ 104+zlib1222add
|
|
||||||
dsLookahead equ 108+zlib1222add
|
|
||||||
dsPrevLen equ 112+zlib1222add
|
|
||||||
dsMaxChainLen equ 116+zlib1222add
|
|
||||||
dsGoodMatch equ 132+zlib1222add
|
|
||||||
dsNiceMatch equ 136+zlib1222add
|
|
||||||
|
|
||||||
|
|
||||||
;;; match.asm -- Pentium-Pro-optimized version of longest_match()
|
|
||||||
;;; Written for zlib 1.1.2
|
|
||||||
;;; Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com>
|
|
||||||
;;; You can look at http://www.muppetlabs.com/~breadbox/software/assembly.html
|
|
||||||
;;;
|
|
||||||
;;; This is free software; you can redistribute it and/or modify it
|
|
||||||
;;; under the terms of the GNU General Public License.
|
|
||||||
|
|
||||||
;GLOBAL _longest_match, _match_init
|
|
||||||
|
|
||||||
|
|
||||||
;SECTION .text
|
|
||||||
|
|
||||||
;;; uInt longest_match(deflate_state *deflatestate, IPos curmatch)
|
|
||||||
|
|
||||||
;_longest_match:
|
|
||||||
IFDEF NOOLDPENTIUMCODE
|
|
||||||
IFDEF NOUNDERLINE
|
|
||||||
longest_match proc near
|
|
||||||
ELSE
|
|
||||||
_longest_match proc near
|
|
||||||
ENDIF
|
|
||||||
ELSE
|
|
||||||
IFDEF NOUNDERLINE
|
|
||||||
longest_match_686 proc near
|
|
||||||
ELSE
|
|
||||||
_longest_match_686 proc near
|
|
||||||
ENDIF
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
;;; Save registers that the compiler may be using, and adjust esp to
|
|
||||||
;;; make room for our stack frame.
|
|
||||||
|
|
||||||
push ebp
|
|
||||||
push edi
|
|
||||||
push esi
|
|
||||||
push ebx
|
|
||||||
sub esp, LocalVarsSize
|
|
||||||
|
|
||||||
;;; Retrieve the function arguments. ecx will hold cur_match
|
|
||||||
;;; throughout the entire function. edx will hold the pointer to the
|
|
||||||
;;; deflate_state structure during the function's setup (before
|
|
||||||
;;; entering the main loop.
|
|
||||||
|
|
||||||
mov edx, [deflatestate]
|
|
||||||
mov ecx, [curmatch]
|
|
||||||
|
|
||||||
;;; uInt wmask = s->w_mask;
|
|
||||||
;;; unsigned chain_length = s->max_chain_length;
|
|
||||||
;;; if (s->prev_length >= s->good_match) {
|
|
||||||
;;; chain_length >>= 2;
|
|
||||||
;;; }
|
|
||||||
|
|
||||||
mov eax, [edx + dsPrevLen]
|
|
||||||
mov ebx, [edx + dsGoodMatch]
|
|
||||||
cmp eax, ebx
|
|
||||||
mov eax, [edx + dsWMask]
|
|
||||||
mov ebx, [edx + dsMaxChainLen]
|
|
||||||
jl LastMatchGood
|
|
||||||
shr ebx, 2
|
|
||||||
LastMatchGood:
|
|
||||||
|
|
||||||
;;; chainlen is decremented once beforehand so that the function can
|
|
||||||
;;; use the sign flag instead of the zero flag for the exit test.
|
|
||||||
;;; It is then shifted into the high word, to make room for the wmask
|
|
||||||
;;; value, which it will always accompany.
|
|
||||||
|
|
||||||
dec ebx
|
|
||||||
shl ebx, 16
|
|
||||||
or ebx, eax
|
|
||||||
mov [chainlenwmask], ebx
|
|
||||||
|
|
||||||
;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
|
|
||||||
|
|
||||||
mov eax, [edx + dsNiceMatch]
|
|
||||||
mov ebx, [edx + dsLookahead]
|
|
||||||
cmp ebx, eax
|
|
||||||
jl LookaheadLess
|
|
||||||
mov ebx, eax
|
|
||||||
LookaheadLess: mov [nicematch], ebx
|
|
||||||
|
|
||||||
;;; register Bytef *scan = s->window + s->strstart;
|
|
||||||
|
|
||||||
mov esi, [edx + dsWindow]
|
|
||||||
mov [window], esi
|
|
||||||
mov ebp, [edx + dsStrStart]
|
|
||||||
lea edi, [esi + ebp]
|
|
||||||
mov [scan], edi
|
|
||||||
|
|
||||||
;;; Determine how many bytes the scan ptr is off from being
|
|
||||||
;;; dword-aligned.
|
|
||||||
|
|
||||||
mov eax, edi
|
|
||||||
neg eax
|
|
||||||
and eax, 3
|
|
||||||
mov [scanalign], eax
|
|
||||||
|
|
||||||
;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
|
|
||||||
;;; s->strstart - (IPos)MAX_DIST(s) : NIL;
|
|
||||||
|
|
||||||
mov eax, [edx + dsWSize]
|
|
||||||
sub eax, MIN_LOOKAHEAD
|
|
||||||
sub ebp, eax
|
|
||||||
jg LimitPositive
|
|
||||||
xor ebp, ebp
|
|
||||||
LimitPositive:
|
|
||||||
|
|
||||||
;;; int best_len = s->prev_length;
|
|
||||||
|
|
||||||
mov eax, [edx + dsPrevLen]
|
|
||||||
mov [bestlen], eax
|
|
||||||
|
|
||||||
;;; Store the sum of s->window + best_len in esi locally, and in esi.
|
|
||||||
|
|
||||||
add esi, eax
|
|
||||||
mov [windowbestlen], esi
|
|
||||||
|
|
||||||
;;; register ush scan_start = *(ushf*)scan;
|
|
||||||
;;; register ush scan_end = *(ushf*)(scan+best_len-1);
|
|
||||||
;;; Posf *prev = s->prev;
|
|
||||||
|
|
||||||
movzx ebx, word ptr [edi]
|
|
||||||
mov [scanstart], ebx
|
|
||||||
movzx ebx, word ptr [edi + eax - 1]
|
|
||||||
mov [scanend], ebx
|
|
||||||
mov edi, [edx + dsPrev]
|
|
||||||
|
|
||||||
;;; Jump into the main loop.
|
|
||||||
|
|
||||||
mov edx, [chainlenwmask]
|
|
||||||
jmp short LoopEntry
|
|
||||||
|
|
||||||
align 4
|
|
||||||
|
|
||||||
;;; do {
|
|
||||||
;;; match = s->window + cur_match;
|
|
||||||
;;; if (*(ushf*)(match+best_len-1) != scan_end ||
|
|
||||||
;;; *(ushf*)match != scan_start) continue;
|
|
||||||
;;; [...]
|
|
||||||
;;; } while ((cur_match = prev[cur_match & wmask]) > limit
|
|
||||||
;;; && --chain_length != 0);
|
|
||||||
;;;
|
|
||||||
;;; Here is the inner loop of the function. The function will spend the
|
|
||||||
;;; majority of its time in this loop, and majority of that time will
|
|
||||||
;;; be spent in the first ten instructions.
|
|
||||||
;;;
|
|
||||||
;;; Within this loop:
|
|
||||||
;;; ebx = scanend
|
|
||||||
;;; ecx = curmatch
|
|
||||||
;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask)
|
|
||||||
;;; esi = windowbestlen - i.e., (window + bestlen)
|
|
||||||
;;; edi = prev
|
|
||||||
;;; ebp = limit
|
|
||||||
|
|
||||||
LookupLoop:
|
|
||||||
and ecx, edx
|
|
||||||
movzx ecx, word ptr [edi + ecx*2]
|
|
||||||
cmp ecx, ebp
|
|
||||||
jbe LeaveNow
|
|
||||||
sub edx, 00010000h
|
|
||||||
js LeaveNow
|
|
||||||
LoopEntry: movzx eax, word ptr [esi + ecx - 1]
|
|
||||||
cmp eax, ebx
|
|
||||||
jnz LookupLoop
|
|
||||||
mov eax, [window]
|
|
||||||
movzx eax, word ptr [eax + ecx]
|
|
||||||
cmp eax, [scanstart]
|
|
||||||
jnz LookupLoop
|
|
||||||
|
|
||||||
;;; Store the current value of chainlen.
|
|
||||||
|
|
||||||
mov [chainlenwmask], edx
|
|
||||||
|
|
||||||
;;; Point edi to the string under scrutiny, and esi to the string we
|
|
||||||
;;; are hoping to match it up with. In actuality, esi and edi are
|
|
||||||
;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is
|
|
||||||
;;; initialized to -(MAX_MATCH_8 - scanalign).
|
|
||||||
|
|
||||||
mov esi, [window]
|
|
||||||
mov edi, [scan]
|
|
||||||
add esi, ecx
|
|
||||||
mov eax, [scanalign]
|
|
||||||
mov edx, 0fffffef8h; -(MAX_MATCH_8)
|
|
||||||
lea edi, [edi + eax + 0108h] ;MAX_MATCH_8]
|
|
||||||
lea esi, [esi + eax + 0108h] ;MAX_MATCH_8]
|
|
||||||
|
|
||||||
;;; Test the strings for equality, 8 bytes at a time. At the end,
|
|
||||||
;;; adjust edx so that it is offset to the exact byte that mismatched.
|
|
||||||
;;;
|
|
||||||
;;; We already know at this point that the first three bytes of the
|
|
||||||
;;; strings match each other, and they can be safely passed over before
|
|
||||||
;;; starting the compare loop. So what this code does is skip over 0-3
|
|
||||||
;;; bytes, as much as necessary in order to dword-align the edi
|
|
||||||
;;; pointer. (esi will still be misaligned three times out of four.)
|
|
||||||
;;;
|
|
||||||
;;; It should be confessed that this loop usually does not represent
|
|
||||||
;;; much of the total running time. Replacing it with a more
|
|
||||||
;;; straightforward "rep cmpsb" would not drastically degrade
|
|
||||||
;;; performance.
|
|
||||||
|
|
||||||
LoopCmps:
|
|
||||||
mov eax, [esi + edx]
|
|
||||||
xor eax, [edi + edx]
|
|
||||||
jnz LeaveLoopCmps
|
|
||||||
mov eax, [esi + edx + 4]
|
|
||||||
xor eax, [edi + edx + 4]
|
|
||||||
jnz LeaveLoopCmps4
|
|
||||||
add edx, 8
|
|
||||||
jnz LoopCmps
|
|
||||||
jmp short LenMaximum
|
|
||||||
LeaveLoopCmps4: add edx, 4
|
|
||||||
LeaveLoopCmps: test eax, 0000FFFFh
|
|
||||||
jnz LenLower
|
|
||||||
add edx, 2
|
|
||||||
shr eax, 16
|
|
||||||
LenLower: sub al, 1
|
|
||||||
adc edx, 0
|
|
||||||
|
|
||||||
;;; Calculate the length of the match. If it is longer than MAX_MATCH,
|
|
||||||
;;; then automatically accept it as the best possible match and leave.
|
|
||||||
|
|
||||||
lea eax, [edi + edx]
|
|
||||||
mov edi, [scan]
|
|
||||||
sub eax, edi
|
|
||||||
cmp eax, MAX_MATCH
|
|
||||||
jge LenMaximum
|
|
||||||
|
|
||||||
;;; If the length of the match is not longer than the best match we
|
|
||||||
;;; have so far, then forget it and return to the lookup loop.
|
|
||||||
|
|
||||||
mov edx, [deflatestate]
|
|
||||||
mov ebx, [bestlen]
|
|
||||||
cmp eax, ebx
|
|
||||||
jg LongerMatch
|
|
||||||
mov esi, [windowbestlen]
|
|
||||||
mov edi, [edx + dsPrev]
|
|
||||||
mov ebx, [scanend]
|
|
||||||
mov edx, [chainlenwmask]
|
|
||||||
jmp LookupLoop
|
|
||||||
|
|
||||||
;;; s->match_start = cur_match;
|
|
||||||
;;; best_len = len;
|
|
||||||
;;; if (len >= nice_match) break;
|
|
||||||
;;; scan_end = *(ushf*)(scan+best_len-1);
|
|
||||||
|
|
||||||
LongerMatch: mov ebx, [nicematch]
|
|
||||||
mov [bestlen], eax
|
|
||||||
mov [edx + dsMatchStart], ecx
|
|
||||||
cmp eax, ebx
|
|
||||||
jge LeaveNow
|
|
||||||
mov esi, [window]
|
|
||||||
add esi, eax
|
|
||||||
mov [windowbestlen], esi
|
|
||||||
movzx ebx, word ptr [edi + eax - 1]
|
|
||||||
mov edi, [edx + dsPrev]
|
|
||||||
mov [scanend], ebx
|
|
||||||
mov edx, [chainlenwmask]
|
|
||||||
jmp LookupLoop
|
|
||||||
|
|
||||||
;;; Accept the current string, with the maximum possible length.
|
|
||||||
|
|
||||||
LenMaximum: mov edx, [deflatestate]
|
|
||||||
mov dword ptr [bestlen], MAX_MATCH
|
|
||||||
mov [edx + dsMatchStart], ecx
|
|
||||||
|
|
||||||
;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
|
|
||||||
;;; return s->lookahead;
|
|
||||||
|
|
||||||
LeaveNow:
|
|
||||||
mov edx, [deflatestate]
|
|
||||||
mov ebx, [bestlen]
|
|
||||||
mov eax, [edx + dsLookahead]
|
|
||||||
cmp ebx, eax
|
|
||||||
jg LookaheadRet
|
|
||||||
mov eax, ebx
|
|
||||||
LookaheadRet:
|
|
||||||
|
|
||||||
;;; Restore the stack and return from whence we came.
|
|
||||||
|
|
||||||
add esp, LocalVarsSize
|
|
||||||
pop ebx
|
|
||||||
pop esi
|
|
||||||
pop edi
|
|
||||||
pop ebp
|
|
||||||
|
|
||||||
ret
|
|
||||||
; please don't remove this string !
|
|
||||||
; Your can freely use gvmat32 in any free or commercial app if you don't remove the string in the binary!
|
|
||||||
db 0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998",0dh,0ah
|
|
||||||
|
|
||||||
|
|
||||||
IFDEF NOOLDPENTIUMCODE
|
|
||||||
IFDEF NOUNDERLINE
|
|
||||||
longest_match endp
|
|
||||||
ELSE
|
|
||||||
_longest_match endp
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IFDEF NOUNDERLINE
|
|
||||||
match_init proc near
|
|
||||||
ret
|
|
||||||
match_init endp
|
|
||||||
ELSE
|
|
||||||
_match_init proc near
|
|
||||||
ret
|
|
||||||
_match_init endp
|
|
||||||
ENDIF
|
|
||||||
ELSE
|
|
||||||
IFDEF NOUNDERLINE
|
|
||||||
longest_match_686 endp
|
|
||||||
ELSE
|
|
||||||
_longest_match_686 endp
|
|
||||||
ENDIF
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
_TEXT ends
|
|
||||||
end
|
|
@ -1,62 +0,0 @@
|
|||||||
/* gvmat32.c -- C portion of the optimized longest_match for 32 bits x86
|
|
||||||
* Copyright (C) 1995-1996 Jean-loup Gailly and Gilles Vollant.
|
|
||||||
* File written by Gilles Vollant, by modifiying the longest_match
|
|
||||||
* from Jean-loup Gailly in deflate.c
|
|
||||||
* it prepare all parameters and call the assembly longest_match_gvasm
|
|
||||||
* longest_match execute standard C code is wmask != 0x7fff
|
|
||||||
* (assembly code is faster with a fixed wmask)
|
|
||||||
*
|
|
||||||
* Read comment at beginning of gvmat32.asm for more information
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if defined(ASMV) && (!defined(NOOLDPENTIUMCODE))
|
|
||||||
#include "deflate.h"
|
|
||||||
|
|
||||||
/* if your C compiler don't add underline before function name,
|
|
||||||
define ADD_UNDERLINE_ASMFUNC */
|
|
||||||
#ifdef ADD_UNDERLINE_ASMFUNC
|
|
||||||
#define longest_match_7fff _longest_match_7fff
|
|
||||||
#define longest_match_686 _longest_match_686
|
|
||||||
#define cpudetect32 _cpudetect32
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
unsigned long cpudetect32();
|
|
||||||
|
|
||||||
uInt longest_match_c(
|
|
||||||
deflate_state *s,
|
|
||||||
IPos cur_match); /* current match */
|
|
||||||
|
|
||||||
|
|
||||||
uInt longest_match_7fff(
|
|
||||||
deflate_state *s,
|
|
||||||
IPos cur_match); /* current match */
|
|
||||||
|
|
||||||
uInt longest_match_686(
|
|
||||||
deflate_state *s,
|
|
||||||
IPos cur_match); /* current match */
|
|
||||||
|
|
||||||
|
|
||||||
static uInt iIsPPro=2;
|
|
||||||
|
|
||||||
void match_init ()
|
|
||||||
{
|
|
||||||
iIsPPro = (((cpudetect32()/0x100)&0xf)>=6) ? 1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
uInt longest_match(
|
|
||||||
deflate_state *s,
|
|
||||||
IPos cur_match) /* current match */
|
|
||||||
{
|
|
||||||
if (iIsPPro!=0)
|
|
||||||
return longest_match_686(s,cur_match);
|
|
||||||
|
|
||||||
if (s->w_mask != 0x7fff)
|
|
||||||
return longest_match_686(s,cur_match);
|
|
||||||
|
|
||||||
/* now ((s->w_mask == 0x7fff) && (iIsPPro==0)) */
|
|
||||||
return longest_match_7fff(s,cur_match);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* defined(ASMV) && (!defined(NOOLDPENTIUMCODE)) */
|
|
478
contrib/masmx86/match686.asm
Normal file
478
contrib/masmx86/match686.asm
Normal file
@ -0,0 +1,478 @@
|
|||||||
|
; match686.asm -- Asm portion of the optimized longest_match for 32 bits x86
|
||||||
|
; Copyright (C) 1995-1996 Jean-loup Gailly, Brian Raiter and Gilles Vollant.
|
||||||
|
; File written by Gilles Vollant, by converting match686.S from Brian Raiter
|
||||||
|
; for MASM. This is as assembly version of longest_match
|
||||||
|
; from Jean-loup Gailly in deflate.c
|
||||||
|
;
|
||||||
|
; http://www.zlib.net
|
||||||
|
; http://www.winimage.com/zLibDll
|
||||||
|
; http://www.muppetlabs.com/~breadbox/software/assembly.html
|
||||||
|
;
|
||||||
|
; For Visual C++ 4.x and higher and ML 6.x and higher
|
||||||
|
; ml.exe is distributed in
|
||||||
|
; http://www.microsoft.com/downloads/details.aspx?FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64
|
||||||
|
;
|
||||||
|
; this file contain two implementation of longest_match
|
||||||
|
;
|
||||||
|
; this longest_match was written by Brian raiter (1998), optimized for Pentium Pro
|
||||||
|
; (and the faster known version of match_init on modern Core 2 Duo and AMD Phenom)
|
||||||
|
;
|
||||||
|
; for using an assembly version of longest_match, you need define ASMV in project
|
||||||
|
;
|
||||||
|
; compile the asm file running
|
||||||
|
; ml /coff /Zi /c /Flmatch686.lst match686.asm
|
||||||
|
; and do not include match686.obj in your project
|
||||||
|
;
|
||||||
|
; note: contrib of zLib 1.2.3 and earlier contained both a deprecated version for
|
||||||
|
; Pentium (prior Pentium Pro) and this version for Pentium Pro and modern processor
|
||||||
|
; with autoselect (with cpu detection code)
|
||||||
|
; if you want support the old pentium optimization, you can still use these version
|
||||||
|
;
|
||||||
|
; this file is not optimized for old pentium, but it compatible with all x86 32 bits
|
||||||
|
; processor (starting 80386)
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; see below : zlib1222add must be adjuster if you use a zlib version < 1.2.2.2
|
||||||
|
|
||||||
|
;uInt longest_match(s, cur_match)
|
||||||
|
; deflate_state *s;
|
||||||
|
; IPos cur_match; /* current match */
|
||||||
|
|
||||||
|
NbStack equ 76
|
||||||
|
cur_match equ dword ptr[esp+NbStack-0]
|
||||||
|
str_s equ dword ptr[esp+NbStack-4]
|
||||||
|
; 5 dword on top (ret,ebp,esi,edi,ebx)
|
||||||
|
adrret equ dword ptr[esp+NbStack-8]
|
||||||
|
pushebp equ dword ptr[esp+NbStack-12]
|
||||||
|
pushedi equ dword ptr[esp+NbStack-16]
|
||||||
|
pushesi equ dword ptr[esp+NbStack-20]
|
||||||
|
pushebx equ dword ptr[esp+NbStack-24]
|
||||||
|
|
||||||
|
chain_length equ dword ptr [esp+NbStack-28]
|
||||||
|
limit equ dword ptr [esp+NbStack-32]
|
||||||
|
best_len equ dword ptr [esp+NbStack-36]
|
||||||
|
window equ dword ptr [esp+NbStack-40]
|
||||||
|
prev equ dword ptr [esp+NbStack-44]
|
||||||
|
scan_start equ word ptr [esp+NbStack-48]
|
||||||
|
wmask equ dword ptr [esp+NbStack-52]
|
||||||
|
match_start_ptr equ dword ptr [esp+NbStack-56]
|
||||||
|
nice_match equ dword ptr [esp+NbStack-60]
|
||||||
|
scan equ dword ptr [esp+NbStack-64]
|
||||||
|
|
||||||
|
windowlen equ dword ptr [esp+NbStack-68]
|
||||||
|
match_start equ dword ptr [esp+NbStack-72]
|
||||||
|
strend equ dword ptr [esp+NbStack-76]
|
||||||
|
NbStackAdd equ (NbStack-24)
|
||||||
|
|
||||||
|
.386p
|
||||||
|
|
||||||
|
name gvmatch
|
||||||
|
.MODEL FLAT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; all the +zlib1222add offsets are due to the addition of fields
|
||||||
|
; in zlib in the deflate_state structure since the asm code was first written
|
||||||
|
; (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)").
|
||||||
|
; (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0").
|
||||||
|
; if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8").
|
||||||
|
|
||||||
|
zlib1222add equ 8
|
||||||
|
|
||||||
|
; Note : these value are good with a 8 bytes boundary pack structure
|
||||||
|
dep_chain_length equ 74h+zlib1222add
|
||||||
|
dep_window equ 30h+zlib1222add
|
||||||
|
dep_strstart equ 64h+zlib1222add
|
||||||
|
dep_prev_length equ 70h+zlib1222add
|
||||||
|
dep_nice_match equ 88h+zlib1222add
|
||||||
|
dep_w_size equ 24h+zlib1222add
|
||||||
|
dep_prev equ 38h+zlib1222add
|
||||||
|
dep_w_mask equ 2ch+zlib1222add
|
||||||
|
dep_good_match equ 84h+zlib1222add
|
||||||
|
dep_match_start equ 68h+zlib1222add
|
||||||
|
dep_lookahead equ 6ch+zlib1222add
|
||||||
|
|
||||||
|
|
||||||
|
_TEXT segment
|
||||||
|
|
||||||
|
IFDEF NOUNDERLINE
|
||||||
|
public longest_match
|
||||||
|
public match_init
|
||||||
|
ELSE
|
||||||
|
public _longest_match
|
||||||
|
public _match_init
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
MAX_MATCH equ 258
|
||||||
|
MIN_MATCH equ 3
|
||||||
|
MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
MAX_MATCH equ 258
|
||||||
|
MIN_MATCH equ 3
|
||||||
|
MIN_LOOKAHEAD equ (MAX_MATCH + MIN_MATCH + 1)
|
||||||
|
MAX_MATCH_8_ equ ((MAX_MATCH + 7) AND 0FFF0h)
|
||||||
|
|
||||||
|
|
||||||
|
;;; stack frame offsets
|
||||||
|
|
||||||
|
chainlenwmask equ esp + 0 ; high word: current chain len
|
||||||
|
; low word: s->wmask
|
||||||
|
window equ esp + 4 ; local copy of s->window
|
||||||
|
windowbestlen equ esp + 8 ; s->window + bestlen
|
||||||
|
scanstart equ esp + 16 ; first two bytes of string
|
||||||
|
scanend equ esp + 12 ; last two bytes of string
|
||||||
|
scanalign equ esp + 20 ; dword-misalignment of string
|
||||||
|
nicematch equ esp + 24 ; a good enough match size
|
||||||
|
bestlen equ esp + 28 ; size of best match so far
|
||||||
|
scan equ esp + 32 ; ptr to string wanting match
|
||||||
|
|
||||||
|
LocalVarsSize equ 36
|
||||||
|
; saved ebx byte esp + 36
|
||||||
|
; saved edi byte esp + 40
|
||||||
|
; saved esi byte esp + 44
|
||||||
|
; saved ebp byte esp + 48
|
||||||
|
; return address byte esp + 52
|
||||||
|
deflatestate equ esp + 56 ; the function arguments
|
||||||
|
curmatch equ esp + 60
|
||||||
|
|
||||||
|
;;; Offsets for fields in the deflate_state structure. These numbers
|
||||||
|
;;; are calculated from the definition of deflate_state, with the
|
||||||
|
;;; assumption that the compiler will dword-align the fields. (Thus,
|
||||||
|
;;; changing the definition of deflate_state could easily cause this
|
||||||
|
;;; program to crash horribly, without so much as a warning at
|
||||||
|
;;; compile time. Sigh.)
|
||||||
|
|
||||||
|
dsWSize equ 36+zlib1222add
|
||||||
|
dsWMask equ 44+zlib1222add
|
||||||
|
dsWindow equ 48+zlib1222add
|
||||||
|
dsPrev equ 56+zlib1222add
|
||||||
|
dsMatchLen equ 88+zlib1222add
|
||||||
|
dsPrevMatch equ 92+zlib1222add
|
||||||
|
dsStrStart equ 100+zlib1222add
|
||||||
|
dsMatchStart equ 104+zlib1222add
|
||||||
|
dsLookahead equ 108+zlib1222add
|
||||||
|
dsPrevLen equ 112+zlib1222add
|
||||||
|
dsMaxChainLen equ 116+zlib1222add
|
||||||
|
dsGoodMatch equ 132+zlib1222add
|
||||||
|
dsNiceMatch equ 136+zlib1222add
|
||||||
|
|
||||||
|
|
||||||
|
;;; match686.asm -- Pentium-Pro-optimized version of longest_match()
|
||||||
|
;;; Written for zlib 1.1.2
|
||||||
|
;;; Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com>
|
||||||
|
;;; You can look at http://www.muppetlabs.com/~breadbox/software/assembly.html
|
||||||
|
;;;
|
||||||
|
;;
|
||||||
|
;; This software is provided 'as-is', without any express or implied
|
||||||
|
;; warranty. In no event will the authors be held liable for any damages
|
||||||
|
;; arising from the use of this software.
|
||||||
|
;;
|
||||||
|
;; Permission is granted to anyone to use this software for any purpose,
|
||||||
|
;; including commercial applications, and to alter it and redistribute it
|
||||||
|
;; freely, subject to the following restrictions:
|
||||||
|
;;
|
||||||
|
;; 1. The origin of this software must not be misrepresented; you must not
|
||||||
|
;; claim that you wrote the original software. If you use this software
|
||||||
|
;; in a product, an acknowledgment in the product documentation would be
|
||||||
|
;; appreciated but is not required.
|
||||||
|
;; 2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
;; misrepresented as being the original software
|
||||||
|
;; 3. This notice may not be removed or altered from any source distribution.
|
||||||
|
;;
|
||||||
|
|
||||||
|
;GLOBAL _longest_match, _match_init
|
||||||
|
|
||||||
|
|
||||||
|
;SECTION .text
|
||||||
|
|
||||||
|
;;; uInt longest_match(deflate_state *deflatestate, IPos curmatch)
|
||||||
|
|
||||||
|
;_longest_match:
|
||||||
|
IFDEF NOUNDERLINE
|
||||||
|
longest_match proc near
|
||||||
|
ELSE
|
||||||
|
_longest_match proc near
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
;;; Save registers that the compiler may be using, and adjust esp to
|
||||||
|
;;; make room for our stack frame.
|
||||||
|
|
||||||
|
push ebp
|
||||||
|
push edi
|
||||||
|
push esi
|
||||||
|
push ebx
|
||||||
|
sub esp, LocalVarsSize
|
||||||
|
|
||||||
|
;;; Retrieve the function arguments. ecx will hold cur_match
|
||||||
|
;;; throughout the entire function. edx will hold the pointer to the
|
||||||
|
;;; deflate_state structure during the function's setup (before
|
||||||
|
;;; entering the main loop.
|
||||||
|
|
||||||
|
mov edx, [deflatestate]
|
||||||
|
mov ecx, [curmatch]
|
||||||
|
|
||||||
|
;;; uInt wmask = s->w_mask;
|
||||||
|
;;; unsigned chain_length = s->max_chain_length;
|
||||||
|
;;; if (s->prev_length >= s->good_match) {
|
||||||
|
;;; chain_length >>= 2;
|
||||||
|
;;; }
|
||||||
|
|
||||||
|
mov eax, [edx + dsPrevLen]
|
||||||
|
mov ebx, [edx + dsGoodMatch]
|
||||||
|
cmp eax, ebx
|
||||||
|
mov eax, [edx + dsWMask]
|
||||||
|
mov ebx, [edx + dsMaxChainLen]
|
||||||
|
jl LastMatchGood
|
||||||
|
shr ebx, 2
|
||||||
|
LastMatchGood:
|
||||||
|
|
||||||
|
;;; chainlen is decremented once beforehand so that the function can
|
||||||
|
;;; use the sign flag instead of the zero flag for the exit test.
|
||||||
|
;;; It is then shifted into the high word, to make room for the wmask
|
||||||
|
;;; value, which it will always accompany.
|
||||||
|
|
||||||
|
dec ebx
|
||||||
|
shl ebx, 16
|
||||||
|
or ebx, eax
|
||||||
|
mov [chainlenwmask], ebx
|
||||||
|
|
||||||
|
;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
|
||||||
|
|
||||||
|
mov eax, [edx + dsNiceMatch]
|
||||||
|
mov ebx, [edx + dsLookahead]
|
||||||
|
cmp ebx, eax
|
||||||
|
jl LookaheadLess
|
||||||
|
mov ebx, eax
|
||||||
|
LookaheadLess: mov [nicematch], ebx
|
||||||
|
|
||||||
|
;;; register Bytef *scan = s->window + s->strstart;
|
||||||
|
|
||||||
|
mov esi, [edx + dsWindow]
|
||||||
|
mov [window], esi
|
||||||
|
mov ebp, [edx + dsStrStart]
|
||||||
|
lea edi, [esi + ebp]
|
||||||
|
mov [scan], edi
|
||||||
|
|
||||||
|
;;; Determine how many bytes the scan ptr is off from being
|
||||||
|
;;; dword-aligned.
|
||||||
|
|
||||||
|
mov eax, edi
|
||||||
|
neg eax
|
||||||
|
and eax, 3
|
||||||
|
mov [scanalign], eax
|
||||||
|
|
||||||
|
;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
|
||||||
|
;;; s->strstart - (IPos)MAX_DIST(s) : NIL;
|
||||||
|
|
||||||
|
mov eax, [edx + dsWSize]
|
||||||
|
sub eax, MIN_LOOKAHEAD
|
||||||
|
sub ebp, eax
|
||||||
|
jg LimitPositive
|
||||||
|
xor ebp, ebp
|
||||||
|
LimitPositive:
|
||||||
|
|
||||||
|
;;; int best_len = s->prev_length;
|
||||||
|
|
||||||
|
mov eax, [edx + dsPrevLen]
|
||||||
|
mov [bestlen], eax
|
||||||
|
|
||||||
|
;;; Store the sum of s->window + best_len in esi locally, and in esi.
|
||||||
|
|
||||||
|
add esi, eax
|
||||||
|
mov [windowbestlen], esi
|
||||||
|
|
||||||
|
;;; register ush scan_start = *(ushf*)scan;
|
||||||
|
;;; register ush scan_end = *(ushf*)(scan+best_len-1);
|
||||||
|
;;; Posf *prev = s->prev;
|
||||||
|
|
||||||
|
movzx ebx, word ptr [edi]
|
||||||
|
mov [scanstart], ebx
|
||||||
|
movzx ebx, word ptr [edi + eax - 1]
|
||||||
|
mov [scanend], ebx
|
||||||
|
mov edi, [edx + dsPrev]
|
||||||
|
|
||||||
|
;;; Jump into the main loop.
|
||||||
|
|
||||||
|
mov edx, [chainlenwmask]
|
||||||
|
jmp short LoopEntry
|
||||||
|
|
||||||
|
align 4
|
||||||
|
|
||||||
|
;;; do {
|
||||||
|
;;; match = s->window + cur_match;
|
||||||
|
;;; if (*(ushf*)(match+best_len-1) != scan_end ||
|
||||||
|
;;; *(ushf*)match != scan_start) continue;
|
||||||
|
;;; [...]
|
||||||
|
;;; } while ((cur_match = prev[cur_match & wmask]) > limit
|
||||||
|
;;; && --chain_length != 0);
|
||||||
|
;;;
|
||||||
|
;;; Here is the inner loop of the function. The function will spend the
|
||||||
|
;;; majority of its time in this loop, and majority of that time will
|
||||||
|
;;; be spent in the first ten instructions.
|
||||||
|
;;;
|
||||||
|
;;; Within this loop:
|
||||||
|
;;; ebx = scanend
|
||||||
|
;;; ecx = curmatch
|
||||||
|
;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask)
|
||||||
|
;;; esi = windowbestlen - i.e., (window + bestlen)
|
||||||
|
;;; edi = prev
|
||||||
|
;;; ebp = limit
|
||||||
|
|
||||||
|
LookupLoop:
|
||||||
|
and ecx, edx
|
||||||
|
movzx ecx, word ptr [edi + ecx*2]
|
||||||
|
cmp ecx, ebp
|
||||||
|
jbe LeaveNow
|
||||||
|
sub edx, 00010000h
|
||||||
|
js LeaveNow
|
||||||
|
LoopEntry: movzx eax, word ptr [esi + ecx - 1]
|
||||||
|
cmp eax, ebx
|
||||||
|
jnz LookupLoop
|
||||||
|
mov eax, [window]
|
||||||
|
movzx eax, word ptr [eax + ecx]
|
||||||
|
cmp eax, [scanstart]
|
||||||
|
jnz LookupLoop
|
||||||
|
|
||||||
|
;;; Store the current value of chainlen.
|
||||||
|
|
||||||
|
mov [chainlenwmask], edx
|
||||||
|
|
||||||
|
;;; Point edi to the string under scrutiny, and esi to the string we
|
||||||
|
;;; are hoping to match it up with. In actuality, esi and edi are
|
||||||
|
;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is
|
||||||
|
;;; initialized to -(MAX_MATCH_8 - scanalign).
|
||||||
|
|
||||||
|
mov esi, [window]
|
||||||
|
mov edi, [scan]
|
||||||
|
add esi, ecx
|
||||||
|
mov eax, [scanalign]
|
||||||
|
mov edx, 0fffffef8h; -(MAX_MATCH_8)
|
||||||
|
lea edi, [edi + eax + 0108h] ;MAX_MATCH_8]
|
||||||
|
lea esi, [esi + eax + 0108h] ;MAX_MATCH_8]
|
||||||
|
|
||||||
|
;;; Test the strings for equality, 8 bytes at a time. At the end,
|
||||||
|
;;; adjust edx so that it is offset to the exact byte that mismatched.
|
||||||
|
;;;
|
||||||
|
;;; We already know at this point that the first three bytes of the
|
||||||
|
;;; strings match each other, and they can be safely passed over before
|
||||||
|
;;; starting the compare loop. So what this code does is skip over 0-3
|
||||||
|
;;; bytes, as much as necessary in order to dword-align the edi
|
||||||
|
;;; pointer. (esi will still be misaligned three times out of four.)
|
||||||
|
;;;
|
||||||
|
;;; It should be confessed that this loop usually does not represent
|
||||||
|
;;; much of the total running time. Replacing it with a more
|
||||||
|
;;; straightforward "rep cmpsb" would not drastically degrade
|
||||||
|
;;; performance.
|
||||||
|
|
||||||
|
LoopCmps:
|
||||||
|
mov eax, [esi + edx]
|
||||||
|
xor eax, [edi + edx]
|
||||||
|
jnz LeaveLoopCmps
|
||||||
|
mov eax, [esi + edx + 4]
|
||||||
|
xor eax, [edi + edx + 4]
|
||||||
|
jnz LeaveLoopCmps4
|
||||||
|
add edx, 8
|
||||||
|
jnz LoopCmps
|
||||||
|
jmp short LenMaximum
|
||||||
|
LeaveLoopCmps4: add edx, 4
|
||||||
|
LeaveLoopCmps: test eax, 0000FFFFh
|
||||||
|
jnz LenLower
|
||||||
|
add edx, 2
|
||||||
|
shr eax, 16
|
||||||
|
LenLower: sub al, 1
|
||||||
|
adc edx, 0
|
||||||
|
|
||||||
|
;;; Calculate the length of the match. If it is longer than MAX_MATCH,
|
||||||
|
;;; then automatically accept it as the best possible match and leave.
|
||||||
|
|
||||||
|
lea eax, [edi + edx]
|
||||||
|
mov edi, [scan]
|
||||||
|
sub eax, edi
|
||||||
|
cmp eax, MAX_MATCH
|
||||||
|
jge LenMaximum
|
||||||
|
|
||||||
|
;;; If the length of the match is not longer than the best match we
|
||||||
|
;;; have so far, then forget it and return to the lookup loop.
|
||||||
|
|
||||||
|
mov edx, [deflatestate]
|
||||||
|
mov ebx, [bestlen]
|
||||||
|
cmp eax, ebx
|
||||||
|
jg LongerMatch
|
||||||
|
mov esi, [windowbestlen]
|
||||||
|
mov edi, [edx + dsPrev]
|
||||||
|
mov ebx, [scanend]
|
||||||
|
mov edx, [chainlenwmask]
|
||||||
|
jmp LookupLoop
|
||||||
|
|
||||||
|
;;; s->match_start = cur_match;
|
||||||
|
;;; best_len = len;
|
||||||
|
;;; if (len >= nice_match) break;
|
||||||
|
;;; scan_end = *(ushf*)(scan+best_len-1);
|
||||||
|
|
||||||
|
LongerMatch: mov ebx, [nicematch]
|
||||||
|
mov [bestlen], eax
|
||||||
|
mov [edx + dsMatchStart], ecx
|
||||||
|
cmp eax, ebx
|
||||||
|
jge LeaveNow
|
||||||
|
mov esi, [window]
|
||||||
|
add esi, eax
|
||||||
|
mov [windowbestlen], esi
|
||||||
|
movzx ebx, word ptr [edi + eax - 1]
|
||||||
|
mov edi, [edx + dsPrev]
|
||||||
|
mov [scanend], ebx
|
||||||
|
mov edx, [chainlenwmask]
|
||||||
|
jmp LookupLoop
|
||||||
|
|
||||||
|
;;; Accept the current string, with the maximum possible length.
|
||||||
|
|
||||||
|
LenMaximum: mov edx, [deflatestate]
|
||||||
|
mov dword ptr [bestlen], MAX_MATCH
|
||||||
|
mov [edx + dsMatchStart], ecx
|
||||||
|
|
||||||
|
;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
|
||||||
|
;;; return s->lookahead;
|
||||||
|
|
||||||
|
LeaveNow:
|
||||||
|
mov edx, [deflatestate]
|
||||||
|
mov ebx, [bestlen]
|
||||||
|
mov eax, [edx + dsLookahead]
|
||||||
|
cmp ebx, eax
|
||||||
|
jg LookaheadRet
|
||||||
|
mov eax, ebx
|
||||||
|
LookaheadRet:
|
||||||
|
|
||||||
|
;;; Restore the stack and return from whence we came.
|
||||||
|
|
||||||
|
add esp, LocalVarsSize
|
||||||
|
pop ebx
|
||||||
|
pop esi
|
||||||
|
pop edi
|
||||||
|
pop ebp
|
||||||
|
|
||||||
|
ret
|
||||||
|
; please don't remove this string !
|
||||||
|
; Your can freely use match686 in any free or commercial app if you don't remove the string in the binary!
|
||||||
|
db 0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998",0dh,0ah
|
||||||
|
|
||||||
|
|
||||||
|
IFDEF NOUNDERLINE
|
||||||
|
longest_match endp
|
||||||
|
ELSE
|
||||||
|
_longest_match endp
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IFDEF NOUNDERLINE
|
||||||
|
match_init proc near
|
||||||
|
ret
|
||||||
|
match_init endp
|
||||||
|
ELSE
|
||||||
|
_match_init proc near
|
||||||
|
ret
|
||||||
|
_match_init endp
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
|
||||||
|
_TEXT ends
|
||||||
|
end
|
BIN
contrib/masmx86/match686.obj
Normal file
BIN
contrib/masmx86/match686.obj
Normal file
Binary file not shown.
@ -1,3 +0,0 @@
|
|||||||
cl /DASMV /I..\.. /O2 /c gvmat32c.c
|
|
||||||
ml /coff /Zi /c /Flgvmat32.lst gvmat32.asm
|
|
||||||
ml /coff /Zi /c /Flinffas32.lst inffas32.asm
|
|
@ -14,8 +14,8 @@ appropriate makefile, as suggested below.
|
|||||||
Build instructions
|
Build instructions
|
||||||
------------------
|
------------------
|
||||||
* With Microsoft C and MASM:
|
* With Microsoft C and MASM:
|
||||||
nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="gvmat32c.obj gvmat32.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="gvmat32c.obj gvmat32.obj inffas32.obj" OBJPA="+gvmat32c.obj+gvmat32.obj+inffas32.obj"
|
make -f win32/Makefile.bor LOCAL_ZLIB="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" OBJPA="+match686c.obj+match686.obj+inffas32.obj"
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ unit zlibpas;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
const
|
const
|
||||||
ZLIB_VERSION = '1.2.3';
|
ZLIB_VERSION = '1.2.4';
|
||||||
|
|
||||||
type
|
type
|
||||||
alloc_func = function(opaque: Pointer; items, size: Integer): Pointer;
|
alloc_func = function(opaque: Pointer; items, size: Integer): Pointer;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
Building instructions for the DLL versions of Zlib 1.2.3
|
Building instructions for the DLL versions of Zlib 1.2.4
|
||||||
========================================================
|
========================================================
|
||||||
|
|
||||||
This directory contains projects that build zlib and minizip using
|
This directory contains projects that build zlib and minizip using
|
||||||
Microsoft Visual C++ 7.0/7.1/8.0/9.0/10.0, and Visual C++ .
|
Microsoft Visual C++ 9.0/10.0, and Visual C++ .
|
||||||
|
|
||||||
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:
|
||||||
@ -15,51 +15,17 @@ bld_ml64.bat in contrib\masmx64
|
|||||||
bld_ml32.bat in contrib\masmx86
|
bld_ml32.bat in contrib\masmx86
|
||||||
|
|
||||||
|
|
||||||
Build instructions for Visual Studio 7.x (32 bits)
|
|
||||||
--------------------------------------------------
|
|
||||||
- Uncompress current zlib, including all contrib/* files
|
|
||||||
- Download the crtdll library from
|
|
||||||
http://www.winimage.com/zLibDll/crtdll.zip
|
|
||||||
Unzip crtdll.zip to extract crtdll.lib on contrib\vstudio\vc7.
|
|
||||||
- Open contrib\vstudio\vc7\zlibvc.sln with Microsoft Visual C++ 7.x
|
|
||||||
(Visual Studio .Net 2002 or 2003).
|
|
||||||
|
|
||||||
Build instructions for Visual Studio 2005 (32 bits or 64 bits)
|
|
||||||
--------------------------------------------------------------
|
|
||||||
- Uncompress current zlib, including all contrib/* files
|
|
||||||
- For 32 bits only: download the crtdll library from
|
|
||||||
http://www.winimage.com/zLibDll/crtdll.zip
|
|
||||||
Unzip crtdll.zip to extract crtdll.lib on contrib\vstudio\vc8.
|
|
||||||
- Open contrib\vstudio\vc8\zlibvc.sln with Microsoft Visual C++ 2005
|
|
||||||
|
|
||||||
Build instructions for Visual Studio 2005 64 bits, PSDK compiler
|
|
||||||
----------------------------------------------------------------
|
|
||||||
at the time of writing this text file, Visual Studio 2005 (and
|
|
||||||
Microsoft Visual C++ 8.0) is on the beta 2 stage.
|
|
||||||
Using you can get the free 64 bits compiler from Platform SDK,
|
|
||||||
which is NOT a beta, and compile using the Visual studio 2005 IDE
|
|
||||||
see http://www.winimage.com/misc/sdk64onvs2005/ for instruction
|
|
||||||
|
|
||||||
- Uncompress current zlib, including all contrib/* files
|
|
||||||
- start Visual Studio 2005 from a platform SDK command prompt, using
|
|
||||||
the /useenv switch
|
|
||||||
- Open contrib\vstudio\vc8\zlibvc.sln with Microsoft Visual C++ 2005
|
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
- For 32 bits only: download the crtdll library from
|
|
||||||
http://www.winimage.com/zLibDll/crtdll.zip
|
|
||||||
Unzip crtdll.zip to extract crtdll.lib on contrib\vstudio\vc9.
|
|
||||||
- Open contrib\vstudio\vc9\zlibvc.sln with Microsoft Visual C++ 2008.0
|
- Open contrib\vstudio\vc9\zlibvc.sln with Microsoft Visual C++ 2008.0
|
||||||
|
- 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
|
||||||
- For 32 bits only: download the crtdll library from
|
|
||||||
http://www.winimage.com/zLibDll/crtdll.zip
|
|
||||||
Unzip crtdll.zip to extract crtdll.lib on contrib\vstudio\vc10.
|
|
||||||
- Open contrib\vstudio\vc10\zlibvc.sln with Microsoft Visual C++ 2010.0
|
- Open contrib\vstudio\vc10\zlibvc.sln with Microsoft Visual C++ 2010.0
|
||||||
|
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@
|
|||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>..\..\masmx86\gvmat32.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<OutputFile>$(OutDir)testzlib.exe</OutputFile>
|
<OutputFile>$(OutDir)testzlib.exe</OutputFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
|
<ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
|
||||||
@ -254,7 +254,7 @@
|
|||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>..\..\masmx86\gvmat32.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<OutputFile>$(OutDir)testzlib.exe</OutputFile>
|
<OutputFile>$(OutDir)testzlib.exe</OutputFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
@ -397,14 +397,6 @@
|
|||||||
<ClCompile Include="..\..\..\compress.c" />
|
<ClCompile Include="..\..\..\compress.c" />
|
||||||
<ClCompile Include="..\..\..\crc32.c" />
|
<ClCompile Include="..\..\..\crc32.c" />
|
||||||
<ClCompile Include="..\..\..\deflate.c" />
|
<ClCompile Include="..\..\..\deflate.c" />
|
||||||
<ClCompile Include="..\..\masmx86\gvmat32c.c">
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\..\infback.c" />
|
<ClCompile Include="..\..\..\infback.c" />
|
||||||
<ClCompile Include="..\..\masmx64\inffas8664.c">
|
<ClCompile Include="..\..\masmx64\inffas8664.c">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
|
||||||
|
@ -27,9 +27,6 @@
|
|||||||
<ClCompile Include="..\..\..\deflate.c">
|
<ClCompile Include="..\..\..\deflate.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\masmx86\gvmat32c.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\..\infback.c">
|
<ClCompile Include="..\..\..\infback.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -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,3,0
|
FILEVERSION 1,2,4,0
|
||||||
PRODUCTVERSION 1,2,3,0
|
PRODUCTVERSION 1,2,4,0
|
||||||
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
||||||
FILEFLAGS 0
|
FILEFLAGS 0
|
||||||
FILEOS VOS_DOS_WINDOWS32
|
FILEOS VOS_DOS_WINDOWS32
|
||||||
@ -16,13 +16,13 @@ BEGIN
|
|||||||
//language ID = U.S. English, char set = Windows, Multilingual
|
//language ID = U.S. English, char set = Windows, Multilingual
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "FileDescription", "zlib data compression library\0"
|
VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
|
||||||
VALUE "FileVersion", "1.2.3.0\0"
|
VALUE "FileVersion", "1.2.4.0\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-2003 Jean-loup Gailly & Mark Adler\0"
|
VALUE "LegalCopyright", "(C) 1995-2010 Jean-loup Gailly & Mark Adler\0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
@ -206,7 +206,7 @@
|
|||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
<Lib>
|
<Lib>
|
||||||
<AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
|
||||||
<AdditionalDependencies>..\..\masmx86\gvmat32.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<OutputFile>$(OutDir)zlibstat.lib</OutputFile>
|
<OutputFile>$(OutDir)zlibstat.lib</OutputFile>
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
</Lib>
|
</Lib>
|
||||||
@ -422,16 +422,7 @@
|
|||||||
<ClCompile Include="..\..\..\compress.c" />
|
<ClCompile Include="..\..\..\compress.c" />
|
||||||
<ClCompile Include="..\..\..\crc32.c" />
|
<ClCompile Include="..\..\..\crc32.c" />
|
||||||
<ClCompile Include="..\..\..\deflate.c" />
|
<ClCompile Include="..\..\..\deflate.c" />
|
||||||
<ClCompile Include="..\..\masmx86\gvmat32c.c">
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\..\gzclose.c" />
|
<ClCompile Include="..\..\..\gzclose.c" />
|
||||||
<ClCompile Include="..\..\..\gzio.c" />
|
|
||||||
<ClCompile Include="..\..\..\gzlib.c" />
|
<ClCompile Include="..\..\..\gzlib.c" />
|
||||||
<ClCompile Include="..\..\..\gzread.c" />
|
<ClCompile Include="..\..\..\gzread.c" />
|
||||||
<ClCompile Include="..\..\..\gzwrite.c" />
|
<ClCompile Include="..\..\..\gzwrite.c" />
|
||||||
|
@ -18,15 +18,9 @@
|
|||||||
<ClCompile Include="..\..\..\deflate.c">
|
<ClCompile Include="..\..\..\deflate.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\masmx86\gvmat32c.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\..\gzclose.c">
|
<ClCompile Include="..\..\..\gzclose.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\gzio.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\..\gzlib.c">
|
<ClCompile Include="..\..\..\gzlib.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
LIBRARY
|
||||||
|
; zlib data compression and ZIP file I/O library
|
||||||
|
|
||||||
VERSION 1.23
|
VERSION 1.24
|
||||||
|
|
||||||
HEAPSIZE 1048576,8192
|
|
||||||
|
|
||||||
EXPORTS
|
EXPORTS
|
||||||
adler32 @1
|
adler32 @1
|
||||||
@ -90,25 +90,47 @@ EXPORTS
|
|||||||
unzGoToFilePos @101
|
unzGoToFilePos @101
|
||||||
|
|
||||||
fill_win32_filefunc @110
|
fill_win32_filefunc @110
|
||||||
fill_win32_filefunc64 @111
|
|
||||||
fill_win32_filefunc64A @112
|
|
||||||
fill_win32_filefunc64W @113
|
|
||||||
|
|
||||||
; quick hack by hkuno@microhouse.co.jp
|
; zlibwapi v1.2.4 added:
|
||||||
unzOpen64 @120
|
fill_win32_filefunc64 @111
|
||||||
unzOpen2_64 @121
|
fill_win32_filefunc64A @112
|
||||||
unzGetGlobalInfo64 @122
|
fill_win32_filefunc64W @113
|
||||||
unzGetCurrentFileInfo64 @124
|
|
||||||
unzGetCurrentFileZStreamPos64 @125
|
|
||||||
unztell64 @126
|
|
||||||
unzGetFilePos64 @127
|
|
||||||
unzGoToFilePos64 @128
|
|
||||||
|
|
||||||
zipOpen64 @130
|
unzOpen64 @120
|
||||||
zipOpen2_64 @131
|
unzOpen2_64 @121
|
||||||
zipOpenNewFileInZip64 @132
|
unzGetGlobalInfo64 @122
|
||||||
zipOpenNewFileInZip2_64 @133
|
unzGetCurrentFileInfo64 @124
|
||||||
zipOpenNewFileInZip3_64 @134
|
unzGetCurrentFileZStreamPos64 @125
|
||||||
zipOpenNewFileInZip4_64 @135
|
unztell64 @126
|
||||||
zipCloseFileInZipRaw64 @136
|
unzGetFilePos64 @127
|
||||||
; end hack
|
unzGoToFilePos64 @128
|
||||||
|
|
||||||
|
zipOpen64 @130
|
||||||
|
zipOpen2_64 @131
|
||||||
|
zipOpenNewFileInZip64 @132
|
||||||
|
zipOpenNewFileInZip2_64 @133
|
||||||
|
zipOpenNewFileInZip3_64 @134
|
||||||
|
zipOpenNewFileInZip4_64 @135
|
||||||
|
zipCloseFileInZipRaw64 @136
|
||||||
|
|
||||||
|
; zlib1 v1.2.4 added:
|
||||||
|
adler32_combine @140
|
||||||
|
adler32_combine64 @141
|
||||||
|
crc32_combine @142
|
||||||
|
crc32_combine64 @143
|
||||||
|
deflateSetHeader @144
|
||||||
|
deflateTune @145
|
||||||
|
gzbuffer @146
|
||||||
|
gzclose_r @147
|
||||||
|
gzclose_w @148
|
||||||
|
gzdirect @149
|
||||||
|
gzoffset @150
|
||||||
|
gzoffset64 @151
|
||||||
|
gzopen64 @152
|
||||||
|
gzseek64 @153
|
||||||
|
gztell64 @154
|
||||||
|
inflateGetHeader @156
|
||||||
|
inflateMark @157
|
||||||
|
inflatePrime @158
|
||||||
|
inflateReset2 @159
|
||||||
|
inflateUndermine @160
|
||||||
|
@ -36,8 +36,8 @@ Global
|
|||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.Build.0 = Release|Itanium
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.Build.0 = Release|Itanium
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = ReleaseWithoutAsm|x64
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = Release|x64
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = ReleaseWithoutAsm|x64
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = Release|x64
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
|
||||||
@ -94,8 +94,8 @@ Global
|
|||||||
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64
|
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
@ -110,8 +110,8 @@ Global
|
|||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Itanium
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.Build.0 = Debug|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.Build.0 = Debug|Itanium
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
@ -126,8 +126,8 @@ Global
|
|||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
@ -213,7 +213,7 @@
|
|||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
|
||||||
<AdditionalDependencies>..\..\masmx86\gvmat32.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
|
<OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
<ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
|
||||||
@ -291,7 +291,7 @@
|
|||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
<ExceptionHandling>
|
<ExceptionHandling>
|
||||||
</ExceptionHandling>
|
</ExceptionHandling>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
|
||||||
@ -310,7 +310,7 @@
|
|||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
|
||||||
<AdditionalDependencies>..\..\masmx86\gvmat32.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
|
<OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||||
@ -598,17 +598,7 @@
|
|||||||
<ClCompile Include="..\..\..\compress.c" />
|
<ClCompile Include="..\..\..\compress.c" />
|
||||||
<ClCompile Include="..\..\..\crc32.c" />
|
<ClCompile Include="..\..\..\crc32.c" />
|
||||||
<ClCompile Include="..\..\..\deflate.c" />
|
<ClCompile Include="..\..\..\deflate.c" />
|
||||||
<ClCompile Include="..\..\masmx86\gvmat32c.c">
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\..\gzclose.c" />
|
<ClCompile Include="..\..\..\gzclose.c" />
|
||||||
<ClCompile Include="..\..\..\gzio.c" />
|
|
||||||
<ClCompile Include="..\..\..\gzlib.c" />
|
<ClCompile Include="..\..\..\gzlib.c" />
|
||||||
<ClCompile Include="..\..\..\gzread.c" />
|
<ClCompile Include="..\..\..\gzread.c" />
|
||||||
<ClCompile Include="..\..\..\gzwrite.c" />
|
<ClCompile Include="..\..\..\gzwrite.c" />
|
||||||
|
@ -27,15 +27,9 @@
|
|||||||
<ClCompile Include="..\..\..\deflate.c">
|
<ClCompile Include="..\..\..\deflate.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\masmx86\gvmat32c.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\..\gzclose.c">
|
<ClCompile Include="..\..\..\gzclose.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\gzio.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\..\gzlib.c">
|
<ClCompile Include="..\..\..\gzlib.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -1,114 +0,0 @@
|
|||||||
|
|
||||||
VERSION 1.23
|
|
||||||
|
|
||||||
HEAPSIZE 1048576,8192
|
|
||||||
|
|
||||||
EXPORTS
|
|
||||||
adler32 @1
|
|
||||||
compress @2
|
|
||||||
crc32 @3
|
|
||||||
deflate @4
|
|
||||||
deflateCopy @5
|
|
||||||
deflateEnd @6
|
|
||||||
deflateInit2_ @7
|
|
||||||
deflateInit_ @8
|
|
||||||
deflateParams @9
|
|
||||||
deflateReset @10
|
|
||||||
deflateSetDictionary @11
|
|
||||||
gzclose @12
|
|
||||||
gzdopen @13
|
|
||||||
gzerror @14
|
|
||||||
gzflush @15
|
|
||||||
gzopen @16
|
|
||||||
gzread @17
|
|
||||||
gzwrite @18
|
|
||||||
inflate @19
|
|
||||||
inflateEnd @20
|
|
||||||
inflateInit2_ @21
|
|
||||||
inflateInit_ @22
|
|
||||||
inflateReset @23
|
|
||||||
inflateSetDictionary @24
|
|
||||||
inflateSync @25
|
|
||||||
uncompress @26
|
|
||||||
zlibVersion @27
|
|
||||||
gzprintf @28
|
|
||||||
gzputc @29
|
|
||||||
gzgetc @30
|
|
||||||
gzseek @31
|
|
||||||
gzrewind @32
|
|
||||||
gztell @33
|
|
||||||
gzeof @34
|
|
||||||
gzsetparams @35
|
|
||||||
zError @36
|
|
||||||
inflateSyncPoint @37
|
|
||||||
get_crc_table @38
|
|
||||||
compress2 @39
|
|
||||||
gzputs @40
|
|
||||||
gzgets @41
|
|
||||||
inflateCopy @42
|
|
||||||
inflateBackInit_ @43
|
|
||||||
inflateBack @44
|
|
||||||
inflateBackEnd @45
|
|
||||||
compressBound @46
|
|
||||||
deflateBound @47
|
|
||||||
gzclearerr @48
|
|
||||||
gzungetc @49
|
|
||||||
zlibCompileFlags @50
|
|
||||||
deflatePrime @51
|
|
||||||
|
|
||||||
unzOpen @61
|
|
||||||
unzClose @62
|
|
||||||
unzGetGlobalInfo @63
|
|
||||||
unzGetCurrentFileInfo @64
|
|
||||||
unzGoToFirstFile @65
|
|
||||||
unzGoToNextFile @66
|
|
||||||
unzOpenCurrentFile @67
|
|
||||||
unzReadCurrentFile @68
|
|
||||||
unzOpenCurrentFile3 @69
|
|
||||||
unztell @70
|
|
||||||
unzeof @71
|
|
||||||
unzCloseCurrentFile @72
|
|
||||||
unzGetGlobalComment @73
|
|
||||||
unzStringFileNameCompare @74
|
|
||||||
unzLocateFile @75
|
|
||||||
unzGetLocalExtrafield @76
|
|
||||||
unzOpen2 @77
|
|
||||||
unzOpenCurrentFile2 @78
|
|
||||||
unzOpenCurrentFilePassword @79
|
|
||||||
|
|
||||||
zipOpen @80
|
|
||||||
zipOpenNewFileInZip @81
|
|
||||||
zipWriteInFileInZip @82
|
|
||||||
zipCloseFileInZip @83
|
|
||||||
zipClose @84
|
|
||||||
zipOpenNewFileInZip2 @86
|
|
||||||
zipCloseFileInZipRaw @87
|
|
||||||
zipOpen2 @88
|
|
||||||
zipOpenNewFileInZip3 @89
|
|
||||||
|
|
||||||
unzGetFilePos @100
|
|
||||||
unzGoToFilePos @101
|
|
||||||
|
|
||||||
fill_win32_filefunc @110
|
|
||||||
fill_win32_filefunc64 @111
|
|
||||||
fill_win32_filefunc64A @112
|
|
||||||
fill_win32_filefunc64W @113
|
|
||||||
|
|
||||||
; quick hack by hkuno@microhouse.co.jp
|
|
||||||
unzOpen64 @120
|
|
||||||
unzOpen2_64 @121
|
|
||||||
unzGetGlobalInfo64 @122
|
|
||||||
unzGetCurrentFileInfo64 @124
|
|
||||||
unzGetCurrentFileZStreamPos64 @125
|
|
||||||
unztell64 @126
|
|
||||||
unzGetFilePos64 @127
|
|
||||||
unzGoToFilePos64 @128
|
|
||||||
|
|
||||||
zipOpen64 @130
|
|
||||||
zipOpen2_64 @131
|
|
||||||
zipOpenNewFileInZip64 @132
|
|
||||||
zipOpenNewFileInZip2_64 @133
|
|
||||||
zipOpenNewFileInZip3_64 @134
|
|
||||||
zipOpenNewFileInZip4_64 @135
|
|
||||||
zipCloseFileInZipRaw64 @136
|
|
||||||
; end hack
|
|
@ -1,114 +0,0 @@
|
|||||||
|
|
||||||
VERSION 1.23
|
|
||||||
|
|
||||||
HEAPSIZE 1048576,8192
|
|
||||||
|
|
||||||
EXPORTS
|
|
||||||
adler32 @1
|
|
||||||
compress @2
|
|
||||||
crc32 @3
|
|
||||||
deflate @4
|
|
||||||
deflateCopy @5
|
|
||||||
deflateEnd @6
|
|
||||||
deflateInit2_ @7
|
|
||||||
deflateInit_ @8
|
|
||||||
deflateParams @9
|
|
||||||
deflateReset @10
|
|
||||||
deflateSetDictionary @11
|
|
||||||
gzclose @12
|
|
||||||
gzdopen @13
|
|
||||||
gzerror @14
|
|
||||||
gzflush @15
|
|
||||||
gzopen @16
|
|
||||||
gzread @17
|
|
||||||
gzwrite @18
|
|
||||||
inflate @19
|
|
||||||
inflateEnd @20
|
|
||||||
inflateInit2_ @21
|
|
||||||
inflateInit_ @22
|
|
||||||
inflateReset @23
|
|
||||||
inflateSetDictionary @24
|
|
||||||
inflateSync @25
|
|
||||||
uncompress @26
|
|
||||||
zlibVersion @27
|
|
||||||
gzprintf @28
|
|
||||||
gzputc @29
|
|
||||||
gzgetc @30
|
|
||||||
gzseek @31
|
|
||||||
gzrewind @32
|
|
||||||
gztell @33
|
|
||||||
gzeof @34
|
|
||||||
gzsetparams @35
|
|
||||||
zError @36
|
|
||||||
inflateSyncPoint @37
|
|
||||||
get_crc_table @38
|
|
||||||
compress2 @39
|
|
||||||
gzputs @40
|
|
||||||
gzgets @41
|
|
||||||
inflateCopy @42
|
|
||||||
inflateBackInit_ @43
|
|
||||||
inflateBack @44
|
|
||||||
inflateBackEnd @45
|
|
||||||
compressBound @46
|
|
||||||
deflateBound @47
|
|
||||||
gzclearerr @48
|
|
||||||
gzungetc @49
|
|
||||||
zlibCompileFlags @50
|
|
||||||
deflatePrime @51
|
|
||||||
|
|
||||||
unzOpen @61
|
|
||||||
unzClose @62
|
|
||||||
unzGetGlobalInfo @63
|
|
||||||
unzGetCurrentFileInfo @64
|
|
||||||
unzGoToFirstFile @65
|
|
||||||
unzGoToNextFile @66
|
|
||||||
unzOpenCurrentFile @67
|
|
||||||
unzReadCurrentFile @68
|
|
||||||
unzOpenCurrentFile3 @69
|
|
||||||
unztell @70
|
|
||||||
unzeof @71
|
|
||||||
unzCloseCurrentFile @72
|
|
||||||
unzGetGlobalComment @73
|
|
||||||
unzStringFileNameCompare @74
|
|
||||||
unzLocateFile @75
|
|
||||||
unzGetLocalExtrafield @76
|
|
||||||
unzOpen2 @77
|
|
||||||
unzOpenCurrentFile2 @78
|
|
||||||
unzOpenCurrentFilePassword @79
|
|
||||||
|
|
||||||
zipOpen @80
|
|
||||||
zipOpenNewFileInZip @81
|
|
||||||
zipWriteInFileInZip @82
|
|
||||||
zipCloseFileInZip @83
|
|
||||||
zipClose @84
|
|
||||||
zipOpenNewFileInZip2 @86
|
|
||||||
zipCloseFileInZipRaw @87
|
|
||||||
zipOpen2 @88
|
|
||||||
zipOpenNewFileInZip3 @89
|
|
||||||
|
|
||||||
unzGetFilePos @100
|
|
||||||
unzGoToFilePos @101
|
|
||||||
|
|
||||||
fill_win32_filefunc @110
|
|
||||||
fill_win32_filefunc64 @111
|
|
||||||
fill_win32_filefunc64A @112
|
|
||||||
fill_win32_filefunc64W @113
|
|
||||||
|
|
||||||
; quick hack by hkuno@microhouse.co.jp
|
|
||||||
unzOpen64 @120
|
|
||||||
unzOpen2_64 @121
|
|
||||||
unzGetGlobalInfo64 @122
|
|
||||||
unzGetCurrentFileInfo64 @124
|
|
||||||
unzGetCurrentFileZStreamPos64 @125
|
|
||||||
unztell64 @126
|
|
||||||
unzGetFilePos64 @127
|
|
||||||
unzGoToFilePos64 @128
|
|
||||||
|
|
||||||
zipOpen64 @130
|
|
||||||
zipOpen2_64 @131
|
|
||||||
zipOpenNewFileInZip64 @132
|
|
||||||
zipOpenNewFileInZip2_64 @133
|
|
||||||
zipOpenNewFileInZip3_64 @134
|
|
||||||
zipOpenNewFileInZip4_64 @135
|
|
||||||
zipCloseFileInZipRaw64 @136
|
|
||||||
; end hack
|
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="9.00"
|
Version="9,00"
|
||||||
Name="testzlib"
|
Name="testzlib"
|
||||||
ProjectGUID="{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}"
|
ProjectGUID="{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}"
|
||||||
RootNamespace="testzlib"
|
RootNamespace="testzlib"
|
||||||
@ -71,7 +71,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj"
|
AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj"
|
||||||
OutputFile="$(OutDir)/testzlib.exe"
|
OutputFile="$(OutDir)/testzlib.exe"
|
||||||
LinkIncremental="2"
|
LinkIncremental="2"
|
||||||
GenerateManifest="false"
|
GenerateManifest="false"
|
||||||
@ -104,6 +104,152 @@
|
|||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|x64"
|
||||||
|
OutputDirectory="x64\TestZlib$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp"
|
||||||
|
ConfigurationType="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalIncludeDirectories="..\..\.."
|
||||||
|
PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
|
||||||
|
BasicRuntimeChecks="0"
|
||||||
|
RuntimeLibrary="3"
|
||||||
|
BufferSecurityCheck="false"
|
||||||
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj"
|
||||||
|
GenerateManifest="false"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Itanium"
|
||||||
|
OutputDirectory="ia64\TestZlib$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp"
|
||||||
|
ConfigurationType="1"
|
||||||
|
CharacterSet="2"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
TargetEnvironment="2"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="..\..\.."
|
||||||
|
PreprocessorDefinitions="ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
BasicRuntimeChecks="0"
|
||||||
|
RuntimeLibrary="3"
|
||||||
|
BufferSecurityCheck="false"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
AssemblerOutput="4"
|
||||||
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="true"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
OutputFile="$(OutDir)/testzlib.exe"
|
||||||
|
LinkIncremental="2"
|
||||||
|
GenerateManifest="false"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
|
||||||
|
SubSystem="1"
|
||||||
|
TargetMachine="5"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="ReleaseWithoutAsm|Win32"
|
Name="ReleaseWithoutAsm|Win32"
|
||||||
OutputDirectory="x86\TestZlib$(ConfigurationName)"
|
OutputDirectory="x86\TestZlib$(ConfigurationName)"
|
||||||
@ -190,245 +336,6 @@
|
|||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="x86\TestZlib$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
InlineFunctionExpansion="1"
|
|
||||||
OmitFramePointers="true"
|
|
||||||
AdditionalIncludeDirectories="..\..\.."
|
|
||||||
PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
|
|
||||||
StringPooling="true"
|
|
||||||
BasicRuntimeChecks="0"
|
|
||||||
RuntimeLibrary="0"
|
|
||||||
BufferSecurityCheck="false"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
UsePrecompiledHeader="0"
|
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj"
|
|
||||||
OutputFile="$(OutDir)/testzlib.exe"
|
|
||||||
LinkIncremental="1"
|
|
||||||
GenerateManifest="false"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
SubSystem="1"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"
|
|
||||||
OptimizeForWindows98="1"
|
|
||||||
RandomizedBaseAddress="1"
|
|
||||||
DataExecutionPrevention="0"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|x64"
|
|
||||||
OutputDirectory="x64\TestZlib$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp"
|
|
||||||
ConfigurationType="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
AdditionalIncludeDirectories="..\..\.."
|
|
||||||
PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
|
|
||||||
BasicRuntimeChecks="0"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
BufferSecurityCheck="false"
|
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj"
|
|
||||||
GenerateManifest="false"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Itanium"
|
|
||||||
OutputDirectory="ia64\TestZlib$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
TargetEnvironment="2"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\.."
|
|
||||||
PreprocessorDefinitions="ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="0"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
BufferSecurityCheck="false"
|
|
||||||
UsePrecompiledHeader="0"
|
|
||||||
AssemblerOutput="4"
|
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
OutputFile="$(OutDir)/testzlib.exe"
|
|
||||||
LinkIncremental="2"
|
|
||||||
GenerateManifest="false"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
|
|
||||||
SubSystem="1"
|
|
||||||
TargetMachine="5"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="ReleaseWithoutAsm|x64"
|
Name="ReleaseWithoutAsm|x64"
|
||||||
OutputDirectory="x64\TestZlib$(ConfigurationName)"
|
OutputDirectory="x64\TestZlib$(ConfigurationName)"
|
||||||
@ -492,9 +399,6 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCAppVerifierTool"
|
Name="VCAppVerifierTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
@ -581,7 +485,91 @@
|
|||||||
Name="VCAppVerifierTool"
|
Name="VCAppVerifierTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCWebDeploymentTool"
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory="x86\TestZlib$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp"
|
||||||
|
ConfigurationType="1"
|
||||||
|
CharacterSet="2"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
InlineFunctionExpansion="1"
|
||||||
|
OmitFramePointers="true"
|
||||||
|
AdditionalIncludeDirectories="..\..\.."
|
||||||
|
PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
|
||||||
|
StringPooling="true"
|
||||||
|
BasicRuntimeChecks="0"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
BufferSecurityCheck="false"
|
||||||
|
EnableFunctionLevelLinking="true"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="true"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj"
|
||||||
|
OutputFile="$(OutDir)/testzlib.exe"
|
||||||
|
LinkIncremental="1"
|
||||||
|
GenerateManifest="false"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="1"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
OptimizeForWindows98="1"
|
||||||
|
RandomizedBaseAddress="1"
|
||||||
|
DataExecutionPrevention="0"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
@ -614,7 +602,7 @@
|
|||||||
AdditionalIncludeDirectories="..\..\.."
|
AdditionalIncludeDirectories="..\..\.."
|
||||||
PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
|
PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
|
||||||
BasicRuntimeChecks="0"
|
BasicRuntimeChecks="0"
|
||||||
RuntimeLibrary="2"
|
RuntimeLibrary="0"
|
||||||
BufferSecurityCheck="false"
|
BufferSecurityCheck="false"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
/>
|
/>
|
||||||
@ -650,9 +638,6 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCAppVerifierTool"
|
Name="VCAppVerifierTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
@ -738,9 +723,6 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCAppVerifierTool"
|
Name="VCAppVerifierTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
@ -769,82 +751,6 @@
|
|||||||
RelativePath="..\..\..\deflate.c"
|
RelativePath="..\..\..\deflate.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\masmx86\gvmat32c.c"
|
|
||||||
>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|x64"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Itanium"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="ReleaseWithoutAsm|x64"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="ReleaseWithoutAsm|Itanium"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|x64"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Itanium"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win64 (AMD64)"
|
|
||||||
ExcludedFromBuild="TRUE"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win64 (AMD64)"
|
|
||||||
ExcludedFromBuild="TRUE"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="ReleaseAsm|Win64 (AMD64)"
|
|
||||||
ExcludedFromBuild="TRUE"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\infback.c"
|
RelativePath="..\..\..\infback.c"
|
||||||
>
|
>
|
||||||
@ -860,22 +766,6 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
|
||||||
Name="ReleaseWithoutAsm|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Itanium"
|
Name="Debug|Itanium"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
@ -884,6 +774,14 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="ReleaseWithoutAsm|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="ReleaseWithoutAsm|Itanium"
|
Name="ReleaseWithoutAsm|Itanium"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
@ -892,6 +790,14 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Itanium"
|
Name="Release|Itanium"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
|
@ -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,3,0
|
FILEVERSION 1,2,4,0
|
||||||
PRODUCTVERSION 1,2,3,0
|
PRODUCTVERSION 1,2,4,0
|
||||||
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
||||||
FILEFLAGS 0
|
FILEFLAGS 0
|
||||||
FILEOS VOS_DOS_WINDOWS32
|
FILEOS VOS_DOS_WINDOWS32
|
||||||
@ -16,13 +16,13 @@ BEGIN
|
|||||||
//language ID = U.S. English, char set = Windows, Multilingual
|
//language ID = U.S. English, char set = Windows, Multilingual
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "FileDescription", "zlib data compression library\0"
|
VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
|
||||||
VALUE "FileVersion", "1.2.3.0\0"
|
VALUE "FileVersion", "1.2.4.0\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-2003 Jean-loup Gailly & Mark Adler\0"
|
VALUE "LegalCopyright", "(C) 1995-2010 Jean-loup Gailly & Mark Adler\0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="9.00"
|
Version="9,00"
|
||||||
Name="zlibstat"
|
Name="zlibstat"
|
||||||
ProjectGUID="{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}"
|
ProjectGUID="{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}"
|
||||||
TargetFrameworkVersion="131072"
|
TargetFrameworkVersion="131072"
|
||||||
@ -93,153 +93,6 @@
|
|||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="x86\ZlibStat$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp"
|
|
||||||
ConfigurationType="4"
|
|
||||||
InheritedPropertySheets="UpgradeFromVC70.vsprops"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
InlineFunctionExpansion="1"
|
|
||||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
|
|
||||||
PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF"
|
|
||||||
StringPooling="true"
|
|
||||||
ExceptionHandling="0"
|
|
||||||
RuntimeLibrary="0"
|
|
||||||
BufferSecurityCheck="false"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
|
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
|
||||||
ObjectFile="$(IntDir)\"
|
|
||||||
ProgramDataBaseFileName="$(OutDir)\"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
Culture="1036"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLibrarianTool"
|
|
||||||
AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB"
|
|
||||||
AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj "
|
|
||||||
OutputFile="$(OutDir)\zlibstat.lib"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="ReleaseWithoutAsm|Win32"
|
|
||||||
OutputDirectory="x86\ZlibStat$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp"
|
|
||||||
ConfigurationType="4"
|
|
||||||
InheritedPropertySheets="UpgradeFromVC70.vsprops"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
InlineFunctionExpansion="1"
|
|
||||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
|
|
||||||
PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
|
|
||||||
StringPooling="true"
|
|
||||||
ExceptionHandling="0"
|
|
||||||
RuntimeLibrary="0"
|
|
||||||
BufferSecurityCheck="false"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
|
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
|
||||||
ObjectFile="$(IntDir)\"
|
|
||||||
ProgramDataBaseFileName="$(OutDir)\"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
Culture="1036"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLibrarianTool"
|
|
||||||
AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB"
|
|
||||||
OutputFile="$(OutDir)\zlibstat.lib"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="Debug|x64"
|
Name="Debug|x64"
|
||||||
OutputDirectory="x64\ZlibStat$(ConfigurationName)"
|
OutputDirectory="x64\ZlibStat$(ConfigurationName)"
|
||||||
@ -388,6 +241,80 @@
|
|||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory="x86\ZlibStat$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp"
|
||||||
|
ConfigurationType="4"
|
||||||
|
InheritedPropertySheets="UpgradeFromVC70.vsprops"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
InlineFunctionExpansion="1"
|
||||||
|
AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
|
||||||
|
PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF"
|
||||||
|
StringPooling="true"
|
||||||
|
ExceptionHandling="0"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
BufferSecurityCheck="false"
|
||||||
|
EnableFunctionLevelLinking="true"
|
||||||
|
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
|
||||||
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
|
ObjectFile="$(IntDir)\"
|
||||||
|
ProgramDataBaseFileName="$(OutDir)\"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
Culture="1036"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLibrarianTool"
|
||||||
|
AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB"
|
||||||
|
AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj "
|
||||||
|
OutputFile="$(OutDir)\zlibstat.lib"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="Release|x64"
|
Name="Release|x64"
|
||||||
OutputDirectory="x64\ZlibStat$(ConfigurationName)"
|
OutputDirectory="x64\ZlibStat$(ConfigurationName)"
|
||||||
@ -537,6 +464,79 @@
|
|||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="ReleaseWithoutAsm|Win32"
|
||||||
|
OutputDirectory="x86\ZlibStat$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp"
|
||||||
|
ConfigurationType="4"
|
||||||
|
InheritedPropertySheets="UpgradeFromVC70.vsprops"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
InlineFunctionExpansion="1"
|
||||||
|
AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
|
||||||
|
PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
|
||||||
|
StringPooling="true"
|
||||||
|
ExceptionHandling="0"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
BufferSecurityCheck="false"
|
||||||
|
EnableFunctionLevelLinking="true"
|
||||||
|
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
|
||||||
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
|
ObjectFile="$(IntDir)\"
|
||||||
|
ProgramDataBaseFileName="$(OutDir)\"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
Culture="1036"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLibrarianTool"
|
||||||
|
AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB"
|
||||||
|
OutputFile="$(OutDir)\zlibstat.lib"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="ReleaseWithoutAsm|x64"
|
Name="ReleaseWithoutAsm|x64"
|
||||||
OutputDirectory="x64\ZlibStat$(ConfigurationName)"
|
OutputDirectory="x64\ZlibStat$(ConfigurationName)"
|
||||||
@ -708,64 +708,12 @@
|
|||||||
RelativePath="..\..\..\deflate.c"
|
RelativePath="..\..\..\deflate.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\masmx86\gvmat32c.c"
|
|
||||||
>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|x64"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Itanium"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|x64"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Itanium"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="ReleaseWithoutAsm|x64"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="ReleaseWithoutAsm|Itanium"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\gzclose.c"
|
RelativePath="..\..\..\gzclose.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\gzio.c"
|
RelativePath="..\..\..\gzguts.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
@ -795,22 +743,6 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="ReleaseWithoutAsm|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Itanium"
|
Name="Debug|Itanium"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
@ -819,6 +751,14 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Itanium"
|
Name="Release|Itanium"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
@ -827,6 +767,14 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="ReleaseWithoutAsm|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="ReleaseWithoutAsm|Itanium"
|
Name="ReleaseWithoutAsm|Itanium"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
LIBRARY
|
||||||
|
; zlib data compression and ZIP file I/O library
|
||||||
|
|
||||||
VERSION 1.23
|
VERSION 1.24
|
||||||
|
|
||||||
HEAPSIZE 1048576,8192
|
|
||||||
|
|
||||||
EXPORTS
|
EXPORTS
|
||||||
adler32 @1
|
adler32 @1
|
||||||
@ -90,25 +90,47 @@ EXPORTS
|
|||||||
unzGoToFilePos @101
|
unzGoToFilePos @101
|
||||||
|
|
||||||
fill_win32_filefunc @110
|
fill_win32_filefunc @110
|
||||||
fill_win32_filefunc64 @111
|
|
||||||
fill_win32_filefunc64A @112
|
|
||||||
fill_win32_filefunc64W @113
|
|
||||||
|
|
||||||
; quick hack by hkuno@microhouse.co.jp
|
; zlibwapi v1.2.4 added:
|
||||||
unzOpen64 @120
|
fill_win32_filefunc64 @111
|
||||||
unzOpen2_64 @121
|
fill_win32_filefunc64A @112
|
||||||
unzGetGlobalInfo64 @122
|
fill_win32_filefunc64W @113
|
||||||
unzGetCurrentFileInfo64 @124
|
|
||||||
unzGetCurrentFileZStreamPos64 @125
|
|
||||||
unztell64 @126
|
|
||||||
unzGetFilePos64 @127
|
|
||||||
unzGoToFilePos64 @128
|
|
||||||
|
|
||||||
zipOpen64 @130
|
unzOpen64 @120
|
||||||
zipOpen2_64 @131
|
unzOpen2_64 @121
|
||||||
zipOpenNewFileInZip64 @132
|
unzGetGlobalInfo64 @122
|
||||||
zipOpenNewFileInZip2_64 @133
|
unzGetCurrentFileInfo64 @124
|
||||||
zipOpenNewFileInZip3_64 @134
|
unzGetCurrentFileZStreamPos64 @125
|
||||||
zipOpenNewFileInZip4_64 @135
|
unztell64 @126
|
||||||
zipCloseFileInZipRaw64 @136
|
unzGetFilePos64 @127
|
||||||
; end hack
|
unzGoToFilePos64 @128
|
||||||
|
|
||||||
|
zipOpen64 @130
|
||||||
|
zipOpen2_64 @131
|
||||||
|
zipOpenNewFileInZip64 @132
|
||||||
|
zipOpenNewFileInZip2_64 @133
|
||||||
|
zipOpenNewFileInZip3_64 @134
|
||||||
|
zipOpenNewFileInZip4_64 @135
|
||||||
|
zipCloseFileInZipRaw64 @136
|
||||||
|
|
||||||
|
; zlib1 v1.2.4 added:
|
||||||
|
adler32_combine @140
|
||||||
|
adler32_combine64 @141
|
||||||
|
crc32_combine @142
|
||||||
|
crc32_combine64 @143
|
||||||
|
deflateSetHeader @144
|
||||||
|
deflateTune @145
|
||||||
|
gzbuffer @146
|
||||||
|
gzclose_r @147
|
||||||
|
gzclose_w @148
|
||||||
|
gzdirect @149
|
||||||
|
gzoffset @150
|
||||||
|
gzoffset64 @151
|
||||||
|
gzopen64 @152
|
||||||
|
gzseek64 @153
|
||||||
|
gztell64 @154
|
||||||
|
inflateGetHeader @156
|
||||||
|
inflateMark @157
|
||||||
|
inflatePrime @158
|
||||||
|
inflateReset2 @159
|
||||||
|
inflateUndermine @160
|
||||||
|
@ -45,8 +45,8 @@ Global
|
|||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.Build.0 = Release|Itanium
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.Build.0 = Release|Itanium
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = ReleaseWithoutAsm|x64
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = Release|x64
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = ReleaseWithoutAsm|x64
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = Release|x64
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium
|
||||||
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
|
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
|
||||||
@ -103,8 +103,8 @@ Global
|
|||||||
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64
|
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
@ -119,8 +119,8 @@ Global
|
|||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
|
||||||
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium
|
{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Itanium
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.Build.0 = Debug|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.Build.0 = Debug|Itanium
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
@ -135,8 +135,8 @@ Global
|
|||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
|
||||||
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium
|
{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="9.00"
|
Version="9,00"
|
||||||
Name="zlibvc"
|
Name="zlibvc"
|
||||||
ProjectGUID="{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
|
ProjectGUID="{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
|
||||||
|
RootNamespace="zlibvc"
|
||||||
TargetFrameworkVersion="131072"
|
TargetFrameworkVersion="131072"
|
||||||
>
|
>
|
||||||
<Platforms>
|
<Platforms>
|
||||||
@ -80,7 +81,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalOptions="/MACHINE:I386"
|
AdditionalOptions="/MACHINE:I386"
|
||||||
AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj"
|
AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj"
|
||||||
OutputFile="$(OutDir)\zlibwapi.dll"
|
OutputFile="$(OutDir)\zlibwapi.dll"
|
||||||
LinkIncremental="2"
|
LinkIncremental="2"
|
||||||
SuppressStartupBanner="true"
|
SuppressStartupBanner="true"
|
||||||
@ -117,6 +118,195 @@
|
|||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|x64"
|
||||||
|
OutputDirectory="x64\ZlibDll$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp"
|
||||||
|
ConfigurationType="2"
|
||||||
|
InheritedPropertySheets="UpgradeFromVC70.vsprops"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
MkTypLibCompatible="true"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
TargetEnvironment="3"
|
||||||
|
TypeLibraryName="$(OutDir)/zlibvc.tlb"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
|
||||||
|
PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64"
|
||||||
|
ExceptionHandling="0"
|
||||||
|
RuntimeLibrary="3"
|
||||||
|
BufferSecurityCheck="false"
|
||||||
|
PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
|
||||||
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
|
ObjectFile="$(IntDir)\"
|
||||||
|
ProgramDataBaseFileName="$(OutDir)\"
|
||||||
|
BrowseInformation="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
Culture="1036"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
|
||||||
|
OutputFile="$(OutDir)\zlibwapi.dll"
|
||||||
|
LinkIncremental="2"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
GenerateManifest="false"
|
||||||
|
ModuleDefinitionFile=".\zlibvc.def"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
|
||||||
|
GenerateMapFile="true"
|
||||||
|
MapFileName="$(OutDir)/zlibwapi.map"
|
||||||
|
SubSystem="2"
|
||||||
|
ImportLibrary="$(OutDir)/zlibwapi.lib"
|
||||||
|
TargetMachine="17"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Itanium"
|
||||||
|
OutputDirectory="ia64\ZlibDll$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp"
|
||||||
|
ConfigurationType="2"
|
||||||
|
InheritedPropertySheets="UpgradeFromVC70.vsprops"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
MkTypLibCompatible="true"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
TargetEnvironment="2"
|
||||||
|
TypeLibraryName="$(OutDir)/zlibvc.tlb"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
|
||||||
|
PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
|
||||||
|
ExceptionHandling="0"
|
||||||
|
RuntimeLibrary="3"
|
||||||
|
BufferSecurityCheck="false"
|
||||||
|
PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
|
||||||
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
|
ObjectFile="$(IntDir)\"
|
||||||
|
ProgramDataBaseFileName="$(OutDir)\"
|
||||||
|
BrowseInformation="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
Culture="1036"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
OutputFile="$(OutDir)\zlibwapi.dll"
|
||||||
|
LinkIncremental="2"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
GenerateManifest="false"
|
||||||
|
ModuleDefinitionFile=".\zlibvc.def"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
|
||||||
|
GenerateMapFile="true"
|
||||||
|
MapFileName="$(OutDir)/zlibwapi.map"
|
||||||
|
SubSystem="2"
|
||||||
|
ImportLibrary="$(OutDir)/zlibwapi.lib"
|
||||||
|
TargetMachine="5"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="ReleaseWithoutAsm|Win32"
|
Name="ReleaseWithoutAsm|Win32"
|
||||||
OutputDirectory="x86\ZlibDll$(ConfigurationName)"
|
OutputDirectory="x86\ZlibDll$(ConfigurationName)"
|
||||||
@ -217,302 +407,6 @@
|
|||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="x86\ZlibDll$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp"
|
|
||||||
ConfigurationType="2"
|
|
||||||
InheritedPropertySheets="UpgradeFromVC70.vsprops"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
PreprocessorDefinitions="NDEBUG"
|
|
||||||
MkTypLibCompatible="true"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
TargetEnvironment="1"
|
|
||||||
TypeLibraryName="$(OutDir)/zlibvc.tlb"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
InlineFunctionExpansion="1"
|
|
||||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
|
|
||||||
PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF"
|
|
||||||
StringPooling="true"
|
|
||||||
ExceptionHandling="0"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
BufferSecurityCheck="false"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
|
|
||||||
AssemblerOutput="2"
|
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
|
||||||
ObjectFile="$(IntDir)\"
|
|
||||||
ProgramDataBaseFileName="$(OutDir)\"
|
|
||||||
BrowseInformation="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
PreprocessorDefinitions="NDEBUG"
|
|
||||||
Culture="1036"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalOptions="/MACHINE:I386"
|
|
||||||
AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj "
|
|
||||||
OutputFile="$(OutDir)\zlibwapi.dll"
|
|
||||||
LinkIncremental="1"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
GenerateManifest="false"
|
|
||||||
IgnoreAllDefaultLibraries="false"
|
|
||||||
ModuleDefinitionFile=".\zlibvc.def"
|
|
||||||
ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
|
|
||||||
GenerateMapFile="true"
|
|
||||||
MapFileName="$(OutDir)/zlibwapi.map"
|
|
||||||
SubSystem="2"
|
|
||||||
OptimizeForWindows98="1"
|
|
||||||
RandomizedBaseAddress="1"
|
|
||||||
DataExecutionPrevention="0"
|
|
||||||
ImportLibrary="$(OutDir)/zlibwapi.lib"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|x64"
|
|
||||||
OutputDirectory="x64\ZlibDll$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp"
|
|
||||||
ConfigurationType="2"
|
|
||||||
InheritedPropertySheets="UpgradeFromVC70.vsprops"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
PreprocessorDefinitions="_DEBUG"
|
|
||||||
MkTypLibCompatible="true"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
TargetEnvironment="3"
|
|
||||||
TypeLibraryName="$(OutDir)/zlibvc.tlb"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
|
|
||||||
PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64"
|
|
||||||
ExceptionHandling="0"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
BufferSecurityCheck="false"
|
|
||||||
PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
|
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
|
||||||
ObjectFile="$(IntDir)\"
|
|
||||||
ProgramDataBaseFileName="$(OutDir)\"
|
|
||||||
BrowseInformation="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
PreprocessorDefinitions="_DEBUG"
|
|
||||||
Culture="1036"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
|
|
||||||
OutputFile="$(OutDir)\zlibwapi.dll"
|
|
||||||
LinkIncremental="2"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
GenerateManifest="false"
|
|
||||||
ModuleDefinitionFile=".\zlibvc.def"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
|
|
||||||
GenerateMapFile="true"
|
|
||||||
MapFileName="$(OutDir)/zlibwapi.map"
|
|
||||||
SubSystem="2"
|
|
||||||
ImportLibrary="$(OutDir)/zlibwapi.lib"
|
|
||||||
TargetMachine="17"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Itanium"
|
|
||||||
OutputDirectory="ia64\ZlibDll$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp"
|
|
||||||
ConfigurationType="2"
|
|
||||||
InheritedPropertySheets="UpgradeFromVC70.vsprops"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
PreprocessorDefinitions="_DEBUG"
|
|
||||||
MkTypLibCompatible="true"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
TargetEnvironment="2"
|
|
||||||
TypeLibraryName="$(OutDir)/zlibvc.tlb"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
|
|
||||||
PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
|
|
||||||
ExceptionHandling="0"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
BufferSecurityCheck="false"
|
|
||||||
PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
|
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
|
||||||
ObjectFile="$(IntDir)\"
|
|
||||||
ProgramDataBaseFileName="$(OutDir)\"
|
|
||||||
BrowseInformation="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
PreprocessorDefinitions="_DEBUG"
|
|
||||||
Culture="1036"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
OutputFile="$(OutDir)\zlibwapi.dll"
|
|
||||||
LinkIncremental="2"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
GenerateManifest="false"
|
|
||||||
ModuleDefinitionFile=".\zlibvc.def"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
|
|
||||||
GenerateMapFile="true"
|
|
||||||
MapFileName="$(OutDir)/zlibwapi.map"
|
|
||||||
SubSystem="2"
|
|
||||||
ImportLibrary="$(OutDir)/zlibwapi.lib"
|
|
||||||
TargetMachine="5"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="ReleaseWithoutAsm|x64"
|
Name="ReleaseWithoutAsm|x64"
|
||||||
OutputDirectory="x64\ZlibDll$(ConfigurationName)"
|
OutputDirectory="x64\ZlibDll$(ConfigurationName)"
|
||||||
@ -607,9 +501,6 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCAppVerifierTool"
|
Name="VCAppVerifierTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
@ -709,7 +600,105 @@
|
|||||||
Name="VCAppVerifierTool"
|
Name="VCAppVerifierTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCWebDeploymentTool"
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory="x86\ZlibDll$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp"
|
||||||
|
ConfigurationType="2"
|
||||||
|
InheritedPropertySheets="UpgradeFromVC70.vsprops"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
PreprocessorDefinitions="NDEBUG"
|
||||||
|
MkTypLibCompatible="true"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
TargetEnvironment="1"
|
||||||
|
TypeLibraryName="$(OutDir)/zlibvc.tlb"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
InlineFunctionExpansion="1"
|
||||||
|
AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
|
||||||
|
PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF"
|
||||||
|
StringPooling="true"
|
||||||
|
ExceptionHandling="0"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
BufferSecurityCheck="false"
|
||||||
|
EnableFunctionLevelLinking="true"
|
||||||
|
PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
|
||||||
|
AssemblerOutput="2"
|
||||||
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
|
ObjectFile="$(IntDir)\"
|
||||||
|
ProgramDataBaseFileName="$(OutDir)\"
|
||||||
|
BrowseInformation="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="NDEBUG"
|
||||||
|
Culture="1036"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalOptions="/MACHINE:I386"
|
||||||
|
AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj "
|
||||||
|
OutputFile="$(OutDir)\zlibwapi.dll"
|
||||||
|
LinkIncremental="1"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
GenerateManifest="false"
|
||||||
|
IgnoreAllDefaultLibraries="false"
|
||||||
|
ModuleDefinitionFile=".\zlibvc.def"
|
||||||
|
ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
|
||||||
|
GenerateMapFile="true"
|
||||||
|
MapFileName="$(OutDir)/zlibwapi.map"
|
||||||
|
SubSystem="2"
|
||||||
|
OptimizeForWindows98="1"
|
||||||
|
RandomizedBaseAddress="1"
|
||||||
|
DataExecutionPrevention="0"
|
||||||
|
ImportLibrary="$(OutDir)/zlibwapi.lib"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
@ -810,9 +799,6 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCAppVerifierTool"
|
Name="VCAppVerifierTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
@ -911,9 +897,6 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCAppVerifierTool"
|
Name="VCAppVerifierTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
@ -942,72 +925,12 @@
|
|||||||
RelativePath="..\..\..\deflate.c"
|
RelativePath="..\..\..\deflate.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\masmx86\gvmat32c.c"
|
|
||||||
>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="ReleaseWithoutAsm|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|x64"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Itanium"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="ReleaseWithoutAsm|x64"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="ReleaseWithoutAsm|Itanium"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|x64"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Itanium"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\gzclose.c"
|
RelativePath="..\..\..\gzclose.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\gzio.c"
|
RelativePath="..\..\..\gzguts.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
@ -1037,22 +960,6 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
|
||||||
Name="ReleaseWithoutAsm|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Itanium"
|
Name="Debug|Itanium"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
@ -1061,6 +968,14 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="ReleaseWithoutAsm|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="ReleaseWithoutAsm|Itanium"
|
Name="ReleaseWithoutAsm|Itanium"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
@ -1069,6 +984,14 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Itanium"
|
Name="Release|Itanium"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
|
12
deflate.c
12
deflate.c
@ -52,7 +52,7 @@
|
|||||||
#include "deflate.h"
|
#include "deflate.h"
|
||||||
|
|
||||||
const char deflate_copyright[] =
|
const char deflate_copyright[] =
|
||||||
" deflate 1.2.3.9 Copyright 1995-2010 Jean-loup Gailly and Mark Adler ";
|
" deflate 1.2.4 Copyright 1995-2010 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
|
||||||
@ -1433,21 +1433,21 @@ local void fill_window(s)
|
|||||||
* Flush the current block, with given end-of-file flag.
|
* Flush the current block, with given end-of-file flag.
|
||||||
* IN assertion: strstart is set to the end of the current match.
|
* IN assertion: strstart is set to the end of the current match.
|
||||||
*/
|
*/
|
||||||
#define FLUSH_BLOCK_ONLY(s, eof) { \
|
#define FLUSH_BLOCK_ONLY(s, last) { \
|
||||||
_tr_flush_block(s, (s->block_start >= 0L ? \
|
_tr_flush_block(s, (s->block_start >= 0L ? \
|
||||||
(charf *)&s->window[(unsigned)s->block_start] : \
|
(charf *)&s->window[(unsigned)s->block_start] : \
|
||||||
(charf *)Z_NULL), \
|
(charf *)Z_NULL), \
|
||||||
(ulg)((long)s->strstart - s->block_start), \
|
(ulg)((long)s->strstart - s->block_start), \
|
||||||
(eof)); \
|
(last)); \
|
||||||
s->block_start = s->strstart; \
|
s->block_start = s->strstart; \
|
||||||
flush_pending(s->strm); \
|
flush_pending(s->strm); \
|
||||||
Tracev((stderr,"[FLUSH]")); \
|
Tracev((stderr,"[FLUSH]")); \
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Same but force premature exit if necessary. */
|
/* Same but force premature exit if necessary. */
|
||||||
#define FLUSH_BLOCK(s, eof) { \
|
#define FLUSH_BLOCK(s, last) { \
|
||||||
FLUSH_BLOCK_ONLY(s, eof); \
|
FLUSH_BLOCK_ONLY(s, last); \
|
||||||
if (s->strm->avail_out == 0) return (eof) ? finish_started : need_more; \
|
if (s->strm->avail_out == 0) return (last) ? finish_started : need_more; \
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
|
@ -293,10 +293,10 @@ typedef struct internal_state {
|
|||||||
void _tr_init OF((deflate_state *s));
|
void _tr_init OF((deflate_state *s));
|
||||||
int _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
|
int _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
|
||||||
void _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len,
|
void _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len,
|
||||||
int eof));
|
int last));
|
||||||
void _tr_align OF((deflate_state *s));
|
void _tr_align OF((deflate_state *s));
|
||||||
void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
|
void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
|
||||||
int eof));
|
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)])
|
||||||
|
19
gzlib.c
19
gzlib.c
@ -147,6 +147,14 @@ local gzFile gz_open(path, fd, mode)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* save the path name for error messages */
|
||||||
|
state->path = malloc(strlen(path) + 1);
|
||||||
|
if (state->path == NULL) {
|
||||||
|
free(state);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
strcpy(state->path, path);
|
||||||
|
|
||||||
/* open the file with the appropriate mode (or just use fd) */
|
/* open the file with the appropriate mode (or just use fd) */
|
||||||
state->fd = fd != -1 ? fd :
|
state->fd = fd != -1 ? fd :
|
||||||
open(path,
|
open(path,
|
||||||
@ -170,14 +178,6 @@ local gzFile gz_open(path, fd, mode)
|
|||||||
if (state->mode == GZ_APPEND)
|
if (state->mode == GZ_APPEND)
|
||||||
state->mode = GZ_WRITE; /* simplify later checks */
|
state->mode = GZ_WRITE; /* simplify later checks */
|
||||||
|
|
||||||
/* save the path name for error messages */
|
|
||||||
state->path = malloc(strlen(path) + 1);
|
|
||||||
if (state->path == NULL) {
|
|
||||||
free(state);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
strcpy(state->path, path);
|
|
||||||
|
|
||||||
/* save the current position for rewinding (only if reading) */
|
/* save the current position for rewinding (only if reading) */
|
||||||
if (state->mode == GZ_READ) {
|
if (state->mode == GZ_READ) {
|
||||||
state->start = LSEEK(state->fd, 0, SEEK_CUR);
|
state->start = LSEEK(state->fd, 0, SEEK_CUR);
|
||||||
@ -450,7 +450,8 @@ const char * ZEXPORT gzerror(file, errnum)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* return error information */
|
/* return error information */
|
||||||
*errnum = state->err;
|
if (errnum != NULL)
|
||||||
|
*errnum = state->err;
|
||||||
return state->msg == NULL ? "" : state->msg;
|
return state->msg == NULL ? "" : state->msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1
gzread.c
1
gzread.c
@ -645,6 +645,7 @@ int ZEXPORT gzclose_r(file)
|
|||||||
free(state->in);
|
free(state->in);
|
||||||
}
|
}
|
||||||
gz_error(state, Z_OK, NULL);
|
gz_error(state, Z_OK, NULL);
|
||||||
|
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 : Z_OK;
|
||||||
|
@ -523,8 +523,9 @@ int ZEXPORT gzclose_w(file)
|
|||||||
(void)deflateEnd(&(state->strm));
|
(void)deflateEnd(&(state->strm));
|
||||||
free(state->out);
|
free(state->out);
|
||||||
free(state->in);
|
free(state->in);
|
||||||
ret += close(state->fd);
|
|
||||||
gz_error(state, Z_OK, NULL);
|
gz_error(state, Z_OK, NULL);
|
||||||
|
free(state->path);
|
||||||
|
ret += close(state->fd);
|
||||||
free(state);
|
free(state);
|
||||||
return ret ? Z_ERRNO : Z_OK;
|
return ret ? Z_ERRNO : Z_OK;
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#define MAXBITS 15
|
#define MAXBITS 15
|
||||||
|
|
||||||
const char inflate_copyright[] =
|
const char inflate_copyright[] =
|
||||||
" inflate 1.2.3.9 Copyright 1995-2010 Mark Adler ";
|
" inflate 1.2.4 Copyright 1995-2010 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
|
||||||
@ -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, 193, 201};
|
19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 66, 199};
|
||||||
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,
|
||||||
|
11
make_vms.com
11
make_vms.com
@ -13,8 +13,10 @@ $! 0.01 20060120 First version to receive a number
|
|||||||
$! 0.02 20061008 Adapt to new Makefile.in
|
$! 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
|
||||||
$!
|
$!
|
||||||
$ on error then goto err_exit
|
$ on error then goto err_exit
|
||||||
|
$ set proc/parse=ext
|
||||||
$!
|
$!
|
||||||
$ true = 1
|
$ true = 1
|
||||||
$ false = 0
|
$ false = 0
|
||||||
@ -38,7 +40,7 @@ $ v_file = "zlib.h"
|
|||||||
$ ccopt = ""
|
$ ccopt = ""
|
||||||
$ lopts = ""
|
$ lopts = ""
|
||||||
$ dnsrl = ""
|
$ dnsrl = ""
|
||||||
$ aconf_in_file = "config.hin"
|
$ aconf_in_file = "zconf.h.in#zconf.h_in"
|
||||||
$ conf_check_string = ""
|
$ conf_check_string = ""
|
||||||
$ linkonly = false
|
$ linkonly = false
|
||||||
$ optfile = name + ".opt"
|
$ optfile = name + ".opt"
|
||||||
@ -104,13 +106,16 @@ $ i = i + 1
|
|||||||
$ goto find_aconf
|
$ goto find_aconf
|
||||||
$ endif
|
$ endif
|
||||||
$ open/read/err=aconf_err aconf_in 'fname'
|
$ open/read/err=aconf_err aconf_in 'fname'
|
||||||
$ open/write aconf zlibdefs.h
|
$ open/write aconf zconf.h
|
||||||
$ACONF_LOOP:
|
$ACONF_LOOP:
|
||||||
$ read/end_of_file=aconf_exit aconf_in line
|
$ read/end_of_file=aconf_exit aconf_in line
|
||||||
$ work = f$edit(line, "compress,trim")
|
$ work = f$edit(line, "compress,trim")
|
||||||
$ if f$extract(0,6,work) .nes. "#undef"
|
$ if f$extract(0,6,work) .nes. "#undef"
|
||||||
$ then
|
$ then
|
||||||
$ write aconf line
|
$ if f$extract(0,12,work) .nes. "#cmakedefine"
|
||||||
|
$ then
|
||||||
|
$ write aconf line
|
||||||
|
$ endif
|
||||||
$ else
|
$ else
|
||||||
$ cdef = f$element(1," ",work)
|
$ cdef = f$element(1," ",work)
|
||||||
$ gosub check_config
|
$ gosub check_config
|
||||||
|
61
minigzip.c
61
minigzip.c
@ -262,6 +262,11 @@ void file_compress(file, mode)
|
|||||||
FILE *in;
|
FILE *in;
|
||||||
gzFile out;
|
gzFile out;
|
||||||
|
|
||||||
|
if (strlen(file) + strlen(GZ_SUFFIX) >= sizeof(outfile)) {
|
||||||
|
fprintf(stderr, "%s: filename too long\n", prog);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
strcpy(outfile, file);
|
strcpy(outfile, file);
|
||||||
strcat(outfile, GZ_SUFFIX);
|
strcat(outfile, GZ_SUFFIX);
|
||||||
|
|
||||||
@ -291,7 +296,12 @@ void file_uncompress(file)
|
|||||||
char *infile, *outfile;
|
char *infile, *outfile;
|
||||||
FILE *out;
|
FILE *out;
|
||||||
gzFile in;
|
gzFile in;
|
||||||
uInt len = (uInt)strlen(file);
|
size_t len = strlen(file);
|
||||||
|
|
||||||
|
if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) {
|
||||||
|
fprintf(stderr, "%s: filename too long\n", prog);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
strcpy(buf, file);
|
strcpy(buf, file);
|
||||||
|
|
||||||
@ -322,7 +332,8 @@ void file_uncompress(file)
|
|||||||
|
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
* Usage: minigzip [-d] [-f] [-h] [-r] [-1 to -9] [files...]
|
* Usage: minigzip [-c] [-d] [-f] [-h] [-r] [-1 to -9] [files...]
|
||||||
|
* -c : write to standard output
|
||||||
* -d : decompress
|
* -d : decompress
|
||||||
* -f : compress with Z_FILTERED
|
* -f : compress with Z_FILTERED
|
||||||
* -h : compress with Z_HUFFMAN_ONLY
|
* -h : compress with Z_HUFFMAN_ONLY
|
||||||
@ -334,17 +345,30 @@ int main(argc, argv)
|
|||||||
int argc;
|
int argc;
|
||||||
char *argv[];
|
char *argv[];
|
||||||
{
|
{
|
||||||
|
int copyout = 0;
|
||||||
int uncompr = 0;
|
int uncompr = 0;
|
||||||
gzFile file;
|
gzFile file;
|
||||||
char outmode[20];
|
char *bname, outmode[20];
|
||||||
|
|
||||||
strcpy(outmode, "wb6 ");
|
strcpy(outmode, "wb6 ");
|
||||||
|
|
||||||
prog = argv[0];
|
prog = argv[0];
|
||||||
|
bname = strrchr(argv[0], '/');
|
||||||
|
if (bname)
|
||||||
|
bname++;
|
||||||
|
else
|
||||||
|
bname = argv[0];
|
||||||
argc--, argv++;
|
argc--, argv++;
|
||||||
|
|
||||||
|
if (!strcmp(bname, "gunzip"))
|
||||||
|
uncompr = 1;
|
||||||
|
else if (!strcmp(bname, "zcat"))
|
||||||
|
copyout = uncompr = 1;
|
||||||
|
|
||||||
while (argc > 0) {
|
while (argc > 0) {
|
||||||
if (strcmp(*argv, "-d") == 0)
|
if (strcmp(*argv, "-c") == 0)
|
||||||
|
copyout = 1;
|
||||||
|
else if (strcmp(*argv, "-d") == 0)
|
||||||
uncompr = 1;
|
uncompr = 1;
|
||||||
else if (strcmp(*argv, "-f") == 0)
|
else if (strcmp(*argv, "-f") == 0)
|
||||||
outmode[3] = 'f';
|
outmode[3] = 'f';
|
||||||
@ -374,11 +398,36 @@ int main(argc, argv)
|
|||||||
gz_compress(stdin, file);
|
gz_compress(stdin, file);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (copyout) {
|
||||||
|
SET_BINARY_MODE(stdout);
|
||||||
|
}
|
||||||
do {
|
do {
|
||||||
if (uncompr) {
|
if (uncompr) {
|
||||||
file_uncompress(*argv);
|
if (copyout) {
|
||||||
|
file = gzopen(*argv, "rb");
|
||||||
|
if (file == NULL)
|
||||||
|
fprintf(stderr, "%s: can't gzopen %s\n", prog, *argv);
|
||||||
|
else
|
||||||
|
gz_uncompress(file, stdout);
|
||||||
|
} else {
|
||||||
|
file_uncompress(*argv);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
file_compress(*argv, outmode);
|
if (copyout) {
|
||||||
|
FILE * in = fopen(*argv, "rb");
|
||||||
|
|
||||||
|
if (in == NULL) {
|
||||||
|
perror(*argv);
|
||||||
|
} else {
|
||||||
|
file = gzdopen(fileno(stdout), outmode);
|
||||||
|
if (file == NULL) error("can't gzdopen stdout");
|
||||||
|
|
||||||
|
gz_compress(in, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
file_compress(*argv, outmode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} while (argv++, --argc);
|
} while (argv++, --argc);
|
||||||
}
|
}
|
||||||
|
@ -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.3.9" install="/opt/lib/" user="root:bin" permission="644"/>
|
<QPG:Add file="../libz.so.1.2.4" 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.3.9"/>
|
<QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.4"/>
|
||||||
<QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.3.9"/>
|
<QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.4"/>
|
||||||
<QPG:Add file="../libz.so.1.2.3.9" install="/opt/lib/" component="slib"/>
|
<QPG:Add file="../libz.so.1.2.4" 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.3.9</QPM:ReleaseVersion>
|
<QPM:ReleaseVersion>1.2.4</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,6 +1,6 @@
|
|||||||
<?xml version="1.0" ?>
|
<?xml version="1.0" ?>
|
||||||
<package name="zlib" version="1.2.3">
|
<package name="zlib" version="1.2.4">
|
||||||
<library name="zlib" dlversion="1.2.3" dlname="z">
|
<library name="zlib" dlversion="1.2.4" 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)" />
|
||||||
|
|
||||||
|
20
trees.c
20
trees.c
@ -867,13 +867,13 @@ 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, eof)
|
void _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 */
|
||||||
int eof; /* true if this is the last block for a file */
|
int last; /* one if this is the last block for a file */
|
||||||
{
|
{
|
||||||
send_bits(s, (STORED_BLOCK<<1)+eof, 3); /* send block type */
|
send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
|
s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
|
||||||
s->compressed_len += (stored_len + 4) << 3;
|
s->compressed_len += (stored_len + 4) << 3;
|
||||||
@ -921,11 +921,11 @@ void _tr_align(s)
|
|||||||
* 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, eof)
|
void _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 */
|
||||||
int eof; /* true if this is the last block for a file */
|
int last; /* one if this is the last block for a file */
|
||||||
{
|
{
|
||||||
ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
|
ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
|
||||||
int max_blindex = 0; /* index of last bit length code of non zero freq */
|
int max_blindex = 0; /* index of last bit length code of non zero freq */
|
||||||
@ -981,20 +981,20 @@ void _tr_flush_block(s, buf, stored_len, eof)
|
|||||||
* successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
|
* successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
|
||||||
* transform a block into a stored block.
|
* transform a block into a stored block.
|
||||||
*/
|
*/
|
||||||
_tr_stored_block(s, buf, stored_len, eof);
|
_tr_stored_block(s, buf, stored_len, last);
|
||||||
|
|
||||||
#ifdef FORCE_STATIC
|
#ifdef FORCE_STATIC
|
||||||
} else if (static_lenb >= 0) { /* force static trees */
|
} else if (static_lenb >= 0) { /* force static trees */
|
||||||
#else
|
#else
|
||||||
} else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) {
|
} else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) {
|
||||||
#endif
|
#endif
|
||||||
send_bits(s, (STATIC_TREES<<1)+eof, 3);
|
send_bits(s, (STATIC_TREES<<1)+last, 3);
|
||||||
compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree);
|
compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
s->compressed_len += 3 + s->static_len;
|
s->compressed_len += 3 + s->static_len;
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
send_bits(s, (DYN_TREES<<1)+eof, 3);
|
send_bits(s, (DYN_TREES<<1)+last, 3);
|
||||||
send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
|
send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
|
||||||
max_blindex+1);
|
max_blindex+1);
|
||||||
compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree);
|
compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree);
|
||||||
@ -1008,14 +1008,14 @@ void _tr_flush_block(s, buf, stored_len, eof)
|
|||||||
*/
|
*/
|
||||||
init_block(s);
|
init_block(s);
|
||||||
|
|
||||||
if (eof) {
|
if (last) {
|
||||||
bi_windup(s);
|
bi_windup(s);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
s->compressed_len += 7; /* align on byte boundary */
|
s->compressed_len += 7; /* align on byte boundary */
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
|
Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
|
||||||
s->compressed_len-7*eof));
|
s->compressed_len-7*last));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
STATICLIB = libz.a
|
STATICLIB = libz.a
|
||||||
SHAREDLIB = zlib1.dll
|
SHAREDLIB = zlib1.dll
|
||||||
IMPLIB = libz.dll.a
|
IMPLIB = libzdll.a
|
||||||
|
|
||||||
#LOC = -DASMV
|
#LOC = -DASMV
|
||||||
#LOC = -DDEBUG -g
|
#LOC = -DDEBUG -g
|
||||||
|
@ -21,10 +21,10 @@ AS = ml
|
|||||||
LD = link
|
LD = link
|
||||||
AR = lib
|
AR = lib
|
||||||
RC = rc
|
RC = rc
|
||||||
CFLAGS = -nologo -MD -O2 -Oy- $(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
|
ASFLAGS = -coff -Zi
|
||||||
LDFLAGS = -nologo -debug -release
|
LDFLAGS = -nologo -debug -incremental:no -opt:ref
|
||||||
ARFLAGS = -nologo
|
ARFLAGS = -nologo
|
||||||
RCFLAGS = /dWIN32 /r
|
RCFLAGS = /dWIN32 /r
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ $(IMPLIB): $(SHAREDLIB)
|
|||||||
|
|
||||||
$(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlib1.res
|
$(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlib1.res
|
||||||
$(LD) $(LDFLAGS) -def:win32/zlib.def -dll -implib:$(IMPLIB) \
|
$(LD) $(LDFLAGS) -def:win32/zlib.def -dll -implib:$(IMPLIB) \
|
||||||
-out:$@ $(OBJS) $(OBJA) zlib1.res
|
-out:$@ -base:0x5A4C0000 $(OBJS) $(OBJA) zlib1.res
|
||||||
if exist $@.manifest \
|
if exist $@.manifest \
|
||||||
mt -nologo -manifest $@.manifest -outputresource:$@;2
|
mt -nologo -manifest $@.manifest -outputresource:$@;2
|
||||||
|
|
||||||
|
416
zconf.h
Normal file
416
zconf.h
Normal file
@ -0,0 +1,416 @@
|
|||||||
|
/* zconf.h -- configuration of the zlib compression library
|
||||||
|
* Copyright (C) 1995-2010 Jean-loup Gailly.
|
||||||
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* @(#) $Id$ */
|
||||||
|
|
||||||
|
#ifndef ZCONF_H
|
||||||
|
#define ZCONF_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If you *really* need a unique prefix for all types and library functions,
|
||||||
|
* compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
|
||||||
|
* Even better than compiling with -DZ_PREFIX would be to use configure to set
|
||||||
|
* this permanently in zconf.h using "./configure --zprefix".
|
||||||
|
*/
|
||||||
|
#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */
|
||||||
|
|
||||||
|
/* all linked symbols */
|
||||||
|
# define _dist_code z__dist_code
|
||||||
|
# define _length_code z__length_code
|
||||||
|
# define _tr_align z__tr_align
|
||||||
|
# define _tr_flush_block z__tr_flush_block
|
||||||
|
# define _tr_init z__tr_init
|
||||||
|
# define _tr_stored_block z__tr_stored_block
|
||||||
|
# define _tr_tally z__tr_tally
|
||||||
|
# define adler32 z_adler32
|
||||||
|
# define adler32_combine z_adler32_combine
|
||||||
|
# define adler32_combine64 z_adler32_combine64
|
||||||
|
# define compress z_compress
|
||||||
|
# define compress2 z_compress2
|
||||||
|
# define compressBound z_compressBound
|
||||||
|
# define crc32 z_crc32
|
||||||
|
# define crc32_combine z_crc32_combine
|
||||||
|
# define crc32_combine64 z_crc32_combine64
|
||||||
|
# define deflate z_deflate
|
||||||
|
# define deflateBound z_deflateBound
|
||||||
|
# define deflateCopy z_deflateCopy
|
||||||
|
# define deflateEnd z_deflateEnd
|
||||||
|
# define deflateInit2_ z_deflateInit2_
|
||||||
|
# define deflateInit_ z_deflateInit_
|
||||||
|
# define deflateParams z_deflateParams
|
||||||
|
# define deflatePrime z_deflatePrime
|
||||||
|
# define deflateReset z_deflateReset
|
||||||
|
# define deflateSetDictionary z_deflateSetDictionary
|
||||||
|
# define deflateSetHeader z_deflateSetHeader
|
||||||
|
# define deflateTune z_deflateTune
|
||||||
|
# define deflate_copyright z_deflate_copyright
|
||||||
|
# define get_crc_table z_get_crc_table
|
||||||
|
# define gz_error z_gz_error
|
||||||
|
# define gz_intmax z_gz_intmax
|
||||||
|
# define gz_strwinerror z_gz_strwinerror
|
||||||
|
# define gzbuffer z_gzbuffer
|
||||||
|
# define gzclearerr z_gzclearerr
|
||||||
|
# define gzclose z_gzclose
|
||||||
|
# define gzclose_r z_gzclose_r
|
||||||
|
# define gzclose_w z_gzclose_w
|
||||||
|
# define gzdirect z_gzdirect
|
||||||
|
# define gzdopen z_gzdopen
|
||||||
|
# define gzeof z_gzeof
|
||||||
|
# define gzerror z_gzerror
|
||||||
|
# define gzflush z_gzflush
|
||||||
|
# define gzgetc z_gzgetc
|
||||||
|
# define gzgets z_gzgets
|
||||||
|
# define gzoffset z_gzoffset
|
||||||
|
# define gzoffset64 z_gzoffset64
|
||||||
|
# define gzopen z_gzopen
|
||||||
|
# define gzopen64 z_gzopen64
|
||||||
|
# define gzprintf z_gzprintf
|
||||||
|
# define gzputc z_gzputc
|
||||||
|
# define gzputs z_gzputs
|
||||||
|
# define gzread z_gzread
|
||||||
|
# define gzrewind z_gzrewind
|
||||||
|
# define gzseek z_gzseek
|
||||||
|
# define gzseek64 z_gzseek64
|
||||||
|
# define gzsetparams z_gzsetparams
|
||||||
|
# define gztell z_gztell
|
||||||
|
# define gztell64 z_gztell64
|
||||||
|
# define gzungetc z_gzungetc
|
||||||
|
# define gzwrite z_gzwrite
|
||||||
|
# define inflate z_inflate
|
||||||
|
# define inflateBack z_inflateBack
|
||||||
|
# define inflateBackEnd z_inflateBackEnd
|
||||||
|
# define inflateBackInit_ z_inflateBackInit_
|
||||||
|
# define inflateCopy z_inflateCopy
|
||||||
|
# define inflateEnd z_inflateEnd
|
||||||
|
# define inflateGetHeader z_inflateGetHeader
|
||||||
|
# define inflateInit2_ z_inflateInit2_
|
||||||
|
# define inflateInit_ z_inflateInit_
|
||||||
|
# define inflateMark z_inflateMark
|
||||||
|
# define inflatePrime z_inflatePrime
|
||||||
|
# define inflateReset z_inflateReset
|
||||||
|
# define inflateReset2 z_inflateReset2
|
||||||
|
# define inflateSetDictionary z_inflateSetDictionary
|
||||||
|
# define inflateSync z_inflateSync
|
||||||
|
# define inflateSyncPoint z_inflateSyncPoint
|
||||||
|
# define inflateUndermine z_inflateUndermine
|
||||||
|
# define inflate_copyright z_inflate_copyright
|
||||||
|
# define inflate_fast z_inflate_fast
|
||||||
|
# define inflate_table z_inflate_table
|
||||||
|
# define uncompress z_uncompress
|
||||||
|
# define zError z_zError
|
||||||
|
# define zcalloc z_zcalloc
|
||||||
|
# define zcfree z_zcfree
|
||||||
|
# define zlibCompileFlags z_zlibCompileFlags
|
||||||
|
# define zlibVersion z_zlibVersion
|
||||||
|
|
||||||
|
/* all zlib typedefs in zlib.h and zconf.h */
|
||||||
|
# define Byte z_Byte
|
||||||
|
# define Bytef z_Bytef
|
||||||
|
# define alloc_func z_alloc_func
|
||||||
|
# define charf z_charf
|
||||||
|
# define free_func z_free_func
|
||||||
|
# define gzFile z_gzFile
|
||||||
|
# define gz_header z_gz_header
|
||||||
|
# define gz_headerp z_gz_headerp
|
||||||
|
# define in_func z_in_func
|
||||||
|
# define intf z_intf
|
||||||
|
# define out_func z_out_func
|
||||||
|
# define uInt z_uInt
|
||||||
|
# define uIntf z_uIntf
|
||||||
|
# define uLong z_uLong
|
||||||
|
# define uLongf z_uLongf
|
||||||
|
# define voidp z_voidp
|
||||||
|
# define voidpc z_voidpc
|
||||||
|
# define voidpf z_voidpf
|
||||||
|
|
||||||
|
/* all zlib structs in zlib.h and zconf.h */
|
||||||
|
# define gz_header_s z_gz_header_s
|
||||||
|
# define internal_state z_internal_state
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__MSDOS__) && !defined(MSDOS)
|
||||||
|
# define MSDOS
|
||||||
|
#endif
|
||||||
|
#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
|
||||||
|
# define OS2
|
||||||
|
#endif
|
||||||
|
#if defined(_WINDOWS) && !defined(WINDOWS)
|
||||||
|
# define WINDOWS
|
||||||
|
#endif
|
||||||
|
#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
|
||||||
|
# ifndef WIN32
|
||||||
|
# define WIN32
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
|
||||||
|
# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
|
||||||
|
# ifndef SYS16BIT
|
||||||
|
# define SYS16BIT
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compile with -DMAXSEG_64K if the alloc function cannot allocate more
|
||||||
|
* than 64k bytes at a time (needed on systems with 16-bit int).
|
||||||
|
*/
|
||||||
|
#ifdef SYS16BIT
|
||||||
|
# define MAXSEG_64K
|
||||||
|
#endif
|
||||||
|
#ifdef MSDOS
|
||||||
|
# define UNALIGNED_OK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __STDC_VERSION__
|
||||||
|
# ifndef STDC
|
||||||
|
# define STDC
|
||||||
|
# endif
|
||||||
|
# if __STDC_VERSION__ >= 199901L
|
||||||
|
# ifndef STDC99
|
||||||
|
# define STDC99
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
|
||||||
|
# define STDC
|
||||||
|
#endif
|
||||||
|
#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
|
||||||
|
# define STDC
|
||||||
|
#endif
|
||||||
|
#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
|
||||||
|
# define STDC
|
||||||
|
#endif
|
||||||
|
#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
|
||||||
|
# define STDC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */
|
||||||
|
# define STDC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef STDC
|
||||||
|
# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
|
||||||
|
# define const /* note: need a more gentle solution here */
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Some Mac compilers merge all .h files incorrectly: */
|
||||||
|
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
|
||||||
|
# define NO_DUMMY_DECL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Maximum value for memLevel in deflateInit2 */
|
||||||
|
#ifndef MAX_MEM_LEVEL
|
||||||
|
# ifdef MAXSEG_64K
|
||||||
|
# define MAX_MEM_LEVEL 8
|
||||||
|
# else
|
||||||
|
# define MAX_MEM_LEVEL 9
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Maximum value for windowBits in deflateInit2 and inflateInit2.
|
||||||
|
* WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
|
||||||
|
* created by gzip. (Files created by minigzip can still be extracted by
|
||||||
|
* gzip.)
|
||||||
|
*/
|
||||||
|
#ifndef MAX_WBITS
|
||||||
|
# define MAX_WBITS 15 /* 32K LZ77 window */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The memory requirements for deflate are (in bytes):
|
||||||
|
(1 << (windowBits+2)) + (1 << (memLevel+9))
|
||||||
|
that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
|
||||||
|
plus a few kilobytes for small objects. For example, if you want to reduce
|
||||||
|
the default memory requirements from 256K to 128K, compile with
|
||||||
|
make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
|
||||||
|
Of course this will generally degrade compression (there's no free lunch).
|
||||||
|
|
||||||
|
The memory requirements for inflate are (in bytes) 1 << windowBits
|
||||||
|
that is, 32K for windowBits=15 (default value) plus a few kilobytes
|
||||||
|
for small objects.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Type declarations */
|
||||||
|
|
||||||
|
#ifndef OF /* function prototypes */
|
||||||
|
# ifdef STDC
|
||||||
|
# define OF(args) args
|
||||||
|
# else
|
||||||
|
# define OF(args) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The following definitions for FAR are needed only for MSDOS mixed
|
||||||
|
* model programming (small or medium model with some far allocations).
|
||||||
|
* This was tested only with MSC; for other MSDOS compilers you may have
|
||||||
|
* to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
|
||||||
|
* just define FAR to be empty.
|
||||||
|
*/
|
||||||
|
#ifdef SYS16BIT
|
||||||
|
# if defined(M_I86SM) || defined(M_I86MM)
|
||||||
|
/* MSC small or medium model */
|
||||||
|
# define SMALL_MEDIUM
|
||||||
|
# ifdef _MSC_VER
|
||||||
|
# define FAR _far
|
||||||
|
# else
|
||||||
|
# define FAR far
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# if (defined(__SMALL__) || defined(__MEDIUM__))
|
||||||
|
/* Turbo C small or medium model */
|
||||||
|
# define SMALL_MEDIUM
|
||||||
|
# ifdef __BORLANDC__
|
||||||
|
# define FAR _far
|
||||||
|
# else
|
||||||
|
# define FAR far
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WINDOWS) || defined(WIN32)
|
||||||
|
/* If building or using zlib as a DLL, define ZLIB_DLL.
|
||||||
|
* This is not mandatory, but it offers a little performance increase.
|
||||||
|
*/
|
||||||
|
# ifdef ZLIB_DLL
|
||||||
|
# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
|
||||||
|
# ifdef ZLIB_INTERNAL
|
||||||
|
# define ZEXTERN extern __declspec(dllexport)
|
||||||
|
# else
|
||||||
|
# define ZEXTERN extern __declspec(dllimport)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif /* ZLIB_DLL */
|
||||||
|
/* If building or using zlib with the WINAPI/WINAPIV calling convention,
|
||||||
|
* define ZLIB_WINAPI.
|
||||||
|
* Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
|
||||||
|
*/
|
||||||
|
# ifdef ZLIB_WINAPI
|
||||||
|
# ifdef FAR
|
||||||
|
# undef FAR
|
||||||
|
# endif
|
||||||
|
# include <windows.h>
|
||||||
|
/* No need for _export, use ZLIB.DEF instead. */
|
||||||
|
/* For complete Windows compatibility, use WINAPI, not __stdcall. */
|
||||||
|
# define ZEXPORT WINAPI
|
||||||
|
# ifdef WIN32
|
||||||
|
# define ZEXPORTVA WINAPIV
|
||||||
|
# else
|
||||||
|
# define ZEXPORTVA FAR CDECL
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (__BEOS__)
|
||||||
|
# ifdef ZLIB_DLL
|
||||||
|
# ifdef ZLIB_INTERNAL
|
||||||
|
# define ZEXPORT __declspec(dllexport)
|
||||||
|
# define ZEXPORTVA __declspec(dllexport)
|
||||||
|
# else
|
||||||
|
# define ZEXPORT __declspec(dllimport)
|
||||||
|
# define ZEXPORTVA __declspec(dllimport)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_VISIBILITY_PRAGMA
|
||||||
|
# define ZEXTERN __attribute__((visibility ("default"))) extern
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ZEXTERN
|
||||||
|
# define ZEXTERN extern
|
||||||
|
#endif
|
||||||
|
#ifndef ZEXPORT
|
||||||
|
# define ZEXPORT
|
||||||
|
#endif
|
||||||
|
#ifndef ZEXPORTVA
|
||||||
|
# define ZEXPORTVA
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef FAR
|
||||||
|
# define FAR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(__MACTYPES__)
|
||||||
|
typedef unsigned char Byte; /* 8 bits */
|
||||||
|
#endif
|
||||||
|
typedef unsigned int uInt; /* 16 bits or more */
|
||||||
|
typedef unsigned long uLong; /* 32 bits or more */
|
||||||
|
|
||||||
|
#ifdef SMALL_MEDIUM
|
||||||
|
/* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
|
||||||
|
# define Bytef Byte FAR
|
||||||
|
#else
|
||||||
|
typedef Byte FAR Bytef;
|
||||||
|
#endif
|
||||||
|
typedef char FAR charf;
|
||||||
|
typedef int FAR intf;
|
||||||
|
typedef uInt FAR uIntf;
|
||||||
|
typedef uLong FAR uLongf;
|
||||||
|
|
||||||
|
#ifdef STDC
|
||||||
|
typedef void const *voidpc;
|
||||||
|
typedef void FAR *voidpf;
|
||||||
|
typedef void *voidp;
|
||||||
|
#else
|
||||||
|
typedef Byte const *voidpc;
|
||||||
|
typedef Byte FAR *voidpf;
|
||||||
|
typedef Byte *voidp;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */
|
||||||
|
# define Z_HAVE_UNISTD_H
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef Z_HAVE_UNISTD_H
|
||||||
|
# include <sys/types.h> /* for off_t */
|
||||||
|
# include <unistd.h> /* for SEEK_* and off_t */
|
||||||
|
# ifdef VMS
|
||||||
|
# include <unixio.h> /* for off_t */
|
||||||
|
# endif
|
||||||
|
# ifndef z_off_t
|
||||||
|
# define z_off_t off_t
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _LARGEFILE64_SOURCE
|
||||||
|
# include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef SEEK_SET
|
||||||
|
# define SEEK_SET 0 /* Seek from beginning of file. */
|
||||||
|
# define SEEK_CUR 1 /* Seek from current position. */
|
||||||
|
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
|
||||||
|
#endif
|
||||||
|
#ifndef z_off_t
|
||||||
|
# define z_off_t long
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__OS400__)
|
||||||
|
# define NO_vsnprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__MVS__)
|
||||||
|
# define NO_vsnprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* MVS linker does not support external names larger than 8 bytes */
|
||||||
|
#if defined(__MVS__)
|
||||||
|
#pragma map(deflateInit_,"DEIN")
|
||||||
|
#pragma map(deflateInit2_,"DEIN2")
|
||||||
|
#pragma map(deflateEnd,"DEEND")
|
||||||
|
#pragma map(deflateBound,"DEBND")
|
||||||
|
#pragma map(inflateInit_,"ININ")
|
||||||
|
#pragma map(inflateInit2_,"ININ2")
|
||||||
|
#pragma map(inflateEnd,"INEND")
|
||||||
|
#pragma map(inflateSync,"INSY")
|
||||||
|
#pragma map(inflateSetDictionary,"INSEDI")
|
||||||
|
#pragma map(compressBound,"CMBND")
|
||||||
|
#pragma map(inflate_table,"INTABL")
|
||||||
|
#pragma map(inflate_fast,"INFA")
|
||||||
|
#pragma map(inflate_copyright,"INCOPY")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* ZCONF_H */
|
418
zconf.h.cmakein
Normal file
418
zconf.h.cmakein
Normal file
@ -0,0 +1,418 @@
|
|||||||
|
/* zconf.h -- configuration of the zlib compression library
|
||||||
|
* Copyright (C) 1995-2010 Jean-loup Gailly.
|
||||||
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* @(#) $Id$ */
|
||||||
|
|
||||||
|
#ifndef ZCONF_H
|
||||||
|
#define ZCONF_H
|
||||||
|
#cmakedefine Z_PREFIX
|
||||||
|
#cmakedefine Z_HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If you *really* need a unique prefix for all types and library functions,
|
||||||
|
* compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
|
||||||
|
* Even better than compiling with -DZ_PREFIX would be to use configure to set
|
||||||
|
* this permanently in zconf.h using "./configure --zprefix".
|
||||||
|
*/
|
||||||
|
#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */
|
||||||
|
|
||||||
|
/* all linked symbols */
|
||||||
|
# define _dist_code z__dist_code
|
||||||
|
# define _length_code z__length_code
|
||||||
|
# define _tr_align z__tr_align
|
||||||
|
# define _tr_flush_block z__tr_flush_block
|
||||||
|
# define _tr_init z__tr_init
|
||||||
|
# define _tr_stored_block z__tr_stored_block
|
||||||
|
# define _tr_tally z__tr_tally
|
||||||
|
# define adler32 z_adler32
|
||||||
|
# define adler32_combine z_adler32_combine
|
||||||
|
# define adler32_combine64 z_adler32_combine64
|
||||||
|
# define compress z_compress
|
||||||
|
# define compress2 z_compress2
|
||||||
|
# define compressBound z_compressBound
|
||||||
|
# define crc32 z_crc32
|
||||||
|
# define crc32_combine z_crc32_combine
|
||||||
|
# define crc32_combine64 z_crc32_combine64
|
||||||
|
# define deflate z_deflate
|
||||||
|
# define deflateBound z_deflateBound
|
||||||
|
# define deflateCopy z_deflateCopy
|
||||||
|
# define deflateEnd z_deflateEnd
|
||||||
|
# define deflateInit2_ z_deflateInit2_
|
||||||
|
# define deflateInit_ z_deflateInit_
|
||||||
|
# define deflateParams z_deflateParams
|
||||||
|
# define deflatePrime z_deflatePrime
|
||||||
|
# define deflateReset z_deflateReset
|
||||||
|
# define deflateSetDictionary z_deflateSetDictionary
|
||||||
|
# define deflateSetHeader z_deflateSetHeader
|
||||||
|
# define deflateTune z_deflateTune
|
||||||
|
# define deflate_copyright z_deflate_copyright
|
||||||
|
# define get_crc_table z_get_crc_table
|
||||||
|
# define gz_error z_gz_error
|
||||||
|
# define gz_intmax z_gz_intmax
|
||||||
|
# define gz_strwinerror z_gz_strwinerror
|
||||||
|
# define gzbuffer z_gzbuffer
|
||||||
|
# define gzclearerr z_gzclearerr
|
||||||
|
# define gzclose z_gzclose
|
||||||
|
# define gzclose_r z_gzclose_r
|
||||||
|
# define gzclose_w z_gzclose_w
|
||||||
|
# define gzdirect z_gzdirect
|
||||||
|
# define gzdopen z_gzdopen
|
||||||
|
# define gzeof z_gzeof
|
||||||
|
# define gzerror z_gzerror
|
||||||
|
# define gzflush z_gzflush
|
||||||
|
# define gzgetc z_gzgetc
|
||||||
|
# define gzgets z_gzgets
|
||||||
|
# define gzoffset z_gzoffset
|
||||||
|
# define gzoffset64 z_gzoffset64
|
||||||
|
# define gzopen z_gzopen
|
||||||
|
# define gzopen64 z_gzopen64
|
||||||
|
# define gzprintf z_gzprintf
|
||||||
|
# define gzputc z_gzputc
|
||||||
|
# define gzputs z_gzputs
|
||||||
|
# define gzread z_gzread
|
||||||
|
# define gzrewind z_gzrewind
|
||||||
|
# define gzseek z_gzseek
|
||||||
|
# define gzseek64 z_gzseek64
|
||||||
|
# define gzsetparams z_gzsetparams
|
||||||
|
# define gztell z_gztell
|
||||||
|
# define gztell64 z_gztell64
|
||||||
|
# define gzungetc z_gzungetc
|
||||||
|
# define gzwrite z_gzwrite
|
||||||
|
# define inflate z_inflate
|
||||||
|
# define inflateBack z_inflateBack
|
||||||
|
# define inflateBackEnd z_inflateBackEnd
|
||||||
|
# define inflateBackInit_ z_inflateBackInit_
|
||||||
|
# define inflateCopy z_inflateCopy
|
||||||
|
# define inflateEnd z_inflateEnd
|
||||||
|
# define inflateGetHeader z_inflateGetHeader
|
||||||
|
# define inflateInit2_ z_inflateInit2_
|
||||||
|
# define inflateInit_ z_inflateInit_
|
||||||
|
# define inflateMark z_inflateMark
|
||||||
|
# define inflatePrime z_inflatePrime
|
||||||
|
# define inflateReset z_inflateReset
|
||||||
|
# define inflateReset2 z_inflateReset2
|
||||||
|
# define inflateSetDictionary z_inflateSetDictionary
|
||||||
|
# define inflateSync z_inflateSync
|
||||||
|
# define inflateSyncPoint z_inflateSyncPoint
|
||||||
|
# define inflateUndermine z_inflateUndermine
|
||||||
|
# define inflate_copyright z_inflate_copyright
|
||||||
|
# define inflate_fast z_inflate_fast
|
||||||
|
# define inflate_table z_inflate_table
|
||||||
|
# define uncompress z_uncompress
|
||||||
|
# define zError z_zError
|
||||||
|
# define zcalloc z_zcalloc
|
||||||
|
# define zcfree z_zcfree
|
||||||
|
# define zlibCompileFlags z_zlibCompileFlags
|
||||||
|
# define zlibVersion z_zlibVersion
|
||||||
|
|
||||||
|
/* all zlib typedefs in zlib.h and zconf.h */
|
||||||
|
# define Byte z_Byte
|
||||||
|
# define Bytef z_Bytef
|
||||||
|
# define alloc_func z_alloc_func
|
||||||
|
# define charf z_charf
|
||||||
|
# define free_func z_free_func
|
||||||
|
# define gzFile z_gzFile
|
||||||
|
# define gz_header z_gz_header
|
||||||
|
# define gz_headerp z_gz_headerp
|
||||||
|
# define in_func z_in_func
|
||||||
|
# define intf z_intf
|
||||||
|
# define out_func z_out_func
|
||||||
|
# define uInt z_uInt
|
||||||
|
# define uIntf z_uIntf
|
||||||
|
# define uLong z_uLong
|
||||||
|
# define uLongf z_uLongf
|
||||||
|
# define voidp z_voidp
|
||||||
|
# define voidpc z_voidpc
|
||||||
|
# define voidpf z_voidpf
|
||||||
|
|
||||||
|
/* all zlib structs in zlib.h and zconf.h */
|
||||||
|
# define gz_header_s z_gz_header_s
|
||||||
|
# define internal_state z_internal_state
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__MSDOS__) && !defined(MSDOS)
|
||||||
|
# define MSDOS
|
||||||
|
#endif
|
||||||
|
#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
|
||||||
|
# define OS2
|
||||||
|
#endif
|
||||||
|
#if defined(_WINDOWS) && !defined(WINDOWS)
|
||||||
|
# define WINDOWS
|
||||||
|
#endif
|
||||||
|
#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
|
||||||
|
# ifndef WIN32
|
||||||
|
# define WIN32
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
|
||||||
|
# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
|
||||||
|
# ifndef SYS16BIT
|
||||||
|
# define SYS16BIT
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compile with -DMAXSEG_64K if the alloc function cannot allocate more
|
||||||
|
* than 64k bytes at a time (needed on systems with 16-bit int).
|
||||||
|
*/
|
||||||
|
#ifdef SYS16BIT
|
||||||
|
# define MAXSEG_64K
|
||||||
|
#endif
|
||||||
|
#ifdef MSDOS
|
||||||
|
# define UNALIGNED_OK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __STDC_VERSION__
|
||||||
|
# ifndef STDC
|
||||||
|
# define STDC
|
||||||
|
# endif
|
||||||
|
# if __STDC_VERSION__ >= 199901L
|
||||||
|
# ifndef STDC99
|
||||||
|
# define STDC99
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
|
||||||
|
# define STDC
|
||||||
|
#endif
|
||||||
|
#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
|
||||||
|
# define STDC
|
||||||
|
#endif
|
||||||
|
#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
|
||||||
|
# define STDC
|
||||||
|
#endif
|
||||||
|
#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
|
||||||
|
# define STDC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */
|
||||||
|
# define STDC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef STDC
|
||||||
|
# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
|
||||||
|
# define const /* note: need a more gentle solution here */
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Some Mac compilers merge all .h files incorrectly: */
|
||||||
|
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
|
||||||
|
# define NO_DUMMY_DECL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Maximum value for memLevel in deflateInit2 */
|
||||||
|
#ifndef MAX_MEM_LEVEL
|
||||||
|
# ifdef MAXSEG_64K
|
||||||
|
# define MAX_MEM_LEVEL 8
|
||||||
|
# else
|
||||||
|
# define MAX_MEM_LEVEL 9
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Maximum value for windowBits in deflateInit2 and inflateInit2.
|
||||||
|
* WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
|
||||||
|
* created by gzip. (Files created by minigzip can still be extracted by
|
||||||
|
* gzip.)
|
||||||
|
*/
|
||||||
|
#ifndef MAX_WBITS
|
||||||
|
# define MAX_WBITS 15 /* 32K LZ77 window */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The memory requirements for deflate are (in bytes):
|
||||||
|
(1 << (windowBits+2)) + (1 << (memLevel+9))
|
||||||
|
that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
|
||||||
|
plus a few kilobytes for small objects. For example, if you want to reduce
|
||||||
|
the default memory requirements from 256K to 128K, compile with
|
||||||
|
make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
|
||||||
|
Of course this will generally degrade compression (there's no free lunch).
|
||||||
|
|
||||||
|
The memory requirements for inflate are (in bytes) 1 << windowBits
|
||||||
|
that is, 32K for windowBits=15 (default value) plus a few kilobytes
|
||||||
|
for small objects.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Type declarations */
|
||||||
|
|
||||||
|
#ifndef OF /* function prototypes */
|
||||||
|
# ifdef STDC
|
||||||
|
# define OF(args) args
|
||||||
|
# else
|
||||||
|
# define OF(args) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The following definitions for FAR are needed only for MSDOS mixed
|
||||||
|
* model programming (small or medium model with some far allocations).
|
||||||
|
* This was tested only with MSC; for other MSDOS compilers you may have
|
||||||
|
* to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
|
||||||
|
* just define FAR to be empty.
|
||||||
|
*/
|
||||||
|
#ifdef SYS16BIT
|
||||||
|
# if defined(M_I86SM) || defined(M_I86MM)
|
||||||
|
/* MSC small or medium model */
|
||||||
|
# define SMALL_MEDIUM
|
||||||
|
# ifdef _MSC_VER
|
||||||
|
# define FAR _far
|
||||||
|
# else
|
||||||
|
# define FAR far
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# if (defined(__SMALL__) || defined(__MEDIUM__))
|
||||||
|
/* Turbo C small or medium model */
|
||||||
|
# define SMALL_MEDIUM
|
||||||
|
# ifdef __BORLANDC__
|
||||||
|
# define FAR _far
|
||||||
|
# else
|
||||||
|
# define FAR far
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WINDOWS) || defined(WIN32)
|
||||||
|
/* If building or using zlib as a DLL, define ZLIB_DLL.
|
||||||
|
* This is not mandatory, but it offers a little performance increase.
|
||||||
|
*/
|
||||||
|
# ifdef ZLIB_DLL
|
||||||
|
# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
|
||||||
|
# ifdef ZLIB_INTERNAL
|
||||||
|
# define ZEXTERN extern __declspec(dllexport)
|
||||||
|
# else
|
||||||
|
# define ZEXTERN extern __declspec(dllimport)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif /* ZLIB_DLL */
|
||||||
|
/* If building or using zlib with the WINAPI/WINAPIV calling convention,
|
||||||
|
* define ZLIB_WINAPI.
|
||||||
|
* Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
|
||||||
|
*/
|
||||||
|
# ifdef ZLIB_WINAPI
|
||||||
|
# ifdef FAR
|
||||||
|
# undef FAR
|
||||||
|
# endif
|
||||||
|
# include <windows.h>
|
||||||
|
/* No need for _export, use ZLIB.DEF instead. */
|
||||||
|
/* For complete Windows compatibility, use WINAPI, not __stdcall. */
|
||||||
|
# define ZEXPORT WINAPI
|
||||||
|
# ifdef WIN32
|
||||||
|
# define ZEXPORTVA WINAPIV
|
||||||
|
# else
|
||||||
|
# define ZEXPORTVA FAR CDECL
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (__BEOS__)
|
||||||
|
# ifdef ZLIB_DLL
|
||||||
|
# ifdef ZLIB_INTERNAL
|
||||||
|
# define ZEXPORT __declspec(dllexport)
|
||||||
|
# define ZEXPORTVA __declspec(dllexport)
|
||||||
|
# else
|
||||||
|
# define ZEXPORT __declspec(dllimport)
|
||||||
|
# define ZEXPORTVA __declspec(dllimport)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_VISIBILITY_PRAGMA
|
||||||
|
# define ZEXTERN __attribute__((visibility ("default"))) extern
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ZEXTERN
|
||||||
|
# define ZEXTERN extern
|
||||||
|
#endif
|
||||||
|
#ifndef ZEXPORT
|
||||||
|
# define ZEXPORT
|
||||||
|
#endif
|
||||||
|
#ifndef ZEXPORTVA
|
||||||
|
# define ZEXPORTVA
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef FAR
|
||||||
|
# define FAR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(__MACTYPES__)
|
||||||
|
typedef unsigned char Byte; /* 8 bits */
|
||||||
|
#endif
|
||||||
|
typedef unsigned int uInt; /* 16 bits or more */
|
||||||
|
typedef unsigned long uLong; /* 32 bits or more */
|
||||||
|
|
||||||
|
#ifdef SMALL_MEDIUM
|
||||||
|
/* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
|
||||||
|
# define Bytef Byte FAR
|
||||||
|
#else
|
||||||
|
typedef Byte FAR Bytef;
|
||||||
|
#endif
|
||||||
|
typedef char FAR charf;
|
||||||
|
typedef int FAR intf;
|
||||||
|
typedef uInt FAR uIntf;
|
||||||
|
typedef uLong FAR uLongf;
|
||||||
|
|
||||||
|
#ifdef STDC
|
||||||
|
typedef void const *voidpc;
|
||||||
|
typedef void FAR *voidpf;
|
||||||
|
typedef void *voidp;
|
||||||
|
#else
|
||||||
|
typedef Byte const *voidpc;
|
||||||
|
typedef Byte FAR *voidpf;
|
||||||
|
typedef Byte *voidp;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */
|
||||||
|
# define Z_HAVE_UNISTD_H
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef Z_HAVE_UNISTD_H
|
||||||
|
# include <sys/types.h> /* for off_t */
|
||||||
|
# include <unistd.h> /* for SEEK_* and off_t */
|
||||||
|
# ifdef VMS
|
||||||
|
# include <unixio.h> /* for off_t */
|
||||||
|
# endif
|
||||||
|
# ifndef z_off_t
|
||||||
|
# define z_off_t off_t
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _LARGEFILE64_SOURCE
|
||||||
|
# include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef SEEK_SET
|
||||||
|
# define SEEK_SET 0 /* Seek from beginning of file. */
|
||||||
|
# define SEEK_CUR 1 /* Seek from current position. */
|
||||||
|
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
|
||||||
|
#endif
|
||||||
|
#ifndef z_off_t
|
||||||
|
# define z_off_t long
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__OS400__)
|
||||||
|
# define NO_vsnprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__MVS__)
|
||||||
|
# define NO_vsnprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* MVS linker does not support external names larger than 8 bytes */
|
||||||
|
#if defined(__MVS__)
|
||||||
|
#pragma map(deflateInit_,"DEIN")
|
||||||
|
#pragma map(deflateInit2_,"DEIN2")
|
||||||
|
#pragma map(deflateEnd,"DEEND")
|
||||||
|
#pragma map(deflateBound,"DEBND")
|
||||||
|
#pragma map(inflateInit_,"ININ")
|
||||||
|
#pragma map(inflateInit2_,"ININ2")
|
||||||
|
#pragma map(inflateEnd,"INEND")
|
||||||
|
#pragma map(inflateSync,"INSY")
|
||||||
|
#pragma map(inflateSetDictionary,"INSEDI")
|
||||||
|
#pragma map(compressBound,"CMBND")
|
||||||
|
#pragma map(inflate_table,"INTABL")
|
||||||
|
#pragma map(inflate_fast,"INFA")
|
||||||
|
#pragma map(inflate_copyright,"INCOPY")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* ZCONF_H */
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
#ifndef ZCONF_H
|
#ifndef ZCONF_H
|
||||||
#define ZCONF_H
|
#define ZCONF_H
|
||||||
#cmakedefine Z_PREFIX
|
|
||||||
#cmakedefine Z_HAVE_UNISTD_H
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If you *really* need a unique prefix for all types and library functions,
|
* If you *really* need a unique prefix for all types and library functions,
|
||||||
|
63
zlib.3
63
zlib.3
@ -1,4 +1,4 @@
|
|||||||
.TH ZLIB 3 "21 February 2010"
|
.TH ZLIB 3 "11 March 2010"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
zlib \- compression/decompression library
|
zlib \- compression/decompression library
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@ -9,12 +9,13 @@ for full description]
|
|||||||
The
|
The
|
||||||
.I zlib
|
.I zlib
|
||||||
library is a general purpose data compression library.
|
library is a general purpose data compression library.
|
||||||
The code is thread safe.
|
The code is thread safe, assuming that the standard library functions
|
||||||
|
used are thread safe, such as memory allocation routines.
|
||||||
It provides in-memory compression and decompression functions,
|
It provides in-memory compression and decompression functions,
|
||||||
including integrity checks of the uncompressed data.
|
including integrity checks of the uncompressed data.
|
||||||
This version of the library supports only one compression method (deflation)
|
This version of the library supports only one compression method (deflation)
|
||||||
but other algorithms will be added later
|
but other algorithms may be added later
|
||||||
and will have the same stream interface.
|
with the same stream interface.
|
||||||
.LP
|
.LP
|
||||||
Compression can be done in a single step if the buffers are large enough
|
Compression can be done in a single step if the buffers are large enough
|
||||||
or can be done by repeated calls of the compression function.
|
or can be done by repeated calls of the compression function.
|
||||||
@ -29,7 +30,7 @@ with an interface similar to that of stdio.
|
|||||||
.LP
|
.LP
|
||||||
The library does not install any signal handler.
|
The library does not install any signal handler.
|
||||||
The decoder checks the consistency of the compressed data,
|
The decoder checks the consistency of the compressed data,
|
||||||
so the library should never crash even in case of corrupted input.
|
so the library should never crash even in the case of corrupted input.
|
||||||
.LP
|
.LP
|
||||||
All functions of the compression library are documented in the file
|
All functions of the compression library are documented in the file
|
||||||
.IR zlib.h .
|
.IR zlib.h .
|
||||||
@ -37,18 +38,19 @@ The distribution source includes examples of use of the library
|
|||||||
in the files
|
in the files
|
||||||
.I example.c
|
.I example.c
|
||||||
and
|
and
|
||||||
.IR minigzip.c .
|
.IR minigzip.c,
|
||||||
|
as well as other examples in the
|
||||||
|
.IR examples/
|
||||||
|
directory.
|
||||||
.LP
|
.LP
|
||||||
Changes to this version are documented in the file
|
Changes to this version are documented in the file
|
||||||
.I ChangeLog
|
.I ChangeLog
|
||||||
that accompanies the source,
|
that accompanies the source.
|
||||||
and are concerned primarily with bug fixes and portability enhancements.
|
|
||||||
.LP
|
.LP
|
||||||
A Java implementation of
|
|
||||||
.I zlib
|
.I zlib
|
||||||
is available in the Java Development Kit 1.1:
|
is available in Java using the java.util.zip package:
|
||||||
.IP
|
.IP
|
||||||
http://www.javasoft.com/products/JDK/1.1/docs/api/Package-java.util.zip.html
|
http://java.sun.com/developer/technicalArticles/Programming/compression/
|
||||||
.LP
|
.LP
|
||||||
A Perl interface to
|
A Perl interface to
|
||||||
.IR zlib ,
|
.IR zlib ,
|
||||||
@ -56,7 +58,7 @@ written by Paul Marquess (pmqs@cpan.org),
|
|||||||
is available at CPAN (Comprehensive Perl Archive Network) sites,
|
is available at CPAN (Comprehensive Perl Archive Network) sites,
|
||||||
including:
|
including:
|
||||||
.IP
|
.IP
|
||||||
http://www.cpan.org/modules/by-module/Compress/
|
http://search.cpan.org/~pmqs/IO-Compress-Zlib/
|
||||||
.LP
|
.LP
|
||||||
A Python interface to
|
A Python interface to
|
||||||
.IR zlib ,
|
.IR zlib ,
|
||||||
@ -65,14 +67,11 @@ is available in Python 1.5 and later versions:
|
|||||||
.IP
|
.IP
|
||||||
http://www.python.org/doc/lib/module-zlib.html
|
http://www.python.org/doc/lib/module-zlib.html
|
||||||
.LP
|
.LP
|
||||||
A
|
|
||||||
.I zlib
|
.I zlib
|
||||||
binding for
|
is built into
|
||||||
.IR tcl (1),
|
.IR tcl:
|
||||||
written by Andreas Kupries (a.kupries@westend.com),
|
|
||||||
is availlable at:
|
|
||||||
.IP
|
.IP
|
||||||
http://www.westend.com/~kupries/doc/trf/man/man.html
|
http://wiki.tcl.tk/4610
|
||||||
.LP
|
.LP
|
||||||
An experimental package to read and write files in .zip format,
|
An experimental package to read and write files in .zip format,
|
||||||
written on top of
|
written on top of
|
||||||
@ -80,40 +79,34 @@ written on top of
|
|||||||
by Gilles Vollant (info@winimage.com),
|
by Gilles Vollant (info@winimage.com),
|
||||||
is available at:
|
is available at:
|
||||||
.IP
|
.IP
|
||||||
http://www.winimage.com/zLibDll/unzip.html
|
http://www.winimage.com/zLibDll/minizip.html
|
||||||
and also in the
|
and also in the
|
||||||
.I contrib/minizip
|
.I contrib/minizip
|
||||||
directory of the main
|
directory of the main
|
||||||
.I zlib
|
.I zlib
|
||||||
web site.
|
source distribution.
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
The
|
The
|
||||||
.I zlib
|
.I zlib
|
||||||
web site can be found at either of these locations:
|
web site can be found at:
|
||||||
.IP
|
.IP
|
||||||
http://www.zlib.org
|
http://zlib.net/
|
||||||
.br
|
|
||||||
http://www.gzip.org/zlib/
|
|
||||||
.LP
|
.LP
|
||||||
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 (concerning zlib format)
|
http://www.ietf.org/rfc/rfc1950.txt (for the zlib header and trailer format)
|
||||||
.br
|
.br
|
||||||
http://www.ietf.org/rfc/rfc1951.txt (concerning deflate format)
|
http://www.ietf.org/rfc/rfc1951.txt (for the deflate compressed data format)
|
||||||
.br
|
.br
|
||||||
http://www.ietf.org/rfc/rfc1952.txt (concerning gzip format)
|
http://www.ietf.org/rfc/rfc1952.txt (for the gzip header and trailer format)
|
||||||
.LP
|
.LP
|
||||||
These documents are also available in other formats from:
|
Mark Nelson wrote an article about
|
||||||
.IP
|
|
||||||
ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
|
|
||||||
.LP
|
|
||||||
Mark Nelson (markn@ieee.org) wrote an article about
|
|
||||||
.I zlib
|
.I zlib
|
||||||
for the Jan. 1997 issue of Dr. Dobb's Journal;
|
for the Jan. 1997 issue of Dr. Dobb's Journal;
|
||||||
a copy of the article is available at:
|
a copy of the article is available at:
|
||||||
.IP
|
.IP
|
||||||
http://dogma.net/markn/articles/zlibtool/zlibtool.htm
|
http://marknelson.us/1997/01/01/zlib-engine/
|
||||||
.SH "REPORTING PROBLEMS"
|
.SH "REPORTING PROBLEMS"
|
||||||
Before reporting a problem,
|
Before reporting a problem,
|
||||||
please check the
|
please check the
|
||||||
@ -126,13 +119,13 @@ Please read the
|
|||||||
.I zlib
|
.I zlib
|
||||||
FAQ at:
|
FAQ at:
|
||||||
.IP
|
.IP
|
||||||
http://www.gzip.org/zlib/zlib_faq.html
|
http://zlib.net/zlib_faq.html
|
||||||
.LP
|
.LP
|
||||||
before asking for help.
|
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.3.9
|
Version 1.2.4
|
||||||
Copyright (C) 1995-2010 Jean-loup Gailly (jloup@gzip.org)
|
Copyright (C) 1995-2010 Jean-loup Gailly (jloup@gzip.org)
|
||||||
and Mark Adler (madler@alumni.caltech.edu).
|
and Mark Adler (madler@alumni.caltech.edu).
|
||||||
.LP
|
.LP
|
||||||
|
BIN
zlib.3.pdf
Normal file
BIN
zlib.3.pdf
Normal file
Binary file not shown.
9
zlib.h
9
zlib.h
@ -1,5 +1,5 @@
|
|||||||
/* zlib.h -- interface of the 'zlib' general purpose compression library
|
/* zlib.h -- interface of the 'zlib' general purpose compression library
|
||||||
version 1.2.3.9, Feb 21st, 2010
|
version 1.2.3.9, Mar 11th, 2010
|
||||||
|
|
||||||
Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
|
Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
|
||||||
|
|
||||||
@ -37,11 +37,12 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ZLIB_VERSION "1.2.3.9"
|
#define ZLIB_VERSION "1.2.4"
|
||||||
#define ZLIB_VERNUM 0x1239
|
#define ZLIB_VERNUM 0x1240
|
||||||
#define ZLIB_VER_MAJOR 1
|
#define ZLIB_VER_MAJOR 1
|
||||||
#define ZLIB_VER_MINOR 2
|
#define ZLIB_VER_MINOR 2
|
||||||
#define ZLIB_VER_REVISION 3
|
#define ZLIB_VER_REVISION 4
|
||||||
|
#define ZLIB_VER_SUBREVISION 0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The 'zlib' compression library provides in-memory compression and
|
The 'zlib' compression library provides in-memory compression and
|
||||||
|
Loading…
Reference in New Issue
Block a user