This repository has been archived by the owner on Apr 19, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
31 changed files
with
22,882 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
.gitattributes | ||
|
||
*.so | ||
*.o | ||
*.a |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
Copyright notice: | ||
|
||
(C) 1995-2022 Jean-loup Gailly and Mark Adler | ||
|
||
This software is provided 'as-is', without any express or implied | ||
warranty. In no event will the authors be held liable for any damages | ||
arising from the use of this software. | ||
|
||
Permission is granted to anyone to use this software for any purpose, | ||
including commercial applications, and to alter it and redistribute it | ||
freely, subject to the following restrictions: | ||
|
||
1. The origin of this software must not be misrepresented; you must not | ||
claim that you wrote the original software. If you use this software | ||
in a product, an acknowledgment in the product documentation would be | ||
appreciated but is not required. | ||
2. Altered source versions must be plainly marked as such, and must not be | ||
misrepresented as being the original software. | ||
3. This notice may not be removed or altered from any source distribution. | ||
|
||
Jean-loup Gailly Mark Adler | ||
[email protected] [email protected] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
ZLIB DATA COMPRESSION LIBRARY | ||
|
||
zlib 1.3.1 is a general purpose data compression library. All the code is | ||
thread safe. The data format used by the zlib library is described by RFCs | ||
(Request for Comments) 1950 to 1952 in the files | ||
http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and | ||
rfc1952 (gzip format). | ||
|
||
All functions of the compression library are documented in the file zlib.h | ||
(volunteer to write man pages welcome, contact [email protected]). A usage example | ||
of the library is given in the file test/example.c which also tests that | ||
the library is working correctly. Another example is given in the file | ||
test/minigzip.c. The compression library itself is composed of all source | ||
files in the root directory. | ||
|
||
To compile all files and run the test program, follow the instructions given at | ||
the top of Makefile.in. In short "./configure; make test", and if that goes | ||
well, "make install" should work for most flavors of Unix. For Windows, use | ||
one of the special makefiles in win32/ or contrib/vstudio/ . For VMS, use | ||
make_vms.com. | ||
|
||
Questions about zlib should be sent to <[email protected]>, or to Gilles Vollant | ||
<[email protected]> for the Windows DLL version. The zlib home page is | ||
http://zlib.net/ . Before reporting a problem, please check this site to | ||
verify that you have the latest version of zlib; otherwise get the latest | ||
version and check whether the problem still exists or not. | ||
|
||
PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help. | ||
|
||
Mark Nelson <[email protected]> wrote an article about zlib for the Jan. 1997 | ||
issue of Dr. Dobb's Journal; a copy of the article is available at | ||
https://marknelson.us/posts/1997/01/01/zlib-engine.html . | ||
|
||
The changes made in version 1.3.1 are documented in the file ChangeLog. | ||
|
||
Unsupported third party contributions are provided in directory contrib/ . | ||
|
||
zlib is available in Java using the java.util.zip package. Follow the API | ||
Documentation link at: https://docs.oracle.com/search/?q=java.util.zip . | ||
|
||
A Perl interface to zlib and bzip2 written by Paul Marquess <[email protected]> | ||
can be found at https://github.com/pmqs/IO-Compress . | ||
|
||
A Python interface to zlib written by A.M. Kuchling <[email protected]> is | ||
available in Python 1.5 and later versions, see | ||
http://docs.python.org/library/zlib.html . | ||
|
||
zlib is built into tcl: http://wiki.tcl.tk/4610 . | ||
|
||
An experimental package to read and write files in .zip format, written on top | ||
of zlib by Gilles Vollant <[email protected]>, is available in the | ||
contrib/minizip directory of zlib. | ||
|
||
|
||
Notes for some targets: | ||
|
||
- For Windows DLL versions, please see win32/DLL_FAQ.txt | ||
|
||
- For 64-bit Irix, deflate.c must be compiled without any optimization. With | ||
-O, one libpng test fails. The test works in 32 bit mode (with the -n32 | ||
compiler flag). The compiler bug has been reported to SGI. | ||
|
||
- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works | ||
when compiled with cc. | ||
|
||
- On Digital Unix 4.0D (formerly OSF/1) on AlphaServer, the cc option -std1 is | ||
necessary to get gzprintf working correctly. This is done by configure. | ||
|
||
- 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. | ||
|
||
- gzdopen is not supported on RISCOS or BEOS. | ||
|
||
- For PalmOs, see http://palmzlib.sourceforge.net/ | ||
|
||
|
||
Acknowledgments: | ||
|
||
The deflate format used by zlib was defined by Phil Katz. The deflate and | ||
zlib specifications were written by L. Peter Deutsch. Thanks to all the | ||
people who reported problems and suggested various improvements in zlib; they | ||
are too numerous to cite here. | ||
|
||
Copyright notice: | ||
|
||
(C) 1995-2024 Jean-loup Gailly and Mark Adler | ||
|
||
This software is provided 'as-is', without any express or implied | ||
warranty. In no event will the authors be held liable for any damages | ||
arising from the use of this software. | ||
|
||
Permission is granted to anyone to use this software for any purpose, | ||
including commercial applications, and to alter it and redistribute it | ||
freely, subject to the following restrictions: | ||
|
||
1. The origin of this software must not be misrepresented; you must not | ||
claim that you wrote the original software. If you use this software | ||
in a product, an acknowledgment in the product documentation would be | ||
appreciated but is not required. | ||
2. Altered source versions must be plainly marked as such, and must not be | ||
misrepresented as being the original software. | ||
3. This notice may not be removed or altered from any source distribution. | ||
|
||
Jean-loup Gailly Mark Adler | ||
[email protected] [email protected] | ||
|
||
If you use the zlib library in a product, we would appreciate *not* receiving | ||
lengthy legal documents to sign. The sources are provided for free but without | ||
warranty of any kind. The library has been entirely written by Jean-loup | ||
Gailly and Mark Adler; it does not include third-party code. We make all | ||
contributions to and distributions of this project solely in our personal | ||
capacity, and are not conveying any rights to any intellectual property of | ||
any third parties. | ||
|
||
If you redistribute modified sources, we would appreciate that you include in | ||
the file ChangeLog history information documenting your changes. Please read | ||
the FAQ for more information on the distribution of modified source versions. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,164 @@ | ||
/* adler32.c -- compute the Adler-32 checksum of a data stream | ||
* Copyright (C) 1995-2011, 2016 Mark Adler | ||
* For conditions of distribution and use, see copyright notice in zlib.h | ||
*/ | ||
|
||
/* @(#) $Id$ */ | ||
|
||
#include "zutil.h" | ||
|
||
#define BASE 65521U /* largest prime smaller than 65536 */ | ||
#define NMAX 5552 | ||
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ | ||
|
||
#define DO1(buf,i) {adler += (buf)[i]; sum2 += adler;} | ||
#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1); | ||
#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2); | ||
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4); | ||
#define DO16(buf) DO8(buf,0); DO8(buf,8); | ||
|
||
/* use NO_DIVIDE if your processor does not do division in hardware -- | ||
try it both ways to see which is faster */ | ||
#ifdef NO_DIVIDE | ||
/* note that this assumes BASE is 65521, where 65536 % 65521 == 15 | ||
(thank you to John Reiser for pointing this out) */ | ||
# define CHOP(a) \ | ||
do { \ | ||
unsigned long tmp = a >> 16; \ | ||
a &= 0xffffUL; \ | ||
a += (tmp << 4) - tmp; \ | ||
} while (0) | ||
# define MOD28(a) \ | ||
do { \ | ||
CHOP(a); \ | ||
if (a >= BASE) a -= BASE; \ | ||
} while (0) | ||
# define MOD(a) \ | ||
do { \ | ||
CHOP(a); \ | ||
MOD28(a); \ | ||
} while (0) | ||
# define MOD63(a) \ | ||
do { /* this assumes a is not negative */ \ | ||
z_off64_t tmp = a >> 32; \ | ||
a &= 0xffffffffL; \ | ||
a += (tmp << 8) - (tmp << 5) + tmp; \ | ||
tmp = a >> 16; \ | ||
a &= 0xffffL; \ | ||
a += (tmp << 4) - tmp; \ | ||
tmp = a >> 16; \ | ||
a &= 0xffffL; \ | ||
a += (tmp << 4) - tmp; \ | ||
if (a >= BASE) a -= BASE; \ | ||
} while (0) | ||
#else | ||
# define MOD(a) a %= BASE | ||
# define MOD28(a) a %= BASE | ||
# define MOD63(a) a %= BASE | ||
#endif | ||
|
||
/* ========================================================================= */ | ||
uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len) { | ||
unsigned long sum2; | ||
unsigned n; | ||
|
||
/* split Adler-32 into component sums */ | ||
sum2 = (adler >> 16) & 0xffff; | ||
adler &= 0xffff; | ||
|
||
/* in case user likes doing a byte at a time, keep it fast */ | ||
if (len == 1) { | ||
adler += buf[0]; | ||
if (adler >= BASE) | ||
adler -= BASE; | ||
sum2 += adler; | ||
if (sum2 >= BASE) | ||
sum2 -= BASE; | ||
return adler | (sum2 << 16); | ||
} | ||
|
||
/* initial Adler-32 value (deferred check for len == 1 speed) */ | ||
if (buf == Z_NULL) | ||
return 1L; | ||
|
||
/* in case short lengths are provided, keep it somewhat fast */ | ||
if (len < 16) { | ||
while (len--) { | ||
adler += *buf++; | ||
sum2 += adler; | ||
} | ||
if (adler >= BASE) | ||
adler -= BASE; | ||
MOD28(sum2); /* only added so many BASE's */ | ||
return adler | (sum2 << 16); | ||
} | ||
|
||
/* do length NMAX blocks -- requires just one modulo operation */ | ||
while (len >= NMAX) { | ||
len -= NMAX; | ||
n = NMAX / 16; /* NMAX is divisible by 16 */ | ||
do { | ||
DO16(buf); /* 16 sums unrolled */ | ||
buf += 16; | ||
} while (--n); | ||
MOD(adler); | ||
MOD(sum2); | ||
} | ||
|
||
/* do remaining bytes (less than NMAX, still just one modulo) */ | ||
if (len) { /* avoid modulos if none remaining */ | ||
while (len >= 16) { | ||
len -= 16; | ||
DO16(buf); | ||
buf += 16; | ||
} | ||
while (len--) { | ||
adler += *buf++; | ||
sum2 += adler; | ||
} | ||
MOD(adler); | ||
MOD(sum2); | ||
} | ||
|
||
/* return recombined sums */ | ||
return adler | (sum2 << 16); | ||
} | ||
|
||
/* ========================================================================= */ | ||
uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len) { | ||
return adler32_z(adler, buf, len); | ||
} | ||
|
||
/* ========================================================================= */ | ||
local uLong adler32_combine_(uLong adler1, uLong adler2, z_off64_t len2) { | ||
unsigned long sum1; | ||
unsigned long sum2; | ||
unsigned rem; | ||
|
||
/* for negative len, return invalid adler32 as a clue for debugging */ | ||
if (len2 < 0) | ||
return 0xffffffffUL; | ||
|
||
/* the derivation of this formula is left as an exercise for the reader */ | ||
MOD63(len2); /* assumes len2 >= 0 */ | ||
rem = (unsigned)len2; | ||
sum1 = adler1 & 0xffff; | ||
sum2 = rem * sum1; | ||
MOD(sum2); | ||
sum1 += (adler2 & 0xffff) + BASE - 1; | ||
sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem; | ||
if (sum1 >= BASE) sum1 -= BASE; | ||
if (sum1 >= BASE) sum1 -= BASE; | ||
if (sum2 >= ((unsigned long)BASE << 1)) sum2 -= ((unsigned long)BASE << 1); | ||
if (sum2 >= BASE) sum2 -= BASE; | ||
return sum1 | (sum2 << 16); | ||
} | ||
|
||
/* ========================================================================= */ | ||
uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, z_off_t len2) { | ||
return adler32_combine_(adler1, adler2, len2); | ||
} | ||
|
||
uLong ZEXPORT adler32_combine64(uLong adler1, uLong adler2, z_off64_t len2) { | ||
return adler32_combine_(adler1, adler2, len2); | ||
} |
Oops, something went wrong.