"Fossies" - the Fresh Open Source Software Archive

Member "pngcrush-1.8.13/gzguts.h" (16 Jan 2017, 6924 Bytes) of package /linux/privat/pngcrush-1.8.13.tar.gz:


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 and the last Fossies "Diffs" side-by-side code changes report: 1.8.10_vs_1.8.11.

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