15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef __LIBXML_WIN32_CONFIG__ 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define __LIBXML_WIN32_CONFIG__ 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_CTYPE_H 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_STDARG_H 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_MALLOC_H 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_ERRNO_H 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(_WIN32_WCE) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_ERRNO_H 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <windows.h> 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "wincecompat.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_SYS_STAT_H 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE__STAT 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_STAT 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_STDLIB_H 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_TIME_H 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_FCNTL_H 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <io.h> 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <direct.h> 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/xmlversion.h> 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ICONV_CONST 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ICONV_CONST const 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef NEED_SOCKETS 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <wsockcompat.h> 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Windows platforms may define except 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef except 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_ISINF 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_ISNAN 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <math.h> 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(_MSC_VER) || defined(__BORLANDC__) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* MS C-runtime has functions which can be used in order to determine if 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) a given floating-point variable contains NaN, (+-)INF. These are 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preferred, because floating-point technology is considered propriatary 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) by MS and we can assume that their functions know more about their 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oddities than we do. */ 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <float.h> 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Bjorn Reese figured a quite nice construct for isinf() using the _fpclass 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function. */ 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef isinf 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define isinf(d) ((_fpclass(d) == _FPCLASS_PINF) ? 1 \ 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : ((_fpclass(d) == _FPCLASS_NINF) ? -1 : 0)) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* _isnan(x) returns nonzero if (x == NaN) and zero otherwise. */ 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef isnan 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define isnan(d) (_isnan(d)) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else /* _MSC_VER */ 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef isinf 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int isinf (double d) { 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int expon = 0; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double val = frexp (d, &expon); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (expon == 1025) { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (val == 0.5) { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 1; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (val == -0.5) { 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return -1; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef isnan 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int isnan (double d) { 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int expon = 0; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double val = frexp (d, &expon); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (expon == 1025) { 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (val == 0.5) { 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (val == -0.5) { 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 1; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* _MSC_VER */ 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(_MSC_VER) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define mkdir(p,m) _mkdir(p) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define snprintf _snprintf 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if _MSC_VER < 1500 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(__MINGW32__) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define mkdir(p,m) _mkdir(p) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Threading API to use should be specified here for compatibility reasons. 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) This is however best specified on the compiler's command-line. */ 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(LIBXML_THREAD_ENABLED) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(HAVE_PTHREAD_H) && !defined(HAVE_WIN32_THREADS) && !defined(_WIN32_WCE) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_WIN32_THREADS 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Some third-party libraries far from our control assume the following 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) is defined, which it is not if we don't include windows.h. */ 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(FALSE) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FALSE 0 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(TRUE) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TRUE (!(FALSE)) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* __LIBXML_WIN32_CONFIG__ */ 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125