RESTinio
restinio
third_party
zlib
gzguts.h
Go to the documentation of this file.
1
/* gzguts.h -- zlib internal header definitions for gz* operations
2
* Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
3
* For conditions of distribution and use, see copyright notice in zlib.h
4
*/
5
6
#
ifdef
_LARGEFILE64_SOURCE
7
#
ifndef
_LARGEFILE_SOURCE
8
#
define
_LARGEFILE_SOURCE
1
9
#
endif
10
#
ifdef
_FILE_OFFSET_BITS
11
#
undef
_FILE_OFFSET_BITS
12
#
endif
13
#
endif
14
15
#
ifdef
HAVE_HIDDEN
16
#
define
ZLIB_INTERNAL
__attribute__
(
(
visibility
(
"hidden"
)
)
)
17
#
else
18
#
define
ZLIB_INTERNAL
19
#
endif
20
21
#
include
<
stdio
.
h
>
22
#
include
"zlib.h"
23
#
ifdef
STDC
24
#
include
<
string
.
h
>
25
#
include
<
stdlib
.
h
>
26
#
include
<
limits
.
h
>
27
#
endif
28
29
#
ifndef
_POSIX_SOURCE
30
#
define
_POSIX_SOURCE
31
#
endif
32
#
include
<
fcntl
.
h
>
33
34
#
ifdef
_WIN32
35
#
include
<
stddef
.
h
>
36
#
endif
37
38
#
if
defined
(
__TURBOC__
)
||
defined
(
_MSC_VER
)
||
defined
(
_WIN32
)
39
#
include
<
io
.
h
>
40
#
endif
41
42
#
if
defined
(
_WIN32
)
||
defined
(
__CYGWIN__
)
43
#
define
WIDECHAR
44
#
endif
45
46
#
ifdef
WINAPI_FAMILY
47
#
define
open
_open
48
#
define
read
_read
49
#
define
write
_write
50
#
define
close
_close
51
#
endif
52
53
#
ifdef
NO_DEFLATE
/* for compatibility with old definition */
54
#
define
NO_GZCOMPRESS
55
#
endif
56
57
#
if
defined
(
STDC99
)
||
(
defined
(
__TURBOC__
)
&&
__TURBOC__
>=
0x550
)
58
#
ifndef
HAVE_VSNPRINTF
59
#
define
HAVE_VSNPRINTF
60
#
endif
61
#
endif
62
63
#
if
defined
(
__CYGWIN__
)
64
#
ifndef
HAVE_VSNPRINTF
65
#
define
HAVE_VSNPRINTF
66
#
endif
67
#
endif
68
69
#
if
defined
(
MSDOS
)
&&
defined
(
__BORLANDC__
)
&&
(
BORLANDC
>
0x410
)
70
#
ifndef
HAVE_VSNPRINTF
71
#
define
HAVE_VSNPRINTF
72
#
endif
73
#
endif
74
75
#
ifndef
HAVE_VSNPRINTF
76
#
ifdef
MSDOS
77
/* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
78
but for now we just assume it doesn't. */
79
#
define
NO_vsnprintf
80
#
endif
81
#
ifdef
__TURBOC__
82
#
define
NO_vsnprintf
83
#
endif
84
#
ifdef
WIN32
85
/* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
86
#
if
!
defined
(
vsnprintf
)
&&
!
defined
(
NO_vsnprintf
)
87
#
if
!
defined
(
_MSC_VER
)
||
(
defined
(
_MSC_VER
)
&&
_MSC_VER
<
1500
)
88
#
define
vsnprintf
_vsnprintf
89
#
endif
90
#
endif
91
#
endif
92
#
ifdef
__SASC
93
#
define
NO_vsnprintf
94
#
endif
95
#
ifdef
VMS
96
#
define
NO_vsnprintf
97
#
endif
98
#
ifdef
__OS400__
99
#
define
NO_vsnprintf
100
#
endif
101
#
ifdef
__MVS__
102
#
define
NO_vsnprintf
103
#
endif
104
#
endif
105
106
/* unlike snprintf (which is required in C99), _snprintf does not guarantee
107
null termination of the result -- however this is only used in gzlib.c where
108
the result is assured to fit in the space provided */
109
#
if
defined
(
_MSC_VER
)
&&
_MSC_VER
<
1900
110
#
define
snprintf
_snprintf
111
#
endif
112
113
#
ifndef
local
114
#
define
local
static
115
#
endif
116
/* since "static" is used to mean two completely different things in C, we
117
define "local" for the non-static meaning of "static", for readability
118
(compile with -Dlocal if your debugger can't find static symbols) */
119
120
/* gz* functions always use library allocation functions */
121
#
ifndef
STDC
122
extern
voidp malloc OF((uInt size));
123
extern
void
free OF((voidpf ptr));
124
#
endif
125
126
/* get errno and strerror definition */
127
#
if
defined
UNDER_CE
128
#
include
<
windows
.
h
>
129
#
define
zstrerror
(
)
gz_strwinerror
(
(
DWORD
)
GetLastError
(
)
)
130
#
else
131
#
ifndef
NO_STRERROR
132
#
include
<
errno
.
h
>
133
#
define
zstrerror
(
)
strerror
(
errno
)
134
#
else
135
#
define
zstrerror
(
)
"stdio error (consult errno)"
136
#
endif
137
#
endif
138
139
/* provide prototypes for these when building zlib without LFS */
140
#
if
!
defined
(
_LARGEFILE64_SOURCE
)
||
_LFS64_LARGEFILE
-
0
==
0
141
ZEXTERN
gzFile
ZEXPORT
gzopen64
OF
((
const
char
*,
const
char
*));
142
ZEXTERN
z_off64_t
ZEXPORT
gzseek64
OF
((
gzFile
,
z_off64_t
,
int
));
143
ZEXTERN
z_off64_t
ZEXPORT
gztell64
OF
((
gzFile
));
144
ZEXTERN
z_off64_t
ZEXPORT
gzoffset64
OF
((
gzFile
));
145
#
endif
146
147
/* default memLevel */
148
#
if
MAX_MEM_LEVEL
>=
8
149
#
define
DEF_MEM_LEVEL
8
150
#
else
151
#
define
DEF_MEM_LEVEL
MAX_MEM_LEVEL
152
#
endif
153
154
/* default i/o buffer size -- double this for output when reading (this and
155
twice this must be able to fit in an unsigned type) */
156
#
define
GZBUFSIZE
8192
157
158
/* gzip modes, also provide a little integrity check on the passed structure */
159
#
define
GZ_NONE
0
160
#
define
GZ_READ
7247
161
#
define
GZ_WRITE
31153
162
#
define
GZ_APPEND
1
/* mode set to GZ_WRITE after the file is opened */
163
164
/* values for gz_state how */
165
#
define
LOOK
0
/* look for a gzip header */
166
#
define
COPY
1
/* copy input directly */
167
#
define
GZIP
2
/* decompress a gzip stream */
168
169
/* internal gzip file state data structure */
170
typedef
struct
{
171
/* exposed contents for gzgetc() macro */
172
struct
gzFile_s
x
;
/* "x" for exposed */
173
/* x.have: number of bytes available at x.next */
174
/* x.next: next output data to deliver or write */
175
/* x.pos: current position in uncompressed data */
176
/* used for both reading and writing */
177
int
mode
;
/* see gzip modes above */
178
int
fd
;
/* file descriptor */
179
char
*
path
;
/* path or fd for error messages */
180
unsigned
size
;
/* buffer size, zero if not allocated yet */
181
unsigned
want
;
/* requested buffer size, default is GZBUFSIZE */
182
unsigned
char
*
in
;
/* input buffer (double-sized when writing) */
183
unsigned
char
*
out
;
/* output buffer (double-sized when reading) */
184
int
direct
;
/* 0 if processing gzip, 1 if transparent */
185
/* just for reading */
186
int
how
;
/* 0: get header, 1: copy, 2: decompress */
187
z_off64_t
start
;
/* where the gzip data started, for rewinding */
188
int
eof
;
/* true if end of input file reached */
189
int
past
;
/* true if read requested past end */
190
/* just for writing */
191
int
level
;
/* compression level */
192
int
strategy
;
/* compression strategy */
193
/* seek request */
194
z_off64_t
skip
;
/* amount to skip (already rewound if backwards) */
195
int
seek
;
/* true if seek request pending */
196
/* error information */
197
int
err
;
/* error code */
198
char
*
msg
;
/* error message */
199
/* zlib inflate or deflate stream */
200
z_stream
strm
;
/* stream structure in-place (not a pointer) */
201
} gz_state;
202
typedef
gz_state
FAR
*
gz_statep
;
203
204
/* shared functions */
205
void
ZLIB_INTERNAL
gz_error
OF
((
gz_statep
,
int
,
const
char
*));
206
#
if
defined
UNDER_CE
207
char
ZLIB_INTERNAL *gz_strwinerror OF((DWORD error));
208
#
endif
209
210
/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
211
value -- needed when comparing unsigned to z_off64_t, which is signed
212
(possible z_off64_t types off_t, off64_t, and long are all signed) */
213
#
ifdef
INT_MAX
214
#
define
GT_OFF
(
x
)
(
sizeof
(
int
)
==
sizeof
(
z_off64_t
)
&&
(
x
)
>
INT_MAX
)
215
#
else
216
unsigned
ZLIB_INTERNAL
gz_intmax
OF
((
void
));
217
#
define
GT_OFF
(
x
)
(
sizeof
(
int
)
==
sizeof
(
z_off64_t
)
&&
(
x
)
>
gz_intmax
(
)
)
218
#
endif
OF
#define OF(args)
Definition:
zconf.h:292
gz_state::err
int err
Definition:
gzguts.h:197
gz_state::path
char * path
Definition:
gzguts.h:179
z_off64_t
#define z_off64_t
Definition:
zconf.h:513
MAX_MEM_LEVEL
#define MAX_MEM_LEVEL
Definition:
zconf.h:260
gz_state::mode
int mode
Definition:
gzguts.h:177
gz_state::strm
z_stream strm
Definition:
gzguts.h:200
gz_state::fd
int fd
Definition:
gzguts.h:178
gz_state::eof
int eof
Definition:
gzguts.h:188
gz_state::skip
z_off64_t skip
Definition:
gzguts.h:194
gzFile
struct gzFile_s * gzFile
Definition:
zlib.h:1300
gz_state::in
unsigned char * in
Definition:
gzguts.h:182
gz_state::size
unsigned size
Definition:
gzguts.h:180
gz_state::msg
char * msg
Definition:
gzguts.h:198
gz_state::x
struct gzFile_s x
Definition:
gzguts.h:172
gz_state::want
unsigned want
Definition:
gzguts.h:181
gz_state::seek
int seek
Definition:
gzguts.h:195
gz_state::start
z_off64_t start
Definition:
gzguts.h:187
ZEXTERN
#define ZEXTERN
Definition:
zconf.h:377
gz_state::strategy
int strategy
Definition:
gzguts.h:192
gz_state::past
int past
Definition:
gzguts.h:189
gz_state::level
int level
Definition:
gzguts.h:191
gzFile_s
Definition:
zlib.h:1817
gz_statep
gz_state FAR * gz_statep
Definition:
gzguts.h:202
FAR
#define FAR
Definition:
zconf.h:387
gz_intmax
unsigned ZLIB_INTERNAL gz_intmax()
Definition:
gzlib.c:625
gz_state::direct
int direct
Definition:
gzguts.h:184
gz_state::out
unsigned char * out
Definition:
gzguts.h:183
gz_state::how
int how
Definition:
gzguts.h:186
ZEXPORT
#define ZEXPORT
Definition:
zconf.h:380
ZLIB_INTERNAL
#define ZLIB_INTERNAL
Definition:
zutil.h:19
Generated by
1.8.14