|
NAME
| |
deflateinit, deflate, deflatezlib, deflateblock, deflatezlibblock,
inflateinit, inflate, inflatezlib, inflateblock, inflatezlibblock,
flateerr, mkcrctab, blockcrc, adler32 – deflate compression
|
SYNOPSIS
| |
#include <u.h>
#include <libc.h>
#include <flate.h>
int deflateinit(void)
int deflate(void *wr, int (*w)(void*,void*,int),
| |
| |
void *rr, int (*r)(void*,void*,int),
int level, int debug)
|
|
int deflatezlib(void *wr, int (*w)(void*,void*,int),
| |
| |
void *rr, int (*r)(void*,void*,int),
int level, int debug)
|
|
int deflateblock(uchar *dst, int dsize,
| |
| |
uchar *src, int ssize,
int level, int debug)
|
|
int deflatezlibblock(uchar *dst, int dsize,
| |
| |
uchar *src, int ssize,
int level, int debug)
|
|
int inflateinit(void)
int inflate(void *wr, int (*w)(void*, void*, int),
| |
| |
void *getr, int (*get)(void*))
|
|
int inflatezlib(void *wr, int (*w)(void*, void*, int),
| |
| |
void *getr, int (*get)(void*))
|
|
int inflateblock(uchar *dst, int dsize,
int inflatezlibblock(uchar *dst, int dsize,
char *flateerr(int error)
ulong *mkcrctab(ulong poly)
ulong blockcrc(ulong *tab, ulong crc, void *buf, int n)
ulong adler32(ulong adler, void *buf, int n)
|
DESCRIPTION
| |
These routines compress and decompress data using the deflate
compression algorithm, which is used for most gzip, zip, and zlib
files.
Deflate compresses input data retrieved by calls to r with arguments
rr, an input buffer, and a count of bytes to read. R should return
the number of bytes read; end of input is signaled by returning
zero, an input error by returning a negative number. The compressed
output is written to w with arguments wr, the
output data, and the number of bytes to write. W should return
the number of bytes written; writing fewer than the requested
number of bytes is an error. Level indicates the amount of computation
deflate should do while compressing the data. Higher levels usually
take more time and produce smaller outputs. Valid
values are 1 to 9, inclusive; 6 is a good compromise. If debug
is non-zero, cryptic debugging information is produced on standard
error.
Inflate reverses the process, converting compressed data into
uncompressed output. Input is retrieved one byte at a time by
calling get with the argument getr. End of input of signaled by
returning a negative value. The uncompressed output is written
to w, which has the same interface as for deflate.
Deflateblock and inflateblock operate on blocks of memory but
are otherwise similar to deflate and inflate.
The zlib functions are similar, but operate on files with a zlib
header and trailer.
Deflateinit or inflateinit must be called once before any call
to the corresponding routines.
If the above routines fail, they return a negative number indicating
the problem. The possible values are FlateNoMem, FlateInputFail,
FlateOutputFail, FlateCorrupted, and FlateInternal. Flateerr converts
the number into a printable message. FlateOk is defined to be
zero, the successful return value for deflateinit,
deflate, deflatezlib, inflateinit, inflate, and inflatezlib. The
block functions return the number of bytes produced when they
succeed.
Mkcrctab allocates (using malloc(3)), initializes, and returns
a table for rapid computation of 32 bit CRC values using the polynomial
poly. Blockcrc uses tab, a table returned by mkcrctab, to update
crc for the n bytes of data in buf, and returns the new value.
Crc should initially be zero. Blockcrc pre-conditions and
post-conditions crc by ones complementation.
Adler32 updates the Adler 32-bit checksum of the n butes of data
in buf. The initial value of adler (that is, its value after seeing
zero bytes) should be 1.
|
SOURCE
| |
/usr/local/plan9/src/libflate
|
|
|