Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
.TH FLATE 2
2
.SH NAME
3
deflateinit, deflate, deflatezlib, deflateblock, deflatezlibblock, inflateinit, inflate, inflatezlib, inflateblock, inflatezlibblock, flateerr, mkcrctab, blockcrc, adler32 \- deflate compression
4
.SH SYNOPSIS
5
.B #include <u.h>
6
.br
7
.B #include <libc.h>
8
.br
9
.B #include <flate.h>
10
.PP
11
.ta \w'ulongmm'u
12
.PP
13
.B
14
int	deflateinit(void)
15
.PP
16
.B
17
int	deflate(void *wr, int (*w)(void*,void*,int),
18
.br
19
.B
20
	void *rr, int (*r)(void*,void*,int),
21
.br
22
.B
23
	int level, int debug)
24
.PP
25
.B
26
int	deflatezlib(void *wr, int (*w)(void*,void*,int),
27
.br
28
.B
29
	void *rr, int (*r)(void*,void*,int),
30
.br
31
.B
32
	int level, int debug)
33
.PP
34
.B
35
int	deflateblock(uchar *dst, int dsize,
36
.br
37
.B
38
	uchar *src, int ssize,
39
.br
40
.B
41
	int level, int debug)
42
.PP
43
.B
44
int	deflatezlibblock(uchar *dst, int dsize,
45
.br
46
.B
47
	uchar *src, int ssize,
48
.br
49
.B
50
	int level, int debug)
51
.PP
52
.B
53
int	inflateinit(void)
54
.PP
55
.B
56
int	inflate(void *wr, int (*w)(void*, void*, int),
57
.br
58
.B
59
	void *getr, int (*get)(void*))
60
.PP
61
.B
62
int	inflatezlib(void *wr, int (*w)(void*, void*, int),
63
.br
64
.B
65
	void *getr, int (*get)(void*))
66
.PP
67
.B
68
int	inflateblock(uchar *dst, int dsize,
69
.br
70
.B
71
	uchar *src, int ssize)
72
.PP
73
.B
74
int	inflatezlibblock(uchar *dst, int dsize,
75
.br
76
.B
77
	uchar *src, int ssize)
78
.PP
79
.B
80
char	*flateerr(int error)
81
.PP
82
.B
83
ulong	*mkcrctab(ulong poly)
84
.PP
85
.B
86
ulong	blockcrc(ulong *tab, ulong crc, void *buf, int n)
87
.PP
88
.B
89
ulong	adler32(ulong adler, void *buf, int n)
90
.SH DESCRIPTION
91
These routines compress and decompress data using the deflate compression algorithm,
92
which is used for most gzip, zip, and zlib files.
93
.PP
94
.I Deflate
95
compresses input data retrieved by calls to
96
.I r
97
with arguments
98
.IR rr ,
99
an input buffer, and a count of bytes to read.
100
.I R
101
should return the number of bytes read;
102
end of input is signaled by returning zero, an input error by
103
returning a negative number.
104
The compressed output is written to
105
.I w
106
with arguments
107
.IR wr ,
108
the output data, and the number of bytes to write.
109
.I W
110
should return the number of bytes written;
111
writing fewer than the requested number of bytes is an error.
112
.I Level
113
indicates the amount of computation deflate should do while compressing the data.
114
Higher
115
.I levels
116
usually take more time and produce smaller outputs.
117
Valid values are 1 to 9, inclusive; 6 is a good compromise.
118
If
119
.I debug
120
is non-zero, cryptic debugging information is produced on standard error.
121
.PP
122
.I Inflate
123
reverses the process, converting compressed data into uncompressed output.
124
Input is retrieved one byte at a time by calling
125
.I get
126
with the argument
127
.IR getr .
128
End of input of signaled by returning a negative value.
129
The uncompressed output is written to
130
.IR w ,
131
which has the same interface as for
132
.IR deflate .
133
.PP
134
.I
135
Deflateblock
136
and
137
.I inflateblock
138
operate on blocks of memory but are otherwise similar to
139
.I deflate
140
and
141
.IR inflate .
142
.PP
143
The zlib functions are similar, but operate on files with a zlib header and trailer.
144
.PP
145
.I Deflateinit
146
or
147
.I inflateinit
148
must be called once before any call to the corresponding routines.
149
.PP
150
If the above routines fail,
151
they return a negative number indicating the problem.
152
The possible values are
153
.IR FlateNoMem ,
154
.IR FlateInputFail ,
155
.IR FlateOutputFail ,
156
.IR FlateCorrupted ,
157
and 
158
.IR FlateInternal .
159
.I Flateerr
160
converts the number into a printable message.
161
.I FlateOk
162
is defined to be zero,
163
the successful return value for
164
.IR deflateinit ,
165
.IR deflate ,
166
.IR deflatezlib ,
167
.IR inflateinit ,
168
.IR inflate ,
169
and 
170
.IR inflatezlib .
171
The block functions return the number of bytes produced when they succeed.
172
.PP
173
.I Mkcrctab
174
allocates
175
(using
176
.IR malloc (2)),
177
initializes, and returns a table for rapid computation of 32 bit CRC values using the polynomial
178
.IR poly .
179
.I Blockcrc
180
uses
181
.IR tab ,
182
a table returned by
183
.IR mkcrctab ,
184
to update
185
.I crc
186
for the
187
.I n
188
bytes of data in
189
.IR buf ,
190
and returns the new value.
191
.I Crc
192
should initially be zero.
193
.I Blockcrc
194
pre-conditions and post-conditions
195
.I crc
196
by ones complementation.
197
.PP
198
.I Adler32
199
updates the Adler 32-bit checksum of the
200
.I n
201
butes of data in
202
.IR buf.
203
The initial value of
204
.I adler
205
(that is, its value after seeing zero bytes) should be 1.
206
.SH SOURCE
207
.B /sys/src/libflate