1*2e9d4914SAndroid Build Coastguard Worker /* ---------------------------------------------------------------------------- 2*2e9d4914SAndroid Build Coastguard Worker libconfig - A library for processing structured configuration files 3*2e9d4914SAndroid Build Coastguard Worker Copyright (C) 2005-2018 Mark A Lindner 4*2e9d4914SAndroid Build Coastguard Worker 5*2e9d4914SAndroid Build Coastguard Worker This file is part of libconfig. 6*2e9d4914SAndroid Build Coastguard Worker 7*2e9d4914SAndroid Build Coastguard Worker This library is free software; you can redistribute it and/or 8*2e9d4914SAndroid Build Coastguard Worker modify it under the terms of the GNU Lesser General Public License 9*2e9d4914SAndroid Build Coastguard Worker as published by the Free Software Foundation; either version 2.1 of 10*2e9d4914SAndroid Build Coastguard Worker the License, or (at your option) any later version. 11*2e9d4914SAndroid Build Coastguard Worker 12*2e9d4914SAndroid Build Coastguard Worker This library is distributed in the hope that it will be useful, but 13*2e9d4914SAndroid Build Coastguard Worker WITHOUT ANY WARRANTY; without even the implied warranty of 14*2e9d4914SAndroid Build Coastguard Worker MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15*2e9d4914SAndroid Build Coastguard Worker Lesser General Public License for more details. 16*2e9d4914SAndroid Build Coastguard Worker 17*2e9d4914SAndroid Build Coastguard Worker You should have received a copy of the GNU Library General Public 18*2e9d4914SAndroid Build Coastguard Worker License along with this library; if not, see 19*2e9d4914SAndroid Build Coastguard Worker <http://www.gnu.org/licenses/>. 20*2e9d4914SAndroid Build Coastguard Worker ---------------------------------------------------------------------------- 21*2e9d4914SAndroid Build Coastguard Worker */ 22*2e9d4914SAndroid Build Coastguard Worker 23*2e9d4914SAndroid Build Coastguard Worker #ifndef __wincompat_h 24*2e9d4914SAndroid Build Coastguard Worker #define __wincompat_h 25*2e9d4914SAndroid Build Coastguard Worker 26*2e9d4914SAndroid Build Coastguard Worker #include <limits.h> 27*2e9d4914SAndroid Build Coastguard Worker 28*2e9d4914SAndroid Build Coastguard Worker #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) \ 29*2e9d4914SAndroid Build Coastguard Worker || defined(WIN64) || defined(_WIN64) || defined(__WIN64__) 30*2e9d4914SAndroid Build Coastguard Worker 31*2e9d4914SAndroid Build Coastguard Worker /* Prevent warnings about redefined malloc/free in generated code. */ 32*2e9d4914SAndroid Build Coastguard Worker #ifndef _STDLIB_H 33*2e9d4914SAndroid Build Coastguard Worker #define _STDLIB_H 34*2e9d4914SAndroid Build Coastguard Worker #endif 35*2e9d4914SAndroid Build Coastguard Worker 36*2e9d4914SAndroid Build Coastguard Worker #include <malloc.h> 37*2e9d4914SAndroid Build Coastguard Worker 38*2e9d4914SAndroid Build Coastguard Worker #ifdef _MSC_VER 39*2e9d4914SAndroid Build Coastguard Worker #pragma warning (disable: 4996) 40*2e9d4914SAndroid Build Coastguard Worker #endif 41*2e9d4914SAndroid Build Coastguard Worker 42*2e9d4914SAndroid Build Coastguard Worker #define WIN32_LEAN_AND_MEAN 43*2e9d4914SAndroid Build Coastguard Worker #include <windows.h> 44*2e9d4914SAndroid Build Coastguard Worker 45*2e9d4914SAndroid Build Coastguard Worker #define fileno _fileno 46*2e9d4914SAndroid Build Coastguard Worker 47*2e9d4914SAndroid Build Coastguard Worker #if _MSC_VER <= 1800 48*2e9d4914SAndroid Build Coastguard Worker #define snprintf _snprintf 49*2e9d4914SAndroid Build Coastguard Worker #endif 50*2e9d4914SAndroid Build Coastguard Worker 51*2e9d4914SAndroid Build Coastguard Worker #if !defined(__MINGW32__) && _MSC_VER < 1800 52*2e9d4914SAndroid Build Coastguard Worker #define atoll _atoi64 53*2e9d4914SAndroid Build Coastguard Worker #define strtoull _strtoui64 54*2e9d4914SAndroid Build Coastguard Worker #define strtoll _strtoi64 55*2e9d4914SAndroid Build Coastguard Worker #endif 56*2e9d4914SAndroid Build Coastguard Worker 57*2e9d4914SAndroid Build Coastguard Worker #if !defined(S_ISDIR) && defined(S_IFMT) && defined(S_IFDIR) 58*2e9d4914SAndroid Build Coastguard Worker #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) 59*2e9d4914SAndroid Build Coastguard Worker #endif 60*2e9d4914SAndroid Build Coastguard Worker 61*2e9d4914SAndroid Build Coastguard Worker #endif 62*2e9d4914SAndroid Build Coastguard Worker 63*2e9d4914SAndroid Build Coastguard Worker #if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) \ 64*2e9d4914SAndroid Build Coastguard Worker || defined(WIN64) || defined(_WIN64) || defined(__WIN64__) \ 65*2e9d4914SAndroid Build Coastguard Worker || defined(__MINGW32__)) 66*2e9d4914SAndroid Build Coastguard Worker 67*2e9d4914SAndroid Build Coastguard Worker #define INT64_FMT "%I64d" 68*2e9d4914SAndroid Build Coastguard Worker #define UINT64_FMT "%I64u" 69*2e9d4914SAndroid Build Coastguard Worker 70*2e9d4914SAndroid Build Coastguard Worker #define INT64_HEX_FMT "%I64X" 71*2e9d4914SAndroid Build Coastguard Worker 72*2e9d4914SAndroid Build Coastguard Worker #define FILE_SEPARATOR "\\" 73*2e9d4914SAndroid Build Coastguard Worker 74*2e9d4914SAndroid Build Coastguard Worker #else /* defined(WIN32) || defined(__MINGW32__) */ 75*2e9d4914SAndroid Build Coastguard Worker 76*2e9d4914SAndroid Build Coastguard Worker #define INT64_FMT "%lld" 77*2e9d4914SAndroid Build Coastguard Worker #define UINT64_FMT "%llu" 78*2e9d4914SAndroid Build Coastguard Worker 79*2e9d4914SAndroid Build Coastguard Worker #define INT64_HEX_FMT "%llX" 80*2e9d4914SAndroid Build Coastguard Worker 81*2e9d4914SAndroid Build Coastguard Worker #define FILE_SEPARATOR "/" 82*2e9d4914SAndroid Build Coastguard Worker 83*2e9d4914SAndroid Build Coastguard Worker #endif /* defined(WIN32) || defined(__MINGW32__) */ 84*2e9d4914SAndroid Build Coastguard Worker 85*2e9d4914SAndroid Build Coastguard Worker #if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) \ 86*2e9d4914SAndroid Build Coastguard Worker || defined(WIN64) || defined(_WIN64) || defined(__WIN64__)) \ 87*2e9d4914SAndroid Build Coastguard Worker && ! defined(__MINGW32__) 88*2e9d4914SAndroid Build Coastguard Worker 89*2e9d4914SAndroid Build Coastguard Worker #define INT64_CONST(I) (I ## i64) 90*2e9d4914SAndroid Build Coastguard Worker #define UINT64_CONST(I) (I ## Ui64) 91*2e9d4914SAndroid Build Coastguard Worker 92*2e9d4914SAndroid Build Coastguard Worker #ifndef INT_MAX 93*2e9d4914SAndroid Build Coastguard Worker #define INT_MAX (2147483647) 94*2e9d4914SAndroid Build Coastguard Worker #endif 95*2e9d4914SAndroid Build Coastguard Worker 96*2e9d4914SAndroid Build Coastguard Worker #ifndef INT_MIN 97*2e9d4914SAndroid Build Coastguard Worker #define INT_MIN (-2147483647-1) 98*2e9d4914SAndroid Build Coastguard Worker #endif 99*2e9d4914SAndroid Build Coastguard Worker 100*2e9d4914SAndroid Build Coastguard Worker #include <Shlwapi.h> 101*2e9d4914SAndroid Build Coastguard Worker #define IS_RELATIVE_PATH(P) \ 102*2e9d4914SAndroid Build Coastguard Worker (PathIsRelativeA(P)) 103*2e9d4914SAndroid Build Coastguard Worker 104*2e9d4914SAndroid Build Coastguard Worker extern int fsync(int fd); 105*2e9d4914SAndroid Build Coastguard Worker 106*2e9d4914SAndroid Build Coastguard Worker #else /* defined(WIN32/WIN64) && ! defined(__MINGW32__) */ 107*2e9d4914SAndroid Build Coastguard Worker 108*2e9d4914SAndroid Build Coastguard Worker #define INT64_CONST(I) (I ## LL) 109*2e9d4914SAndroid Build Coastguard Worker #define UINT64_CONST(I) (I ## ULL) 110*2e9d4914SAndroid Build Coastguard Worker 111*2e9d4914SAndroid Build Coastguard Worker #define IS_RELATIVE_PATH(P) \ 112*2e9d4914SAndroid Build Coastguard Worker ((P)[0] != '/') 113*2e9d4914SAndroid Build Coastguard Worker 114*2e9d4914SAndroid Build Coastguard Worker #include <unistd.h> /* for fsync() */ 115*2e9d4914SAndroid Build Coastguard Worker 116*2e9d4914SAndroid Build Coastguard Worker #endif /* defined(WIN32/WIN64) && ! defined(__MINGW32__) */ 117*2e9d4914SAndroid Build Coastguard Worker 118*2e9d4914SAndroid Build Coastguard Worker #endif /* __wincompat_h */ 119