diff options
Diffstat (limited to 'compat/zlib/gzguts.h')
| -rw-r--r-- | compat/zlib/gzguts.h | 218 | 
1 files changed, 218 insertions, 0 deletions
| diff --git a/compat/zlib/gzguts.h b/compat/zlib/gzguts.h new file mode 100644 index 0000000..990a4d2 --- /dev/null +++ b/compat/zlib/gzguts.h @@ -0,0 +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 | 
