summary refs log tree commit diff
path: root/doc/zlib/deflateParams.3
blob: 8e770d4e417228c513400f3e5e882c82bab4d211 (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
.Dd January 15, 2017
.Dt DEFLATEPARAMS 3
.Os
.
.Sh NAME
.Nm deflateParams
.Nd update compression level and strategy
.
.Sh LIBRARY
.Lb libz
.
.Sh SYNOPSIS
.In zlib.h
.Ft int
.Fn deflateParams "z_streamp strm" "int level" "int strategy"
.
.Sh DESCRIPTION
Dynamically update the compression level
and compression strategy.
The interpretation of
.Fa level
and
.Fa strategy
is as in
.Xr deflateInit2 3 .
This can be used to switch between compression
and straight copy of the input data,
or to switch to a different kind of input data
requiring a different strategy.
If the compression approach
(which is a function of the level)
or the strategy is changed,
and if any input has been consumed
in a previous
.Xr deflate 3
call,
then the input available so far is compressed
with the old level and strategy using
.Fn deflate strm Z_BLOCK .
There are three approaches
for the compression levels
0, 1..3, and 4..9 respectively.
The new level and strategy
will take effect at the next call of
.Xr deflate 3 .
.
.Pp
If a
.Fn deflate strm Z_BLOCK
is performed by
.Fn deflateParams ,
and it does not have enough output space to complete,
then the parameter change will not take effect.
In this case,
.Fn deflateParams
can be called again
with the same parameters
and more output space
to try again.
.
.Pp
In order to assure a change in the parameters
on the first try,
the deflate stream should be flushed using
.Xr deflate 3
with
.Dv Z_BLOCK
or other flush request until
.Fa strm.avail_out
is not zero,
before calling
.Fn deflateParams .
Then no more input data
should be provided before the
.Fn deflateParams
call.
If this is done,
the old level and strategy
will be applied
to the data compressed before
.Fn deflateParams ,
and the new level and strategy
will be applied
to the data compressed after
.Fn deflateParams .
.
.Sh RETURN VALUES
.Fn deflateParams
returns
.Dv Z_OK
on success,
.Dv Z_STREAM_ERROR
if the source stream state was inconsistent
or if a parameter was invalid,
or
.Dv Z_BUF_ERROR
if there was not enough output space
to complete the compression
of the available input data
before a change in the strategy or approach.
Note that in the case of a
.Dv Z_BUF_ERROR ,
the parameters are not changed.
A return value of
.Dv Z_BUF_ERROR
is not fatal,
in which case
.Fn deflateParams
can be retried
with more output space.
.
.Sh SEE ALSO
.Xr deflateInit2 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
d> Works properly for weird paths, etc. 2020-10-27Allow cd host:path over sshJune McEnroe Requires AcceptEnv SSH_CD in the remote sshd_config. 2020-10-07Use mandoc -T utf8 for text.June McEnroe Don't depend on LANG being set. 2020-09-20Add The Awakened KingdomJune McEnroe A cute extra novella. Finally finished this series. 2020-09-12Move /opt/local back, cheat port select to use system manJune McEnroe This is not really how you're supposed to use the select system, I don't think, since the mandoc package actually creates those files, but it does work. This lets me actually use the git installed by MacPorts. 2020-09-12Move /opt/local behind /usr againJune McEnroe The reason I did this with pkgsrc was because I actually don't want the man(1) from mandoc, since it won't follow MANSECT. Same applies to MacPorts. I wish I could disable its man(1) with a variant or whatever. 2020-09-12Enable toc in cgit renderings of man pagesJune McEnroe But keep it disabled for READMEs since they always use non-standard sections and the TOC is just distracting there, I think. Also add the style so its h1 is the same size as the ones inside sections... 2020-09-11Install mandoc on macOSJune McEnroe 2020-09-11Rewrite install script yet againJune McEnroe 2020-09-11Remove NetBSD from install scriptJune McEnroe I never use it. 2020-09-11Use MacPorts rather than pkgsrcJune McEnroe My system is probably such a mess now... 2020-09-11Add debian VM name to sshJune McEnroe 2020-09-11Add influencer tweetJune McEnroe 2020-09-10Add The Kingdom of GodsJune McEnroe Reading has really slowed down :( 2020-09-07Add SunglassesJune McEnroe An IRC find. 2020-09-06Add Between the BreathsJune McEnroe One of those good songs from a soundtrack of a film that probably isn't? The summary sounds a lot more interesting than the title implies, at least. 2020-09-04Open /dev/tty in nudgeJune McEnroe This makes it work even when it's run connected to a pipe, i.e. as the notify command of catgirl... 2020-09-04Add nudgeJune McEnroe 2020-09-03Build fbclock with -lzJune McEnroe I guess this got lost somewhere, long ago... 2020-08-29Add tweets from retweetsJune McEnroe