|
@@ -1,223 +1,218 @@
|
|
|
-/* gzguts.h -- zlib internal header definitions for gz* operations
|
|
|
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
|
|
|
- * For conditions of distribution and use, see copyright notice in zlib.h
|
|
|
- */
|
|
|
-
|
|
|
-#ifdef _LARGEFILE64_SOURCE
|
|
|
-# ifndef _LARGEFILE_SOURCE
|
|
|
-# define _LARGEFILE_SOURCE 1
|
|
|
-# endif
|
|
|
-# ifdef _FILE_OFFSET_BITS
|
|
|
-# undef _FILE_OFFSET_BITS
|
|
|
-# endif
|
|
|
-#endif
|
|
|
-
|
|
|
-#ifdef HAVE_HIDDEN
|
|
|
-# define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
|
|
|
-#else
|
|
|
-# define ZLIB_INTERNAL
|
|
|
-#endif
|
|
|
-
|
|
|
-#include <stdio.h>
|
|
|
-#include "zlib.h"
|
|
|
-#ifdef STDC
|
|
|
-# include <string.h>
|
|
|
-# include <stdlib.h>
|
|
|
-# include <limits.h>
|
|
|
-#endif
|
|
|
-
|
|
|
-#ifndef _POSIX_SOURCE
|
|
|
-# define _POSIX_SOURCE
|
|
|
-#endif
|
|
|
-#include <fcntl.h>
|
|
|
-
|
|
|
-#ifdef _WIN32
|
|
|
-# include <stddef.h>
|
|
|
-#endif
|
|
|
-
|
|
|
-#if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32)
|
|
|
-# include <io.h>
|
|
|
-#endif
|
|
|
-
|
|
|
-#if defined(_WIN32) || defined(__CYGWIN__)
|
|
|
-# define WIDECHAR
|
|
|
-#endif
|
|
|
-
|
|
|
-#ifdef WINAPI_FAMILY
|
|
|
-# define open _open
|
|
|
-# define read _read
|
|
|
-# define write _write
|
|
|
-# define close _close
|
|
|
-#endif
|
|
|
-
|
|
|
-#ifdef NO_DEFLATE /* for compatibility with old definition */
|
|
|
-# define NO_GZCOMPRESS
|
|
|
-#endif
|
|
|
-
|
|
|
-#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
|
|
|
-# ifndef HAVE_VSNPRINTF
|
|
|
-# define HAVE_VSNPRINTF
|
|
|
-# endif
|
|
|
-#endif
|
|
|
-
|
|
|
-#if defined(__CYGWIN__)
|
|
|
-# ifndef HAVE_VSNPRINTF
|
|
|
-# define HAVE_VSNPRINTF
|
|
|
-# endif
|
|
|
-#endif
|
|
|
-
|
|
|
-#if defined(MSDOS) && defined(__BORLANDC__) && (BORLANDC > 0x410)
|
|
|
-# ifndef HAVE_VSNPRINTF
|
|
|
-# define HAVE_VSNPRINTF
|
|
|
-# endif
|
|
|
-#endif
|
|
|
-
|
|
|
-#ifndef HAVE_VSNPRINTF
|
|
|
-# ifdef MSDOS
|
|
|
-/* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
|
|
|
- but for now we just assume it doesn't. */
|
|
|
-# define NO_vsnprintf
|
|
|
-# endif
|
|
|
-# ifdef __TURBOC__
|
|
|
-# define NO_vsnprintf
|
|
|
-# endif
|
|
|
-# ifdef WIN32
|
|
|
-/* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
|
|
|
-# if !defined(vsnprintf) && !defined(NO_vsnprintf)
|
|
|
-# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 )
|
|
|
-# define vsnprintf _vsnprintf
|
|
|
-# endif
|
|
|
-# endif
|
|
|
-# endif
|
|
|
-# ifdef __SASC
|
|
|
-# define NO_vsnprintf
|
|
|
-# endif
|
|
|
-# ifdef VMS
|
|
|
-# define NO_vsnprintf
|
|
|
-# endif
|
|
|
-# ifdef __OS400__
|
|
|
-# define NO_vsnprintf
|
|
|
-# endif
|
|
|
-# ifdef __MVS__
|
|
|
-# define NO_vsnprintf
|
|
|
-# endif
|
|
|
-#endif
|
|
|
-
|
|
|
-/* unlike snprintf (which is required in C99), _snprintf does not guarantee
|
|
|
- null termination of the result -- however this is only used in gzlib.c where
|
|
|
- the result is assured to fit in the space provided */
|
|
|
-#if defined(_MSC_VER) && _MSC_VER < 1900
|
|
|
-# define snprintf _snprintf
|
|
|
-#endif
|
|
|
-
|
|
|
-#ifndef local
|
|
|
-# define local static
|
|
|
-#endif
|
|
|
-/* since "static" is used to mean two completely different things in C, we
|
|
|
- define "local" for the non-static meaning of "static", for readability
|
|
|
- (compile with -Dlocal if your debugger can't find static symbols) */
|
|
|
-
|
|
|
-/* gz* functions always use library allocation functions */
|
|
|
-#ifndef STDC
|
|
|
- extern voidp malloc OF((uInt size));
|
|
|
- extern void free OF((voidpf ptr));
|
|
|
-#endif
|
|
|
-
|
|
|
-/* get errno and strerror definition */
|
|
|
-#if defined UNDER_CE
|
|
|
-# include <windows.h>
|
|
|
-# define zstrerror() gz_strwinerror((DWORD)GetLastError())
|
|
|
-#else
|
|
|
-# ifndef NO_STRERROR
|
|
|
-# include <errno.h>
|
|
|
-# define zstrerror() strerror(errno)
|
|
|
-# else
|
|
|
-# define zstrerror() "stdio error (consult errno)"
|
|
|
-# endif
|
|
|
-#endif
|
|
|
-
|
|
|
-/* provide prototypes for these when building zlib without LFS */
|
|
|
-#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0
|
|
|
- ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
|
|
|
- ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
|
|
|
- ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
|
|
|
- ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
|
|
|
-#endif
|
|
|
-
|
|
|
-/* default memLevel */
|
|
|
-#if MAX_MEM_LEVEL >= 8
|
|
|
-# define DEF_MEM_LEVEL 8
|
|
|
-#else
|
|
|
-# define DEF_MEM_LEVEL MAX_MEM_LEVEL
|
|
|
-#endif
|
|
|
-
|
|
|
-/* default i/o buffer size -- double this for output when reading (this and
|
|
|
- twice this must be able to fit in an unsigned type) */
|
|
|
-#define GZBUFSIZE 8192
|
|
|
-
|
|
|
-/* gzip modes, also provide a little integrity check on the passed structure */
|
|
|
-#define GZ_NONE 0
|
|
|
-#define GZ_READ 7247
|
|
|
-#define GZ_WRITE 31153
|
|
|
-#define GZ_APPEND 1 /* mode set to GZ_WRITE after the file is opened */
|
|
|
-
|
|
|
-/* values for gz_state how */
|
|
|
-#define LOOK 0 /* look for a gzip header */
|
|
|
-#define COPY 1 /* copy input directly */
|
|
|
-#define GZIP 2 /* decompress a gzip stream */
|
|
|
-
|
|
|
-/* internal gzip file state data structure */
|
|
|
-typedef struct {
|
|
|
- /* exposed contents for gzgetc() macro */
|
|
|
- struct gzFile_s x; /* "x" for exposed */
|
|
|
- /* x.have: number of bytes available at x.next */
|
|
|
- /* x.next: next output data to deliver or write */
|
|
|
- /* x.pos: current position in uncompressed data */
|
|
|
- /* used for both reading and writing */
|
|
|
- int mode; /* see gzip modes above */
|
|
|
- int fd; /* file descriptor */
|
|
|
- char *path; /* path or fd for error messages */
|
|
|
- unsigned size; /* buffer size, zero if not allocated yet */
|
|
|
- unsigned want; /* requested buffer size, default is GZBUFSIZE */
|
|
|
- unsigned char *in; /* input buffer (double-sized when writing) */
|
|
|
- unsigned char *out; /* output buffer (double-sized when reading) */
|
|
|
- int direct; /* 0 if processing gzip, 1 if transparent */
|
|
|
- /* just for reading */
|
|
|
- int how; /* 0: get header, 1: copy, 2: decompress */
|
|
|
- z_off64_t start; /* where the gzip data started, for rewinding */
|
|
|
- int eof; /* true if end of input file reached */
|
|
|
- int past; /* true if read requested past end */
|
|
|
- /* just for writing */
|
|
|
- int level; /* compression level */
|
|
|
- int strategy; /* compression strategy */
|
|
|
- /* seek request */
|
|
|
- z_off64_t skip; /* amount to skip (already rewound if backwards) */
|
|
|
- int seek; /* true if seek request pending */
|
|
|
- /* error information */
|
|
|
- int err; /* error code */
|
|
|
- char *msg; /* error message */
|
|
|
- /* zlib inflate or deflate stream */
|
|
|
- z_stream strm; /* stream structure in-place (not a pointer) */
|
|
|
-} gz_state;
|
|
|
-typedef gz_state FAR *gz_statep;
|
|
|
-
|
|
|
-/* shared functions */
|
|
|
-void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *));
|
|
|
-#if defined UNDER_CE
|
|
|
-char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error));
|
|
|
-#endif
|
|
|
-
|
|
|
-/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
|
|
|
- value -- needed when comparing unsigned to z_off64_t, which is signed
|
|
|
- (possible z_off64_t types off_t, off64_t, and long are all signed) */
|
|
|
-#ifdef INT_MAX
|
|
|
-# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX)
|
|
|
-#else
|
|
|
-unsigned ZLIB_INTERNAL gz_intmax OF((void));
|
|
|
-# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
|
|
|
-#endif
|
|
|
-
|
|
|
-
|
|
|
-#ifdef __EMSCRIPTEN__
|
|
|
-#include "unistd.h"
|
|
|
-#endif
|
|
|
+/* gzguts.h -- zlib internal header definitions for gz* operations
|
|
|
+ * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
|
|
|
+ * For conditions of distribution and use, see copyright notice in zlib.h
|
|
|
+ */
|
|
|
+
|
|
|
+#ifdef _LARGEFILE64_SOURCE
|
|
|
+# ifndef _LARGEFILE_SOURCE
|
|
|
+# define _LARGEFILE_SOURCE 1
|
|
|
+# endif
|
|
|
+# ifdef _FILE_OFFSET_BITS
|
|
|
+# undef _FILE_OFFSET_BITS
|
|
|
+# endif
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef HAVE_HIDDEN
|
|
|
+# define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
|
|
|
+#else
|
|
|
+# define ZLIB_INTERNAL
|
|
|
+#endif
|
|
|
+
|
|
|
+#include <stdio.h>
|
|
|
+#include "zlib.h"
|
|
|
+#ifdef STDC
|
|
|
+# include <string.h>
|
|
|
+# include <stdlib.h>
|
|
|
+# include <limits.h>
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifndef _POSIX_SOURCE
|
|
|
+# define _POSIX_SOURCE
|
|
|
+#endif
|
|
|
+#include <fcntl.h>
|
|
|
+
|
|
|
+#ifdef _WIN32
|
|
|
+# include <stddef.h>
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32)
|
|
|
+# include <io.h>
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(_WIN32) || defined(__CYGWIN__)
|
|
|
+# define WIDECHAR
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef WINAPI_FAMILY
|
|
|
+# define open _open
|
|
|
+# define read _read
|
|
|
+# define write _write
|
|
|
+# define close _close
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef NO_DEFLATE /* for compatibility with old definition */
|
|
|
+# define NO_GZCOMPRESS
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
|
|
|
+# ifndef HAVE_VSNPRINTF
|
|
|
+# define HAVE_VSNPRINTF
|
|
|
+# endif
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(__CYGWIN__)
|
|
|
+# ifndef HAVE_VSNPRINTF
|
|
|
+# define HAVE_VSNPRINTF
|
|
|
+# endif
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(MSDOS) && defined(__BORLANDC__) && (BORLANDC > 0x410)
|
|
|
+# ifndef HAVE_VSNPRINTF
|
|
|
+# define HAVE_VSNPRINTF
|
|
|
+# endif
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifndef HAVE_VSNPRINTF
|
|
|
+# ifdef MSDOS
|
|
|
+/* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
|
|
|
+ but for now we just assume it doesn't. */
|
|
|
+# define NO_vsnprintf
|
|
|
+# endif
|
|
|
+# ifdef __TURBOC__
|
|
|
+# define NO_vsnprintf
|
|
|
+# endif
|
|
|
+# ifdef WIN32
|
|
|
+/* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
|
|
|
+# if !defined(vsnprintf) && !defined(NO_vsnprintf)
|
|
|
+# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 )
|
|
|
+# define vsnprintf _vsnprintf
|
|
|
+# endif
|
|
|
+# endif
|
|
|
+# endif
|
|
|
+# ifdef __SASC
|
|
|
+# define NO_vsnprintf
|
|
|
+# endif
|
|
|
+# ifdef VMS
|
|
|
+# define NO_vsnprintf
|
|
|
+# endif
|
|
|
+# ifdef __OS400__
|
|
|
+# define NO_vsnprintf
|
|
|
+# endif
|
|
|
+# ifdef __MVS__
|
|
|
+# define NO_vsnprintf
|
|
|
+# endif
|
|
|
+#endif
|
|
|
+
|
|
|
+/* unlike snprintf (which is required in C99), _snprintf does not guarantee
|
|
|
+ null termination of the result -- however this is only used in gzlib.c where
|
|
|
+ the result is assured to fit in the space provided */
|
|
|
+#if defined(_MSC_VER) && _MSC_VER < 1900
|
|
|
+# define snprintf _snprintf
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifndef local
|
|
|
+# define local static
|
|
|
+#endif
|
|
|
+/* since "static" is used to mean two completely different things in C, we
|
|
|
+ define "local" for the non-static meaning of "static", for readability
|
|
|
+ (compile with -Dlocal if your debugger can't find static symbols) */
|
|
|
+
|
|
|
+/* gz* functions always use library allocation functions */
|
|
|
+#ifndef STDC
|
|
|
+ extern voidp malloc OF((uInt size));
|
|
|
+ extern void free OF((voidpf ptr));
|
|
|
+#endif
|
|
|
+
|
|
|
+/* get errno and strerror definition */
|
|
|
+#if defined UNDER_CE
|
|
|
+# include <windows.h>
|
|
|
+# define zstrerror() gz_strwinerror((DWORD)GetLastError())
|
|
|
+#else
|
|
|
+# ifndef NO_STRERROR
|
|
|
+# include <errno.h>
|
|
|
+# define zstrerror() strerror(errno)
|
|
|
+# else
|
|
|
+# define zstrerror() "stdio error (consult errno)"
|
|
|
+# endif
|
|
|
+#endif
|
|
|
+
|
|
|
+/* provide prototypes for these when building zlib without LFS */
|
|
|
+#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0
|
|
|
+ ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
|
|
|
+ ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
|
|
|
+ ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
|
|
|
+ ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
|
|
|
+#endif
|
|
|
+
|
|
|
+/* default memLevel */
|
|
|
+#if MAX_MEM_LEVEL >= 8
|
|
|
+# define DEF_MEM_LEVEL 8
|
|
|
+#else
|
|
|
+# define DEF_MEM_LEVEL MAX_MEM_LEVEL
|
|
|
+#endif
|
|
|
+
|
|
|
+/* default i/o buffer size -- double this for output when reading (this and
|
|
|
+ twice this must be able to fit in an unsigned type) */
|
|
|
+#define GZBUFSIZE 8192
|
|
|
+
|
|
|
+/* gzip modes, also provide a little integrity check on the passed structure */
|
|
|
+#define GZ_NONE 0
|
|
|
+#define GZ_READ 7247
|
|
|
+#define GZ_WRITE 31153
|
|
|
+#define GZ_APPEND 1 /* mode set to GZ_WRITE after the file is opened */
|
|
|
+
|
|
|
+/* values for gz_state how */
|
|
|
+#define LOOK 0 /* look for a gzip header */
|
|
|
+#define COPY 1 /* copy input directly */
|
|
|
+#define GZIP 2 /* decompress a gzip stream */
|
|
|
+
|
|
|
+/* internal gzip file state data structure */
|
|
|
+typedef struct {
|
|
|
+ /* exposed contents for gzgetc() macro */
|
|
|
+ struct gzFile_s x; /* "x" for exposed */
|
|
|
+ /* x.have: number of bytes available at x.next */
|
|
|
+ /* x.next: next output data to deliver or write */
|
|
|
+ /* x.pos: current position in uncompressed data */
|
|
|
+ /* used for both reading and writing */
|
|
|
+ int mode; /* see gzip modes above */
|
|
|
+ int fd; /* file descriptor */
|
|
|
+ char *path; /* path or fd for error messages */
|
|
|
+ unsigned size; /* buffer size, zero if not allocated yet */
|
|
|
+ unsigned want; /* requested buffer size, default is GZBUFSIZE */
|
|
|
+ unsigned char *in; /* input buffer (double-sized when writing) */
|
|
|
+ unsigned char *out; /* output buffer (double-sized when reading) */
|
|
|
+ int direct; /* 0 if processing gzip, 1 if transparent */
|
|
|
+ /* just for reading */
|
|
|
+ int how; /* 0: get header, 1: copy, 2: decompress */
|
|
|
+ z_off64_t start; /* where the gzip data started, for rewinding */
|
|
|
+ int eof; /* true if end of input file reached */
|
|
|
+ int past; /* true if read requested past end */
|
|
|
+ /* just for writing */
|
|
|
+ int level; /* compression level */
|
|
|
+ int strategy; /* compression strategy */
|
|
|
+ /* seek request */
|
|
|
+ z_off64_t skip; /* amount to skip (already rewound if backwards) */
|
|
|
+ int seek; /* true if seek request pending */
|
|
|
+ /* error information */
|
|
|
+ int err; /* error code */
|
|
|
+ char *msg; /* error message */
|
|
|
+ /* zlib inflate or deflate stream */
|
|
|
+ z_stream strm; /* stream structure in-place (not a pointer) */
|
|
|
+} gz_state;
|
|
|
+typedef gz_state FAR *gz_statep;
|
|
|
+
|
|
|
+/* shared functions */
|
|
|
+void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *));
|
|
|
+#if defined UNDER_CE
|
|
|
+char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error));
|
|
|
+#endif
|
|
|
+
|
|
|
+/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
|
|
|
+ value -- needed when comparing unsigned to z_off64_t, which is signed
|
|
|
+ (possible z_off64_t types off_t, off64_t, and long are all signed) */
|
|
|
+#ifdef INT_MAX
|
|
|
+# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX)
|
|
|
+#else
|
|
|
+unsigned ZLIB_INTERNAL gz_intmax OF((void));
|
|
|
+# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
|
|
|
+#endif
|