| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- #ifndef _HAD_LIBZIP_COMPAT_H
- #define _HAD_LIBZIP_COMPAT_H
- /*
- compat.h -- compatibility defines.
- Copyright (C) 1999-2021 Dieter Baron and Thomas Klausner
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <libzip@nih.at>
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
- OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #include "zipconf.h"
- #include "config.h"
- /* to have *_MAX definitions for all types when compiling with g++ */
- #define __STDC_LIMIT_MACROS
- #ifdef _WIN32
- #ifndef ZIP_EXTERN
- #ifndef ZIP_STATIC
- #define ZIP_EXTERN __declspec(dllexport)
- #endif
- #endif
- /* for dup(), close(), etc. */
- #include <io.h>
- #endif
- #ifdef HAVE_STDBOOL_H
- #include <stdbool.h>
- #else
- typedef char bool;
- #define true 1
- #define false 0
- #endif
- #include <errno.h>
- /* at least MinGW does not provide EOPNOTSUPP, see
- * http://sourceforge.net/p/mingw/bugs/263/
- */
- #ifndef EOPNOTSUPP
- #define EOPNOTSUPP EINVAL
- #endif
- /* at least MinGW does not provide EOVERFLOW, see
- * http://sourceforge.net/p/mingw/bugs/242/
- */
- #ifndef EOVERFLOW
- #define EOVERFLOW EFBIG
- #endif
- /* not supported on at least Windows */
- #ifndef O_CLOEXEC
- #define O_CLOEXEC 0
- #endif
- #ifdef _WIN32
- #if defined(HAVE__CLOSE)
- #define close _close
- #endif
- #if defined(HAVE__DUP)
- #define dup _dup
- #endif
- /* crashes reported when using fdopen instead of _fdopen on Windows/Visual Studio 10/Win64 */
- #if defined(HAVE__FDOPEN)
- #define fdopen _fdopen
- #endif
- #if !defined(HAVE_FILENO) && defined(HAVE__FILENO)
- #define fileno _fileno
- #endif
- #ifdef HAVE__SNPRINTF
- #define snprintf _snprintf
- #endif
- #if defined(HAVE__STRDUP)
- #if !defined(HAVE_STRDUP) || defined(_WIN32)
- #undef strdup
- #define strdup _strdup
- #endif
- #endif
- #if !defined(HAVE__SETMODE) && defined(HAVE_SETMODE)
- #define _setmode setmode
- #endif
- #if !defined(HAVE_STRTOLL) && defined(HAVE__STRTOI64)
- #define strtoll _strtoi64
- #endif
- #if !defined(HAVE_STRTOULL) && defined(HAVE__STRTOUI64)
- #define strtoull _strtoui64
- #endif
- #if defined(HAVE__UNLINK)
- #define unlink _unlink
- #endif
- #endif
- #ifndef HAVE_FSEEKO
- #define fseeko(s, o, w) (fseek((s), (long int)(o), (w)))
- #endif
- #ifndef HAVE_FTELLO
- #define ftello(s) ((long)ftell((s)))
- #endif
- #if !defined(HAVE_STRCASECMP)
- #if defined(HAVE__STRICMP)
- #define strcasecmp _stricmp
- #elif defined(HAVE_STRICMP)
- #define strcasecmp stricmp
- #endif
- #endif
- #if SIZEOF_OFF_T == 8
- #define ZIP_OFF_MAX ZIP_INT64_MAX
- #define ZIP_OFF_MIN ZIP_INT64_MIN
- #elif SIZEOF_OFF_T == 4
- #define ZIP_OFF_MAX ZIP_INT32_MAX
- #define ZIP_OFF_MIN ZIP_INT32_MIN
- #elif SIZEOF_OFF_T == 2
- #define ZIP_OFF_MAX ZIP_INT16_MAX
- #define ZIP_OFF_MIN ZIP_INT16_MIN
- #else
- #error unsupported size of off_t
- #endif
- #if defined(HAVE_FTELLO) && defined(HAVE_FSEEKO)
- #define ZIP_FSEEK_MAX ZIP_OFF_MAX
- #define ZIP_FSEEK_MIN ZIP_OFF_MIN
- #else
- #include <limits.h>
- #define ZIP_FSEEK_MAX LONG_MAX
- #define ZIP_FSEEK_MIN LONG_MIN
- #endif
- #ifndef SIZE_MAX
- #if SIZEOF_SIZE_T == 8
- #define SIZE_MAX ZIP_INT64_MAX
- #elif SIZEOF_SIZE_T == 4
- #define SIZE_MAX ZIP_INT32_MAX
- #elif SIZEOF_SIZE_T == 2
- #define SIZE_MAX ZIP_INT16_MAX
- #else
- #error unsupported size of size_t
- #endif
- #endif
- #ifndef PRId64
- #ifdef _MSC_VER
- #define PRId64 "I64d"
- #else
- #define PRId64 "lld"
- #endif
- #endif
- #ifndef PRIu64
- #ifdef _MSC_VER
- #define PRIu64 "I64u"
- #else
- #define PRIu64 "llu"
- #endif
- #endif
- #ifndef S_ISDIR
- #define S_ISDIR(mode) (((mode)&S_IFMT) == S_IFDIR)
- #endif
- #ifndef S_ISREG
- #define S_ISREG(mode) (((mode)&S_IFMT) == S_IFREG)
- #endif
- #endif /* compat.h */
|