Changeset View
Changeset View
Standalone View
Standalone View
contrib/zlib/gzguts.h
Property | Old Value | New Value |
---|---|---|
svn:eol-style | native \ No newline at end of property | null |
svn:keywords | FreeBSD=%H \ No newline at end of property | null |
svn:mime-type | text/plain \ No newline at end of property | null |
/* 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 |