1 cfa37a7b 2004-04-10 devnull .TH FLATE 3
3 cfa37a7b 2004-04-10 devnull deflateinit, deflate, deflatezlib, deflateblock, deflatezlibblock, inflateinit, inflate, inflatezlib, inflateblock, inflatezlibblock, flateerr, mkcrctab, blockcrc, adler32 \- deflate compression
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B #include <u.h>
7 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
9 cfa37a7b 2004-04-10 devnull .B #include <flate.h>
11 cfa37a7b 2004-04-10 devnull .ta \w'ulongmm'u
14 cfa37a7b 2004-04-10 devnull int deflateinit(void)
17 cfa37a7b 2004-04-10 devnull int deflate(void *wr, int (*w)(void*,void*,int),
20 cfa37a7b 2004-04-10 devnull void *rr, int (*r)(void*,void*,int),
23 cfa37a7b 2004-04-10 devnull int level, int debug)
26 cfa37a7b 2004-04-10 devnull int deflatezlib(void *wr, int (*w)(void*,void*,int),
29 cfa37a7b 2004-04-10 devnull void *rr, int (*r)(void*,void*,int),
32 cfa37a7b 2004-04-10 devnull int level, int debug)
35 cfa37a7b 2004-04-10 devnull int deflateblock(uchar *dst, int dsize,
38 cfa37a7b 2004-04-10 devnull uchar *src, int ssize,
41 cfa37a7b 2004-04-10 devnull int level, int debug)
44 cfa37a7b 2004-04-10 devnull int deflatezlibblock(uchar *dst, int dsize,
47 cfa37a7b 2004-04-10 devnull uchar *src, int ssize,
50 cfa37a7b 2004-04-10 devnull int level, int debug)
53 cfa37a7b 2004-04-10 devnull int inflateinit(void)
56 cfa37a7b 2004-04-10 devnull int inflate(void *wr, int (*w)(void*, void*, int),
59 cfa37a7b 2004-04-10 devnull void *getr, int (*get)(void*))
62 cfa37a7b 2004-04-10 devnull int inflatezlib(void *wr, int (*w)(void*, void*, int),
65 cfa37a7b 2004-04-10 devnull void *getr, int (*get)(void*))
68 cfa37a7b 2004-04-10 devnull int inflateblock(uchar *dst, int dsize,
71 cfa37a7b 2004-04-10 devnull uchar *src, int ssize)
74 cfa37a7b 2004-04-10 devnull int inflatezlibblock(uchar *dst, int dsize,
77 cfa37a7b 2004-04-10 devnull uchar *src, int ssize)
80 cfa37a7b 2004-04-10 devnull char *flateerr(int error)
83 cfa37a7b 2004-04-10 devnull ulong *mkcrctab(ulong poly)
86 cfa37a7b 2004-04-10 devnull ulong blockcrc(ulong *tab, ulong crc, void *buf, int n)
89 cfa37a7b 2004-04-10 devnull ulong adler32(ulong adler, void *buf, int n)
90 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
91 cfa37a7b 2004-04-10 devnull These routines compress and decompress data using the deflate compression algorithm,
92 cfa37a7b 2004-04-10 devnull which is used for most gzip, zip, and zlib files.
94 cfa37a7b 2004-04-10 devnull .I Deflate
95 cfa37a7b 2004-04-10 devnull compresses input data retrieved by calls to
97 cfa37a7b 2004-04-10 devnull with arguments
99 cfa37a7b 2004-04-10 devnull an input buffer, and a count of bytes to read.
101 cfa37a7b 2004-04-10 devnull should return the number of bytes read;
102 cfa37a7b 2004-04-10 devnull end of input is signaled by returning zero, an input error by
103 cfa37a7b 2004-04-10 devnull returning a negative number.
104 cfa37a7b 2004-04-10 devnull The compressed output is written to
106 cfa37a7b 2004-04-10 devnull with arguments
107 cfa37a7b 2004-04-10 devnull .IR wr ,
108 cfa37a7b 2004-04-10 devnull the output data, and the number of bytes to write.
110 cfa37a7b 2004-04-10 devnull should return the number of bytes written;
111 cfa37a7b 2004-04-10 devnull writing fewer than the requested number of bytes is an error.
112 cfa37a7b 2004-04-10 devnull .I Level
113 cfa37a7b 2004-04-10 devnull indicates the amount of computation deflate should do while compressing the data.
115 cfa37a7b 2004-04-10 devnull .I levels
116 cfa37a7b 2004-04-10 devnull usually take more time and produce smaller outputs.
117 cfa37a7b 2004-04-10 devnull Valid values are 1 to 9, inclusive; 6 is a good compromise.
119 cfa37a7b 2004-04-10 devnull .I debug
120 cfa37a7b 2004-04-10 devnull is non-zero, cryptic debugging information is produced on standard error.
122 cfa37a7b 2004-04-10 devnull .I Inflate
123 cfa37a7b 2004-04-10 devnull reverses the process, converting compressed data into uncompressed output.
124 cfa37a7b 2004-04-10 devnull Input is retrieved one byte at a time by calling
126 cfa37a7b 2004-04-10 devnull with the argument
127 cfa37a7b 2004-04-10 devnull .IR getr .
128 cfa37a7b 2004-04-10 devnull End of input of signaled by returning a negative value.
129 cfa37a7b 2004-04-10 devnull The uncompressed output is written to
131 cfa37a7b 2004-04-10 devnull which has the same interface as for
132 cfa37a7b 2004-04-10 devnull .IR deflate .
135 cfa37a7b 2004-04-10 devnull Deflateblock
137 cfa37a7b 2004-04-10 devnull .I inflateblock
138 cfa37a7b 2004-04-10 devnull operate on blocks of memory but are otherwise similar to
139 cfa37a7b 2004-04-10 devnull .I deflate
141 cfa37a7b 2004-04-10 devnull .IR inflate .
143 cfa37a7b 2004-04-10 devnull The zlib functions are similar, but operate on files with a zlib header and trailer.
145 cfa37a7b 2004-04-10 devnull .I Deflateinit
147 cfa37a7b 2004-04-10 devnull .I inflateinit
148 cfa37a7b 2004-04-10 devnull must be called once before any call to the corresponding routines.
150 cfa37a7b 2004-04-10 devnull If the above routines fail,
151 cfa37a7b 2004-04-10 devnull they return a negative number indicating the problem.
152 cfa37a7b 2004-04-10 devnull The possible values are
153 cfa37a7b 2004-04-10 devnull .IR FlateNoMem ,
154 cfa37a7b 2004-04-10 devnull .IR FlateInputFail ,
155 cfa37a7b 2004-04-10 devnull .IR FlateOutputFail ,
156 cfa37a7b 2004-04-10 devnull .IR FlateCorrupted ,
158 cfa37a7b 2004-04-10 devnull .IR FlateInternal .
159 cfa37a7b 2004-04-10 devnull .I Flateerr
160 cfa37a7b 2004-04-10 devnull converts the number into a printable message.
161 cfa37a7b 2004-04-10 devnull .I FlateOk
162 cfa37a7b 2004-04-10 devnull is defined to be zero,
163 cfa37a7b 2004-04-10 devnull the successful return value for
164 cfa37a7b 2004-04-10 devnull .IR deflateinit ,
165 cfa37a7b 2004-04-10 devnull .IR deflate ,
166 cfa37a7b 2004-04-10 devnull .IR deflatezlib ,
167 cfa37a7b 2004-04-10 devnull .IR inflateinit ,
168 cfa37a7b 2004-04-10 devnull .IR inflate ,
170 cfa37a7b 2004-04-10 devnull .IR inflatezlib .
171 cfa37a7b 2004-04-10 devnull The block functions return the number of bytes produced when they succeed.
173 cfa37a7b 2004-04-10 devnull .I Mkcrctab
174 cfa37a7b 2004-04-10 devnull allocates
176 bf8a59fa 2004-04-11 devnull .IR malloc (3)),
177 cfa37a7b 2004-04-10 devnull initializes, and returns a table for rapid computation of 32 bit CRC values using the polynomial
178 cfa37a7b 2004-04-10 devnull .IR poly .
179 cfa37a7b 2004-04-10 devnull .I Blockcrc
181 cfa37a7b 2004-04-10 devnull .IR tab ,
182 cfa37a7b 2004-04-10 devnull a table returned by
183 cfa37a7b 2004-04-10 devnull .IR mkcrctab ,
184 cfa37a7b 2004-04-10 devnull to update
188 cfa37a7b 2004-04-10 devnull bytes of data in
189 cfa37a7b 2004-04-10 devnull .IR buf ,
190 cfa37a7b 2004-04-10 devnull and returns the new value.
192 cfa37a7b 2004-04-10 devnull should initially be zero.
193 cfa37a7b 2004-04-10 devnull .I Blockcrc
194 cfa37a7b 2004-04-10 devnull pre-conditions and post-conditions
196 cfa37a7b 2004-04-10 devnull by ones complementation.
198 cfa37a7b 2004-04-10 devnull .I Adler32
199 cfa37a7b 2004-04-10 devnull updates the Adler 32-bit checksum of the
201 cfa37a7b 2004-04-10 devnull butes of data in
202 cfa37a7b 2004-04-10 devnull .IR buf.
203 cfa37a7b 2004-04-10 devnull The initial value of
204 cfa37a7b 2004-04-10 devnull .I adler
205 cfa37a7b 2004-04-10 devnull (that is, its value after seeing zero bytes) should be 1.
206 cfa37a7b 2004-04-10 devnull .SH SOURCE
207 b5fdffee 2004-04-19 devnull .B /usr/local/plan9/src/libflate