"Fossies" - the Fresh Open Source Software Archive

Member "src/Common/zlib/gzguts.h" (10 Oct 2018, 6819 Bytes) of package /windows/misc/VeraCrypt_1.23-Hotfix-2_Source.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "gzguts.h" see the Fossies "Dox" file reference documentation.

    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