Compare commits

..

2 Commits
v0.9 ... v0.92

Author SHA1 Message Date
Mark Adler
bdde4e09d2 zlib 0.92 2011-09-09 23:08:07 -07:00
Mark Adler
1c71d8b13b zlib 0.91 2011-09-09 23:07:35 -07:00
29 changed files with 992 additions and 994 deletions

View File

@@ -1,5 +1,23 @@
ChangeLog file for zlib
Changes in 0.92 (3 May 95)
- don't assume that char is signed (problem on SGI)
- Clear bit buffer when starting a stored block
- no memcpy on Pyramid
- suppressed inftest.c
- optimized fill_window, put longest_match inline for gcc
- optimized inflate on stored blocks.
- untabify all sources to simplify patches
Changes in 0.91 (2 May 95)
- Default MEM_LEVEL is 8 (not 9 for Unix) as documented in zlib.h
- Document the memory requirements in zconf.h
- added "make install"
- fix sync search logic in inflateSync
- deflate(Z_FULL_FLUSH) now works even if output buffer too short
- after inflateSync, don't scare people with just "lo world"
- added support for DJGPP
Changes in 0.9 (1 May 95)
- don't assume that zalloc clears the allocated memory (the TurboC bug
was Mark's bug after all :)
@@ -10,6 +28,7 @@ Changes in 0.9 (1 May 95)
- document explicitly that zalloc(64K) on MSDOS must return a normalized
pointer (zero offset)
- added Makefiles for Microsoft C, Turbo C, Borland C++
- faster crc32()
Changes in 0.8 (29 April 95)
- added fast inflate (inffast.c)

View File

@@ -1,21 +1,37 @@
# Makefile for zlib
# Copyright (C) 1995 Jean-loup Gailly.
# For conditions of distribution and use, see copyright notice in zlib.h
CC=cc
CFLAGS=-O
#use -O3 for gcc to take advantage of inlining
#CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
#CFLAGS=-g -DDEBUG
LDFLAGS=-L. -lgz
RANLIB=ranlib
prefix=/usr/local
OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \
zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o
TEST_OBJS = example.o minigzip.o inftest.o
TEST_OBJS = example.o minigzip.o
all: example minigzip inftest
all: example minigzip
test: all
./example
echo hello world | ./minigzip | ./minigzip -d
install: libgz.a
-@mkdir $(prefix)/include
-@mkdir $(prefix)/lib
cp zlib.h zconf.h $(prefix)/include
chmod 644 $(prefix)/include/zlib.h $(prefix)/include/zconf.h
cp libgz.a $(prefix)/lib
chmod 644 $(prefix)/lib/libgz.a
libgz.a: $(OBJS)
ar rc $@ $(OBJS)
$(RANLIB) $@
@@ -26,11 +42,8 @@ example: example.o libgz.a
minigzip: minigzip.o libgz.a
$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS)
inftest: inftest.o libgz.a
$(CC) $(CFLAGS) -o $@ inftest.o $(LDFLAGS)
clean:
rm -f *.o example minigzip inftest libgz.a foo.gz
rm -f *.o example minigzip libgz.a foo.gz
zip:
zip -ul9 zlib README ChangeLog Makefile Makefile.??? Makefile.?? *.[ch]
@@ -51,7 +64,6 @@ infblock.o: zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h
infcodes.o: zutil.h zlib.h zconf.h inftrees.h infutil.h infcodes.h inffast.h
inffast.o: zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
inflate.o: zutil.h zlib.h zconf.h infblock.h
inftest.o: zutil.h zlib.h zconf.h
inftrees.o: zutil.h zlib.h zconf.h inftrees.h
infutil.o: zutil.h zlib.h zconf.h inftrees.h infutil.h
minigzip.o: zlib.h zconf.h

View File

@@ -1,59 +0,0 @@
CC=gcc
CFLAGS=-O2
#CFLAGS=-g -DDEBUG
LDFLAGS=-L. -lgz
RANLIB=ranlib
OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \
zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o
TEST_OBJS = example.o minigzip.o inftest.o
all: example minigzip inftest
test: all
./example
echo hello world | ./minigzip | ./minigzip -d
libgz.a: $(OBJS)
ar rc $@ $(OBJS)
$(RANLIB) $@
example: example.o libgz.a
$(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS)
minigzip: minigzip.o libgz.a
$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS)
inftest: inftest.o libgz.a
$(CC) $(CFLAGS) -o $@ inftest.o $(LDFLAGS)
clean:
rm -f *.o example minigzip inftest libgz.a foo.gz
zip:
zip -ul9 zlib README ChangeLog Makefile *.[ch]
tgz:
cd ..; tar cfz zlib/zlib.tgz zlib/README zlib/ChangeLog zlib/Makefile \
zlib/*.[ch]
# DO NOT DELETE THIS LINE -- make depend depends on it.
adler32.o: zutil.h zlib.h zconf.h
compress.o: zlib.h zconf.h
crc32.o: zutil.h zlib.h zconf.h
deflate.o: deflate.h zutil.h zlib.h zconf.h
example.o: zlib.h zconf.h
gzio.o: zutil.h zlib.h zconf.h
infblock.o: zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h
infcodes.o: zutil.h zlib.h zconf.h inftrees.h infutil.h infcodes.h
inflate.o: zutil.h zlib.h zconf.h infblock.h
inftest.o: zutil.h zlib.h zconf.h
inftrees.o: zutil.h zlib.h zconf.h inftrees.h
infutil.o: zutil.h zlib.h zconf.h inftrees.h infutil.h
minigzip.o: zlib.h zconf.h
trees.o: deflate.h zutil.h zlib.h zconf.h
uncompr.o: zlib.h zconf.h
zutil.o: zutil.h zlib.h zconf.h

View File

@@ -4,7 +4,10 @@
# To use, do "make -fmakefile.bor"
# WARNING: the small model is supported but only for small values of
# MAX_WBITS and MAX_MEM_LEVEL
# MAX_WBITS and MAX_MEM_LEVEL. If you wish to reduce the memory
# requirements (default 256K for big objects plus a few K), you can add
# to CFLAGS below: -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14
# See zconf.h for details about the memory requirements.
# ------------- Turbo C++, Borland C++ -------------
MODEL=-ml

View File

@@ -4,7 +4,10 @@
# To use, do "make makefile.msc"
# WARNING: the small model is supported but only for small values of
# MAX_WBITS and MAX_MEM_LEVEL
# MAX_WBITS and MAX_MEM_LEVEL. If you wish to reduce the memory
# requirements (default 256K for big objects plus a few K), you can add
# to CFLAGS below: -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14
# See zconf.h for details about the memory requirements.
# ------------- Microsoft C 5.1 and later -------------
MODEL=-AL

View File

@@ -4,7 +4,10 @@
# To use, do "make -fmakefile.tc"
# WARNING: the small model is supported but only for small values of
# MAX_WBITS and MAX_MEM_LEVEL
# MAX_WBITS and MAX_MEM_LEVEL. If you wish to reduce the memory
# requirements (default 256K for big objects plus a few K), you can add
# to CFLAGS below: -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14
# See zconf.h for details about the memory requirements.
# ------------- Turbo C 2.0 -------------
MODEL=-ml

33
README
View File

@@ -1,25 +1,34 @@
zlib 0.9 is a beta version of a general purpose compression library.
zlib 0.92 is a beta version of a general purpose compression library.
The data format used by the zlib library is described in the
file zlib-3.1.doc, deflate-1.1.doc and gzip-4.1.doc, available
files zlib-3.1.doc, deflate-1.1.doc and gzip-4.1.doc, available
in ftp.uu.net:/pub/archiving/zip/doc.
All functions of the compression library are documented in the file
zlib.h. A usage example of the library is given in the file example.c
which also tests that the library is working correctly.
To compile all files and run the test program, just type: make test
The changes made in version 0.9 are documented in the file ChangeLog.
The main changes since 0.8 are:
- don't assume that zalloc clears the allocated memory
- let again gzread copy uncompressed data unchanged (was working in 0.71)
- deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented
To compile all files and run the test program, just type: make test
(For MSDOS, use one of the special makefiles such as Makefile.msc.)
To install the zlib library (libgz.a) in /usr/local/lib, type: make install
To install in a different directory, use for example: make install prefix=$HOME
This will install in $HOME/lib instead of /usr/local/lib.
The changes made in version 0.92 are documented in the file ChangeLog.
The main changes since 0.9 are:
- don't assume that char is signed (problem on SGI)
- Default MEM_LEVEL is 8 (not 9 for Unix) as documented in zlib.h
- Document the memory requirements in zconf.h
- added "make install"
- added support for DJGPP and Pyramid
- fix an inflate bug for stored blocks.
- various speedups
On MSDOS, this version works in both large and small model. However
small model compression works only for small values of MEM_LEVEL and
WBITS (see zutil.h). Small model decompression should work up to WBITS=15.
This version of zlib does not support small or medium model with far
allocation of big objects.
small model compression works only for small values of MAX_MEM_LEVEL
and MAX_WBITS (see zconf.h). Small model decompression should work up
to MAX_WBITS=15. This version of zlib does not support small or
medium model with far allocation of big objects.
Copyright (C) 1995 Jean-loup Gailly and Mark Adler

View File

@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* $Id: adler32.c,v 1.5 1995/04/14 14:49:51 jloup Exp $ */
/* $Id: adler32.c,v 1.6 1995/05/03 17:27:08 jloup Exp $ */
#include "zutil.h"

View File

@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* $Id: compress.c,v 1.5 1995/04/29 17:18:43 jloup Exp $ */
/* $Id: compress.c,v 1.6 1995/05/03 17:27:08 jloup Exp $ */
#include "zlib.h"

View File

@@ -47,7 +47,7 @@
*
*/
/* $Id: deflate.c,v 1.6 1995/05/01 17:23:57 jloup Exp $ */
/* $Id: deflate.c,v 1.8 1995/05/03 17:27:08 jloup Exp $ */
#include "deflate.h"
@@ -165,7 +165,7 @@ int deflateInit (strm, level)
z_stream *strm;
int level;
{
return deflateInit2 (strm, level, DEFLATED, MAX_WBITS, MAX_MEM_LEVEL, 0);
return deflateInit2 (strm, level, DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, 0);
/* To do: ignore strm->next_in if we use it as window */
}
@@ -344,22 +344,23 @@ int deflate (strm, flush)
*/
if (strm->avail_in != 0 ||
(flush == Z_FINISH && strm->state->status != FINISH_STATE)) {
int quit;
if (flush == Z_FINISH) {
strm->state->status = FINISH_STATE;
}
if (strm->state->level <= 3) {
if (deflate_fast(strm->state, flush)) return Z_OK;
quit = deflate_fast(strm->state, flush);
} else {
if (deflate_slow(strm->state, flush)) return Z_OK;
quit = deflate_slow(strm->state, flush);
}
/* ??? remember Z_FULL_FLUSH if we didn't have enough space */
if (flush == Z_FULL_FLUSH) {
ct_stored_block(strm->state, (char*)0, 0L, 0); /* special marker */
flush_pending(strm);
CLEAR_HASH(strm->state); /* forget history */
if (strm->avail_out == 0) return Z_OK;
}
if (quit) return Z_OK;
}
Assert(strm->avail_out > 0, "bug2");
@@ -487,7 +488,7 @@ local void lm_init (s)
/* For 80x86 and 680x0, an optimized version will be provided in match.asm or
* match.S. The code will be functionally equivalent.
*/
local int longest_match(s, cur_match)
local INLINE int longest_match(s, cur_match)
deflate_state *s;
IPos cur_match; /* current match */
{
@@ -501,6 +502,8 @@ local int longest_match(s, cur_match)
/* Stop when cur_match becomes <= limit. To simplify the code,
* we prevent matches with the string of window index 0.
*/
Pos *prev = s->prev;
uInt wmask = s->w_mask;
#ifdef UNALIGNED_OK
/* Compare two bytes at a time. Note: this is not always beneficial.
@@ -608,7 +611,7 @@ local int longest_match(s, cur_match)
scan_end = scan[best_len];
#endif
}
} while ((cur_match = s->prev[cur_match & s->w_mask]) > limit
} while ((cur_match = prev[cur_match & wmask]) > limit
&& --chain_length != 0);
return best_len;
@@ -655,14 +658,16 @@ local void fill_window(s)
deflate_state *s;
{
register unsigned n, m;
register Pos *p;
unsigned more; /* Amount of free space at the end of the window. */
uInt wsize = s->w_size;
do {
more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
/* Deal with !@#$% 64K limit: */
if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
more = s->w_size;
more = wsize;
} else if (more == (unsigned)(-1)) {
/* Very unlikely, but possible on 16 bit machine if strstart == 0
* and lookahead == 1 (input done one byte at time)
@@ -672,30 +677,39 @@ local void fill_window(s)
/* If the window is almost full and there is insufficient lookahead,
* move the upper half to the lower one to make room in the upper half.
*/
} else if (s->strstart >= s->w_size+MAX_DIST(s)) {
} else if (s->strstart >= wsize+MAX_DIST(s)) {
/* By the IN assertion, the window is not empty so we can't confuse
* more == 0 with more == 64K on a 16 bit machine.
*/
memcpy((char*)s->window, (char*)s->window+s->w_size,
(unsigned)s->w_size);
s->match_start -= s->w_size;
s->strstart -= s->w_size; /* we now have strstart >= MAX_DIST */
zmemcpy((char*)s->window, (char*)s->window+wsize,
(unsigned)wsize);
s->match_start -= wsize;
s->strstart -= wsize; /* we now have strstart >= MAX_DIST */
s->block_start -= (long) s->w_size;
s->block_start -= (long) wsize;
for (n = 0; n < s->hash_size; n++) {
m = s->head[n];
s->head[n] = (Pos)(m >= s->w_size ? m-s->w_size : NIL);
}
for (n = 0; n < s->w_size; n++) {
m = s->prev[n];
s->prev[n] = (Pos)(m >= s->w_size ? m-s->w_size : NIL);
/* Slide the hash table (could be avoided with 32 bit values
at the expense of memory usage):
*/
n = s->hash_size;
p = &s->head[n-1];
do {
m = *p;
*p-- = (Pos)(m >= wsize ? m-wsize : NIL);
} while (--n);
n = wsize;
p = &s->prev[n-1];
do {
m = *p;
*p-- = (Pos)(m >= wsize ? m-wsize : NIL);
/* If n is not on any hash chain, prev[n] is garbage but
* its value will never be used.
*/
}
more += s->w_size;
} while (--n);
more += wsize;
}
if (s->strm->avail_in == 0) return;

View File

@@ -8,7 +8,7 @@
subject to change. Applications should only use zlib.h.
*/
/* $Id: deflate.h,v 1.4 1995/05/01 15:08:45 jloup Exp $ */
/* $Id: deflate.h,v 1.5 1995/05/03 17:27:09 jloup Exp $ */
#include "zutil.h"

View File

@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* $Id: example.c,v 1.7 1995/05/01 16:57:22 jloup Exp $ */
/* $Id: example.c,v 1.9 1995/05/03 17:27:09 jloup Exp $ */
#include <stdio.h>
#include "zlib.h"
@@ -12,7 +12,9 @@
# include <string.h>
#endif
#ifndef __GO32__
extern void exit __P((int));
#endif
#define BUFLEN 4096
@@ -253,7 +255,7 @@ void test_sync(compr)
err = inflateEnd(&d_stream);
CHECK_ERR(err, "inflateEnd");
printf("after inflateSync(): %s\n", uncompr);
printf("after inflateSync(): hel%s\n", uncompr);
}
/* ===========================================================================

6
gzio.c
View File

@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* $Id: gzio.c,v 1.6 1995/04/30 19:52:21 jloup Exp $ */
/* $Id: gzio.c,v 1.8 1995/05/03 17:27:09 jloup Exp $ */
#include <stdio.h>
@@ -128,7 +128,7 @@ local gzFile gz_open (path, mode, fd)
if (s->mode == 'w') {
err = deflateInit2(&(s->stream), Z_DEFAULT_COMPRESSION,
DEFLATED, -MAX_WBITS, MAX_MEM_LEVEL, 0);
DEFLATED, -MAX_WBITS, DEF_MEM_LEVEL, 0);
/* windowBits is passed < 0 to suppress zlib header */
s->stream.next_out = s->outbuf = ALLOC(Z_BUFSIZE);
@@ -221,7 +221,7 @@ gzFile gzdopen (fd, mode)
char *mode;
{
char name[20];
sprintf(name, "_fd:%d_", fd); /* for debugging */
sprintf(name, "<fd:%d>", fd); /* for debugging */
return gz_open (name, mode, fd);
}

View File

@@ -180,17 +180,23 @@ int r;
r = Z_DATA_ERROR;
LEAVE
}
k = 0; /* dump bits */
s->sub.left = (uInt)b & 0xffff;
k = b = 0; /* dump bits */
Tracev((stderr, "inflate: stored length %u\n", s->sub.left));
s->mode = s->sub.left ? STORED : TYPE;
break;
case STORED:
do {
NEEDBYTE
if (n == 0)
LEAVE
NEEDOUT
OUTBYTE(NEXTBYTE)
} while (--s->sub.left);
t = s->sub.left;
if (t > n) t = n;
if (t > m) t = m;
zmemcpy(q, p, t);
p += t; n -= t;
q += t; m -= t;
if ((s->sub.left -= t) != 0)
break;
Tracev((stderr, "inflate: stored end, %lu total out\n",
z->total_out + (q >= s->read ? q - s->read :
(s->end - s->read) + (q - s->window))));

View File

@@ -145,7 +145,7 @@ int f;
{
case METHOD:
NEEDBYTE
if (((z->state->sub.method = NEXTBYTE) & 0xf != DEFLATED))
if (((z->state->sub.method = NEXTBYTE) & 0xf) != DEFLATED)
{
z->state->mode = BAD;
z->msg = "unknown compression method";
@@ -243,7 +243,10 @@ z_stream *z;
if (z == Z_NULL || z->state == Z_NULL)
return Z_STREAM_ERROR;
if (z->state->mode != BAD)
{
z->state->mode = BAD;
z->state->sub.marker = 0;
}
if ((n = z->avail_in) == 0)
return Z_BUF_ERROR;
p = z->next_in;
@@ -252,10 +255,12 @@ z_stream *z;
/* search */
while (n && m < 4)
{
if (*p == (m < 2 ? 0 : 0xff))
if (*p == (Byte)(m < 2 ? 0 : 0xff))
m++;
else if (*p || m > 2)
else if (*p)
m = 0;
else
m = 4 - m;
p++, n--;
}

View File

@@ -1,69 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include "zutil.h"
void main __P((void));
/* This test is in honor of Ed Hamrick who suggested that the interface
to inflate be a byte at a time--this implements that, and is, of course,
monumentally slow. It has the virtue though of stressing the push-pull
interface for testing purposes. */
void main()
{
int a, r;
char c;
z_stream z;
z.zalloc = Z_NULL;
z.zfree = Z_NULL;
r = inflateInit(&z);
if (r != Z_OK)
fprintf(stderr, "init error: %s\n", z_errmsg[1 - r]);
while ((a = getchar()) != EOF)
{
/* feed one byte of input */
z.avail_out = 0;
c = (char)a;
z.next_in = (Byte*)&c;
z.avail_in = 1;
r = inflate(&z, 0);
if (r == Z_STREAM_END)
break;
if (r != Z_OK)
{
fprintf(stderr, "inflate error: %s\n", z_errmsg[1 - r]);
break;
}
if (z.avail_in != 0)
{
fprintf(stderr, "inflate didn't eat byte and didn't say buf err!\n");
break;
}
/* empty output one byte at a time */
while (1)
{
z.next_out = (Byte*)&c;
z.avail_out = 1;
r = inflate(&z, 0);
if (r == Z_STREAM_END)
break;
if (r != Z_OK && r != Z_BUF_ERROR)
{
fprintf(stderr, "inflate error: %s\n", z_errmsg[1 - r]);
break;
}
if (z.avail_out == 0)
putchar(c);
else
break;
}
if (r != Z_OK && r != Z_BUF_ERROR)
break;
}
inflateEnd(&z);
fprintf(stderr, "%ld bytes in, %ld bytes out\n", z.total_in, z.total_out);
if (z.msg != NULL)
fprintf(stderr, "msg is <%s>\n", z.msg);
}

View File

@@ -245,8 +245,8 @@ z_stream *zs; /* for zalloc function */
if (h)
{
x[h] = i; /* save pattern for backing up */
r.bits = (char)l; /* bits to dump before this table */
r.exop = -(char)j; /* bits in this table */
r.bits = (Byte)l; /* bits to dump before this table */
r.exop = -(Char)j; /* bits in this table */
r.next = q; /* pointer to this table */
j = i >> (w - l); /* (get around Turbo C bug) */
u[h-1][j] = r; /* connect to last table */
@@ -254,17 +254,17 @@ z_stream *zs; /* for zalloc function */
}
/* set up table entry in r */
r.bits = (char)(k - w);
r.bits = (Byte)(k - w);
if (p >= v + n)
r.exop = -128; /* out of values--invalid code */
r.exop = (Char)(-128); /* out of values--invalid code */
else if (*p < s)
{
r.exop = (char)(*p < 256 ? 16 : -64); /* 256 is end-of-block code */
r.exop = (Char)(*p < 256 ? 16 : -64); /* 256 is end-of-block code */
r.base = *p++; /* simple code is just the value */
}
else
{
r.exop = (char)e[*p - s]; /* non-simple--look up in lists */
r.exop = (Char)e[*p - s]; /* non-simple--look up in lists */
r.base = d[*p++ - s];
}

View File

@@ -16,12 +16,18 @@
indicates an unused code. If a code with exop == -128 is looked up,
this implies an error in the data. */
#if defined(STDC) || defined(sgi)
typedef signed char Char;
#else
typedef char Char; /* just hope that char is signed */
#endif
typedef struct inflate_huft_s inflate_huft;
struct inflate_huft_s {
union {
struct {
char Exop; /* number of extra bits or operation */
char Bits; /* number of bits in this code or subcode */
Char Exop; /* number of extra bits or operation */
Byte Bits; /* number of bits in this code or subcode */
} what;
Byte *pad; /* pad structure to a power of 2 (4 bytes for */
} word; /* 16-bit, 8 bytes for 32-bit machines) */

View File

@@ -13,12 +13,14 @@
* or in pipe mode.
*/
/* $Id: minigzip.c,v 1.3 1995/04/29 14:27:21 jloup Exp $ */
/* $Id: minigzip.c,v 1.5 1995/05/03 17:27:11 jloup Exp $ */
#include <stdio.h>
#include "zlib.h"
#ifndef __GO32__
extern void exit __P((int));
#endif
extern int unlink __P((const char *));
#ifdef STDC

View File

@@ -29,7 +29,7 @@
* Addison-Wesley, 1983. ISBN 0-201-06672-6.
*/
/* $Id: trees.c,v 1.4 1995/05/01 16:53:44 jloup Exp $ */
/* $Id: trees.c,v 1.5 1995/05/03 17:27:12 jloup Exp $ */
#include "deflate.h"

View File

@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* $Id: uncompr.c,v 1.4 1995/04/10 16:22:22 jloup Exp $ */
/* $Id: uncompr.c,v 1.5 1995/05/03 17:27:12 jloup Exp $ */
#include "zlib.h"

17
zconf.h
View File

@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* $Id: zconf.h,v 1.10 1995/04/30 19:27:14 jloup Exp $ */
/* $Id: zconf.h,v 1.12 1995/05/03 17:27:12 jloup Exp $ */
#ifndef _ZCONF_H
#define _ZCONF_H
@@ -32,6 +32,7 @@
# define STDC
#endif
/* Maximum value for memLevel in deflateInit2 */
#ifndef MAX_MEM_LEVEL
# ifdef MAXSEG_64K
# define MAX_MEM_LEVEL 8
@@ -40,10 +41,24 @@
# endif
#endif
/* Maximum value for windowBits in deflateInit2 and inflateInit2 */
#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 __P /* function prototypes */

7
zlib.h
View File

@@ -1,5 +1,5 @@
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 0.9 April 30th, 1995.
version 0.92 May 3rd, 1995.
Copyright (C) 1995 Jean-loup Gailly and Mark Adler
@@ -28,7 +28,7 @@
#include "zconf.h"
#define ZLIB_VERSION "0.9"
#define ZLIB_VERSION "0.92"
/*
The 'zlib' compression library provides in-memory compression and
@@ -335,7 +335,8 @@ extern int deflateInit2 __P((z_stream *strm,
The memLevel parameter specifies how much memory should be allocated
for the internal compression state. memLevel=1 uses minimum memory but
is slow and reduces compression ratio; memLevel=9 uses maximum memory
for optimal speed. The default value is 8.
for optimal speed. The default value is 8. See zconf.h for total memory
usage as a function of windowBits and memLevel.
The strategy parameter is used to tune the compression algorithm. Use
the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data

23
zutil.c
View File

@@ -3,13 +3,15 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* $Id: zutil.c,v 1.6 1995/04/29 14:54:02 jloup Exp $ */
/* $Id: zutil.c,v 1.8 1995/05/03 17:27:12 jloup Exp $ */
#include <stdio.h>
#include "zutil.h"
#ifndef __GO32__
extern void exit __P((int));
#endif
char *zlib_version = ZLIB_VERSION;
@@ -55,8 +57,9 @@ void zmemzero(dest, len)
}
#endif
#if defined(MSDOS) && !defined(__SMALL__) && !defined(M_I86SM)
# ifdef __TURBOC__
#if defined(__TURBOC__) && !defined(__SMALL__)
# define MY_ZCALLOC
/* Turbo C malloc() does not allow dynamic allocation of 64K bytes
* and farmalloc(64K) returns a pointer with an offset of 8, so we
@@ -124,8 +127,11 @@ void zcfree (voidp opaque, voidp ptr)
ptr = opaque; /* just to make some compilers happy */
z_error("zcfree: ptr not found");
}
#endif /* __TURBOC__ */
# else /* MSC */
#if defined(M_I86CM) || defined(M_I86LM) /* MSC compact or large model */
# define MY_ZCALLOC
#if (!defined(_MSC_VER) || (_MSC_VER < 600))
# define _halloc halloc
@@ -144,12 +150,15 @@ void zcfree (voidp opaque, voidp ptr)
_hfree(ptr);
}
# endif /* __TURBOC__ ? */
#endif /* defined(M_I86CM) || defined(M_I86LM) */
#else /* !MSDOS */
#ifndef MY_ZCALLOC /* Any system without a special alloc function */
#ifndef __GO32__
extern voidp calloc __P((uInt items, uInt size));
extern void free __P((voidp ptr));
#endif
voidp zcalloc (opaque, items, size)
voidp opaque;
@@ -166,4 +175,4 @@ void zcfree (opaque, ptr)
free(ptr);
}
#endif /* MSDOS */
#endif /* MY_ZCALLOC */

23
zutil.h
View File

@@ -8,15 +8,22 @@
subject to change. Applications should only use zlib.h.
*/
/* $Id: zutil.h,v 1.7 1995/04/30 10:55:33 jloup Exp $ */
/* $Id: zutil.h,v 1.9 1995/05/03 17:27:12 jloup Exp $ */
#ifndef _Z_UTIL_H
#define _Z_UTIL_H
#include "zlib.h"
#ifdef __GNUC__
# define INLINE inline
#else
# define INLINE
#endif
#ifdef MSDOS
# include <stddef.h>
# include <errno.h>
#else
extern int errno;
#endif
@@ -43,7 +50,14 @@ extern char *z_errmsg[]; /* indexed by 1-zlib_error */
#define DEFLATED 8
#define DEF_WBITS 15
/* default WBITS for decompression. MAX_WBITS is useful for compression only */
/* default windowBits for decompression. MAX_WBITS is for compression only */
#if MAX_MEM_LEVEL >= 8
# define DEF_MEM_LEVEL 8
#else
# define DEF_MEM_LEVEL MAX_MEM_LEVEL
#endif
/* default memLevel */
#define STORED_BLOCK 0
#define STATIC_TREES 1
@@ -118,7 +132,10 @@ extern char *z_errmsg[]; /* indexed by 1-zlib_error */
# define zstrerror(errnum) ""
#endif
#if defined(STDC) && !defined(HAVE_MEMCPY)
#if defined(pyr) && !defined(NO_MEMCPY)
# define NO_MEMCPY
#endif
#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
# define HAVE_MEMCPY
#endif
#ifdef HAVE_MEMCPY