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