14151acb5f266eed54b8bbf27f9f10cea482f94a4Daniel Veillard#ifndef __LIBXML_WIN32_CONFIG__ 24151acb5f266eed54b8bbf27f9f10cea482f94a4Daniel Veillard#define __LIBXML_WIN32_CONFIG__ 34151acb5f266eed54b8bbf27f9f10cea482f94a4Daniel Veillard 43473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define HAVE_CTYPE_H 5f216d461eb1d14f9a22d68337711b43df19f5000Daniel Veillard#define HAVE_STDARG_H 63473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define HAVE_MALLOC_H 7ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#define HAVE_ERRNO_H 87d508fed991a35c617d0180f72200fbd7bfbd081Eric Zurcher#define SEND_ARG2_CAST 97d508fed991a35c617d0180f72200fbd7bfbd081Eric Zurcher#define GETHOSTBYNAME_ARG_CAST 10ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic 11509ed2aa1a8461d4f09f5efcf82e23b4eac02ac2Daniel Veillard#if defined(_WIN32_WCE) 12ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#undef HAVE_ERRNO_H 13ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#include <windows.h> 14ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#include "wincecompat.h" 15ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#else 16ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#define HAVE_SYS_STAT_H 17ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#define HAVE__STAT 18ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#define HAVE_STAT 19ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#define HAVE_STDLIB_H 203473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define HAVE_TIME_H 213473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define HAVE_FCNTL_H 223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#include <io.h> 23ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#include <direct.h> 24648b8e9707afe888bb3cf35294014a05a336bc0fIgor Zlatkovic#endif 25648b8e9707afe888bb3cf35294014a05a336bc0fIgor Zlatkovic 262103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic#include <libxml/xmlversion.h> 27648b8e9707afe888bb3cf35294014a05a336bc0fIgor Zlatkovic 28a544c18909779231b230a8b300f454c05859a0adRob Richards#ifndef ICONV_CONST 29a544c18909779231b230a8b300f454c05859a0adRob Richards#define ICONV_CONST const 30a544c18909779231b230a8b300f454c05859a0adRob Richards#endif 31a544c18909779231b230a8b300f454c05859a0adRob Richards 32ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#ifdef NEED_SOCKETS 33ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#include <wsockcompat.h> 34ddce4427abe7c99bf42e31adde1db90b4b3740efIgor Zlatkovic#endif 353473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 36509ed2aa1a8461d4f09f5efcf82e23b4eac02ac2Daniel Veillard/* 37509ed2aa1a8461d4f09f5efcf82e23b4eac02ac2Daniel Veillard * Windows platforms may define except 38509ed2aa1a8461d4f09f5efcf82e23b4eac02ac2Daniel Veillard */ 39509ed2aa1a8461d4f09f5efcf82e23b4eac02ac2Daniel Veillard#undef except 40509ed2aa1a8461d4f09f5efcf82e23b4eac02ac2Daniel Veillard 413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define HAVE_ISINF 423473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define HAVE_ISNAN 433473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#include <math.h> 4472f92a882ca023963ebe712d2048a5b4fc0bf4a0Igor Zlatkovic#if defined(_MSC_VER) || defined(__BORLANDC__) 4550f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard/* MS C-runtime has functions which can be used in order to determine if 4650f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard a given floating-point variable contains NaN, (+-)INF. These are 4750f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard preferred, because floating-point technology is considered propriatary 4850f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard by MS and we can assume that their functions know more about their 4950f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard oddities than we do. */ 5050f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard#include <float.h> 5150f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard/* Bjorn Reese figured a quite nice construct for isinf() using the _fpclass 5250f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard function. */ 5350f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard#ifndef isinf 5450f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard#define isinf(d) ((_fpclass(d) == _FPCLASS_PINF) ? 1 \ 5550f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard : ((_fpclass(d) == _FPCLASS_NINF) ? -1 : 0)) 5650f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard#endif 5750f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard/* _isnan(x) returns nonzero if (x == NaN) and zero otherwise. */ 5850f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard#ifndef isnan 5950f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard#define isnan(d) (_isnan(d)) 6050f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard#endif 6150f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard#else /* _MSC_VER */ 621932b6cd28074e604cc2d04a990be95e9247a0d0Igor Zlatkovic#ifndef isinf 633473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstatic int isinf (double d) { 643473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor int expon = 0; 653473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor double val = frexp (d, &expon); 663473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor if (expon == 1025) { 673473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor if (val == 0.5) { 683473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor return 1; 693473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor } else if (val == -0.5) { 703473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor return -1; 713473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor } else { 723473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor return 0; 733473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor } 743473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor } else { 753473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor return 0; 763473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor } 773473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor} 781932b6cd28074e604cc2d04a990be95e9247a0d0Igor Zlatkovic#endif 791932b6cd28074e604cc2d04a990be95e9247a0d0Igor Zlatkovic#ifndef isnan 803473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstatic int isnan (double d) { 813473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor int expon = 0; 823473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor double val = frexp (d, &expon); 833473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor if (expon == 1025) { 843473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor if (val == 0.5) { 853473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor return 0; 863473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor } else if (val == -0.5) { 873473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor return 0; 883473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor } else { 893473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor return 1; 903473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor } 913473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor } else { 923473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor return 0; 933473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor } 943473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor} 951932b6cd28074e604cc2d04a990be95e9247a0d0Igor Zlatkovic#endif 9650f3437111a6428b4852740e83db4848b0b09a97Daniel Veillard#endif /* _MSC_VER */ 973473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 983d6aa10d8ce08d9ec71670df44e59057031081caDaniel Veillard#if defined(_MSC_VER) 99b2f616352adf041e341f54346ae41d797fd75406Igor Zlatkovic#define mkdir(p,m) _mkdir(p) 10012fd65434037d50429587792ed2e7e98f2fb739bFrancis Dupont#if _MSC_VER < 1900 1012d90de4b16e94af00bb4f8d3068d2687746d8992Daniel Veillard#define snprintf _snprintf 10212fd65434037d50429587792ed2e7e98f2fb739bFrancis Dupont#endif 10382fbf579b210fa2b350474c4801b4f97b4d61183Rob Richards#if _MSC_VER < 1500 104b2f616352adf041e341f54346ae41d797fd75406Igor Zlatkovic#define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a) 10582fbf579b210fa2b350474c4801b4f97b4d61183Rob Richards#endif 1063d6aa10d8ce08d9ec71670df44e59057031081caDaniel Veillard#elif defined(__MINGW32__) 1073d6aa10d8ce08d9ec71670df44e59057031081caDaniel Veillard#define mkdir(p,m) _mkdir(p) 108b2f616352adf041e341f54346ae41d797fd75406Igor Zlatkovic#endif 1093473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 1102103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic/* Threading API to use should be specified here for compatibility reasons. 1112103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic This is however best specified on the compiler's command-line. */ 1122103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic#if defined(LIBXML_THREAD_ENABLED) 113509ed2aa1a8461d4f09f5efcf82e23b4eac02ac2Daniel Veillard#if !defined(HAVE_PTHREAD_H) && !defined(HAVE_WIN32_THREADS) && !defined(_WIN32_WCE) 114db0eb8df5a13ef5dcf228519682d41cfe5f8700bDaniel Veillard#define HAVE_WIN32_THREADS 1152103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic#endif 1162103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic#endif 1172103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic 1182103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic/* Some third-party libraries far from our control assume the following 1192103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic is defined, which it is not if we don't include windows.h. */ 1202103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic#if !defined(FALSE) 1212103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic#define FALSE 0 1222103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic#endif 1232103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic#if !defined(TRUE) 1242103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic#define TRUE (!(FALSE)) 1252103b053e6db4687af5ac0e5a5008b37f80adc55Igor Zlatkovic#endif 126db0eb8df5a13ef5dcf228519682d41cfe5f8700bDaniel Veillard 1274151acb5f266eed54b8bbf27f9f10cea482f94a4Daniel Veillard#endif /* __LIBXML_WIN32_CONFIG__ */ 1284151acb5f266eed54b8bbf27f9f10cea482f94a4Daniel Veillard 129