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