summary refs log tree commit diff
path: root/doc/zlib/deflateInit.3
blob: a893dd91df6633137f26f76a4ad731716d7d6594 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
.Dd January 15, 2017
.Dt DEFLATEINIT 3
.Os
.
.Sh NAME
.Nm deflateInit
.Nd initialize deflate stream
.
.Sh LIBRARY
.Lb libz
.
.Sh SYNOPSIS
.In zlib.h
.
.Ft typedef voidpf
.Fo (*alloc_func)
.Fa "voidpf opaque"
.Fa "uInt items"
.Fa "uInt size"
.Fc
.
.Ft typedef void
.Fo (*free_func)
.Fa "voidpf opaque"
.Fa "voidpf address"
.Fc
.
.Bd -literal
typedef struct z_stream_s {
	z_const Bytef *next_in;
	uInt     avail_in;
	uLong    total_in;

	Bytef    *next_out;
	uInt     avail_out;
	uLong    total_out;

	z_const char *msg;
	struct internal_state FAR *state;

	alloc_func zalloc;
	free_func  zfree;
	voidpf     opaque;

	int     data_type;
	uLong   adler;
	uLong   reserved;
} z_stream;
.Ed
.
.Pp
.Vt typedef z_stream FAR *z_streamp;
.
.Ft int
.Fn deflateInit "z_streamp strm" "int level"
.
.Sh DESCRIPTION
Initializes the internal stream state for compression.
The fields
.Fa zalloc ,
.Fa zfree
and
.Fa opaque
must be initialized before by the caller.
If
.Fa zalloc
and
.Fa zfree
are set to
.Dv Z_NULL ,
.Fn deflateInit
updates them to use default allocation functions.
.Fn deflateInit
does not perform any compression:
this will be done by
.Xr deflate 3 .
.
.Pp
The compression
.Fa level
must be
.Dv Z_DEFAULT_COMPRESSION ,
or between 0 and 9:
1 gives best speed,
9 gives best compression,
0 gives no compression at all
(the input data is simply copied a block at a time).
.Dv Z_DEFAULT_COMPRESSION
requests a default compromise between speed and compression
(currently equivalent to level 6).
.
.Pp
The fields of
.Vt z_stream
are as follows:
.
.Bl -tag -width "data_type"
.It Fa next_in
next input byte
.It Fa avail_in
number of bytes available at
.Fa next_in
.It Fa total_in
total number of input bytes read so far
.It Fa next_out
next output byte will go here
.It Fa avail_out
remaining free space at
.Fa next_out
.It Fa total_out
total number of bytes output so far
.It Fa msg
last error message,
.Dv NULL
if no error
.It Fa state
not visible by applications
.It Fa zalloc
used to allocate the internal state
.It Fa zfree
used to free the internal state
.It Fa opaque
private data object passed to
.Fa zalloc
and
.Fa zfree
.It data_type
best guess about the data type:
binary or text for
.Xr deflate 3 ,
or the decoding state for
.Xr inflate 3
.It adler
Adler-32 or CRC-32 value of the uncompressed data
.It reserved
reserved for future use
.El
.
.Sh RETURN VALUES
.Fn deflateInit
returns
.Dv Z_OK
if success,
.Dv Z_MEM_ERROR
if there was not enough memory,
.Dv Z_STREAM_ERROR
if
.Fa level
is not a valid compression level,
or
.Dv Z_VERSION_ERROR
if the zlib library version
.Pq Xr zlibVersion 3
is incompatible with the version assumed by the caller
.Pq Dv ZLIB_VERSION .
.Fa msg
is set to null
if there is no error message.
.
.Sh SEE ALSO
.Xr deflate 3 ,
.Xr deflateCopy 3 ,
.Xr deflateEnd 3 ,
.Xr deflateInit2 3 ,
.Xr deflatePrime 3 ,
.Xr deflateReset 3 ,
.Xr deflateSetDictionary 3 ,
.Xr deflateTune 3
.
.Sh HISTORY
This manual page was converted from
.In zlib.h
to mdoc format by
.An C. McEnroe Aq Mt june@causal.agency .
.
.Sh AUTHORS
.An Jean-loup Gailly Aq Mt jloup@gzip.org
.An Mark Adler Aq Mt madler@alumni.caltech.edu
g.me.uk> 2014-12-13ui-shared: remove toggle_ssdiff arg to cgit_commit_link()John Keeping This argument is never used with a value other than zero, so remove it and simplify the code. Signed-off-by: John Keeping <john@keeping.me.uk> 2014-08-07git: update to v2.0.4John Keeping No CGit changes required. Signed-off-by: John Keeping <john@keeping.me.uk> 2014-08-07Always check if README exists in choose_readme()Lukas Fleischer Specifying a nonexistent README file via the readme option is sometimes useful, e.g. when using scan-path and setting a global default. Currently, we check whether there is only one option in the readme option and, if so, we choose that file without checking whether it exists. As a consequence, all repositories are equipped with an about link in the aforementioned scenario, even if there is no about file. Remove the early check for the number of keys and always check whether the file exists instead. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de> 2014-08-01cgitrc.5: we mean a cgi response, not requestJason A. Donenfeld 2014-07-28ui-stats.c: set parent pointer to NULL after freeing itJohn Keeping We do this everywhere else, so we should be doing it here as well. Signed-off-by: John Keeping <john@keeping.me.uk> 2014-07-28git: update to v2.0.3John Keeping This is slightly more involved than just bumping the version number because it pulls in a change to convert the commit buffer to a slab, removing the "buffer" field from "struct commit". All sites that access "commit->buffer" have been changed to use the new functions provided for this purpose. Signed-off-by: John Keeping <john@keeping.me.uk> 2014-07-28parsing.c: make commit buffer constJohn Keeping This will be required in order to incorporate the changes to commit buffer handling in Git 2.0.2. Signed-off-by: John Keeping <john@keeping.me.uk> 2014-06-30Bump version.Jason A. Donenfeld 2014-06-29remove debug fprinf() calls that sneaked in with commit 79c985Christian Hesse 2014-06-28git: update to 2.0.1Christian Hesse Everything works just bumping the version in Makefile and commit hash in submodule. No code changes required. 2014-06-28ui-patch: Flush stdout after outputting dataJohn Keeping It looks like cached patches are truncated to the nearest 1024-byte boundary in the patch body. E.g.: > mricon@nikko:[/tmp]$ wget -O no-cache > "http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/patch/?id=6e1b4fdad5157bb9e88777d525704aba24389bee" ... > 2014-06-11 15:34:51 (80.4 MB/s) - ‘no-cache’ saved [4767] Patch is complete, without truncation. Next hit, with cache in place: > mricon@nikko:[/tmp]$ wget -O yes-cache > "http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/patch/?id=6e1b4 > fdad5157bb9e88777d525704aba24389bee" ... > 2014-06-11 15:35:01 (17.0 MB/s) - ‘yes-cache’ saved [4096/4096] Length truncated to 4096. The cache on disk looks truncated as well, so the bug must me during the process of saving cache. The same is true for larger patches: > mricon@nikko:[/tmp]$ wget -O no-cache > "http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/patch/?id=2840c566e95599cd60c7143762ca8b49d9395050" ... > 2014-06-11 15:41:33 (1.07 MB/s) - ‘no-cache’ saved [979644] 979644 bytes with a cache-miss > mricon@nikko:[/tmp]$ wget -O yes-cache > "http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/patch/?id=2840c > 566e95599cd60c7143762ca8b49d9395050" ... > 2014-06-11 15:41:46 (1.05 MB/s) - ‘yes-cache’ saved [978944] 978944 (956KB exactly) with a cache-hit Since the "html" functions use raw write(2) to STDIO_FILENO, we don't notice problems with most pages, but raw patches write using printf(3). This is fine if we're outputting straight to stdout since the buffers are flushed on exit, but we close the cache output before this, so the cached output ends up being truncated. Make sure the buffers are flushed when we finish outputting a patch so that we avoid this. No other UIs use printf(3) so we do not need to worry about them. Actually, it's slightly more interesting than this... since we don't set GIT_FLUSH, Git decides whether or not it will flush stdout after writing each commit based on whether or not stdout points to a regular file (in maybe_flush_or_die()). Which means that when writing directly to the webserver, Git flushes stdout for us, but when we redirect stdout to the cache it points to a regular file so Git no longer flushes the output for us. The patch is still correct, but perhaps the full explanation is interesting! Reported-by: Konstantin Ryabitsev <mricon@kernel.org> 2014-06-28ui-log: ignore unhandled argumentsJohn Keeping If you search for a bogus range string here: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/log/ Using something like "range" and "qwerty123456", it returns an "Internal Server Error" and the following in the logs: > [Tue Jun 10 17:45:32 2014] [error] [client 172.21.1.6] fatal: > ambiguous argument 'qwerty123456': unknown revision or path not in the > working tree., referer: > http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/ > [Tue Jun 10 17:45:32 2014] [error] [client 172.21.1.6] Use '--' to > separate paths from revisions, like this:, referer: > http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/ > [Tue Jun 10 17:45:32 2014] [error] [client 172.21.1.6] 'git <command> > [<revision>...] -- [<file>...]', referer: > http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/ > [Tue Jun 10 17:45:32 2014] [error] [client 172.21.1.6] Premature end > of script headers: cgit, referer: > http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/ The cache will kick in, so if you search for the same string again, it'll show an empty range, so you have to change the bogus strings each time. This is because we just pass the arguments straight to Git's revision parsing machinery which die()s if it cannot parse an argument, printing the above to stderr and exiting. The patch below makes it a bit friendlier by just ignoring unhandled arguments, but I can't see an easy way to report errors when we can't parse revision arguments without losing the flexibility of supporting all of the revision specifiers supported by Git. Reported-by: Konstantin Ryabitsev <mricon@kernel.org> 2014-06-28git: update for git 2.0Christian Hesse prefixcmp() and suffixcmp() have been remove, functionality is now provided by starts_with() and ends_with(). Retrurn values have been changed, so instead of just renaming we have to fix logic. Everything else looks just fine. 2014-04-17remove trailing whitespaces from source filesChristian Hesse 2014-04-12git: update to 1.9.2Christian Hesse Everything works just bumping the version in Makefile and commit hash in submodule. No code changes required. 2014-04-05Fix cgit_parse_url when a repo url is contained in another repo urlJulian Maurice For example, if I have two repos (remove-suffix is enabled): /foo /foo/bar http://cgit/foo/bar/ is interpreted as "repository 'foo', command 'bar'" instead of "repository 'foo/bar'" 2014-03-20Makefile: use more reliable git tarball mirrorJason A. Donenfeld 2014-03-20git: update to 1.9.1Christian Hesse