Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gzguts.h
Go to the documentation of this file.
1/* gzguts.h -- zlib internal header definitions for gz* operations
2 * Copyright (C) 2004-2019 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)
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 */
170typedef 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 int reset; /* true if a reset is pending after a Z_FINISH */
194 /* seek request */
195 z_off64_t skip; /* amount to skip (already rewound if backwards) */
196 int seek; /* true if seek request pending */
197 /* error information */
198 int err; /* error code */
199 char *msg; /* error message */
200 /* zlib inflate or deflate stream */
201 z_stream strm; /* stream structure in-place (not a pointer) */
202} gz_state;
203typedef gz_state FAR *gz_statep;
204
205/* shared functions */
206void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *));
207#if defined UNDER_CE
208char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error));
209#endif
210
211/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
212 value -- needed when comparing unsigned to z_off64_t, which is signed
213 (possible z_off64_t types off_t, off64_t, and long are all signed) */
214#ifdef INT_MAX
215# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX)
216#else
217unsigned ZLIB_INTERNAL gz_intmax OF((void));
218# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
219#endif
gz_state FAR * gz_statep
Definition gzguts.h:203
#define ZLIB_INTERNAL
Definition gzguts.h:18
z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence)
Definition gzlib.c:368
z_off64_t ZEXPORT gztell64(gzFile file)
Definition gzlib.c:457
unsigned ZLIB_INTERNAL gz_intmax()
Definition gzlib.c:627
gzFile ZEXPORT gzopen64(char *path, const char *mode) const
Definition gzlib.c:280
z_off64_t ZEXPORT gzoffset64(gzFile file)
Definition gzlib.c:484
void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg)
Definition gzlib.c:581
z_off64_t start
Definition gzguts.h:187
int direct
Definition gzguts.h:184
int strategy
Definition gzguts.h:192
unsigned size
Definition gzguts.h:180
z_off64_t skip
Definition gzguts.h:195
int fd
Definition gzguts.h:178
int past
Definition gzguts.h:189
z_stream strm
Definition gzguts.h:201
int err
Definition gzguts.h:198
int mode
Definition gzguts.h:177
int level
Definition gzguts.h:191
int seek
Definition gzguts.h:196
unsigned want
Definition gzguts.h:181
int how
Definition gzguts.h:186
int reset
Definition gzguts.h:193
char * msg
Definition gzguts.h:199
char * path
Definition gzguts.h:179
unsigned char * out
Definition gzguts.h:183
int eof
Definition gzguts.h:188
unsigned char * in
Definition gzguts.h:182
voidpf alloc_func OF((voidpf opaque, uInt items, uInt size))
Definition zlib.h:81