mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-26 00:37:43 +03:00
--047d7bacb4ee71848a052d7c673a Content-Type: text/plain; charset=UTF-8 The config.h file in win32\VC10 is incompatible with VS 2015 because VS 2015 provides an implementation of snprintf and prohibits using the preprocessor to define it. Therefor an ifdef check is needed around that definition in VC10\config.h. Here is a patch that is compatible with the change that we made to Chromium's copy:
128 lines
2.9 KiB
C
128 lines
2.9 KiB
C
#ifndef __LIBXML_WIN32_CONFIG__
|
|
#define __LIBXML_WIN32_CONFIG__
|
|
|
|
#define HAVE_CTYPE_H
|
|
#define HAVE_STDARG_H
|
|
#define HAVE_MALLOC_H
|
|
#define HAVE_ERRNO_H
|
|
#define HAVE_STDINT_H
|
|
|
|
#if defined(_WIN32_WCE)
|
|
#undef HAVE_ERRNO_H
|
|
#include <windows.h>
|
|
#include "wincecompat.h"
|
|
#else
|
|
#define HAVE_SYS_STAT_H
|
|
#define HAVE__STAT
|
|
#define HAVE_STAT
|
|
#define HAVE_STDLIB_H
|
|
#define HAVE_TIME_H
|
|
#define HAVE_FCNTL_H
|
|
#include <io.h>
|
|
#include <direct.h>
|
|
#endif
|
|
|
|
#include <libxml/xmlversion.h>
|
|
|
|
#ifndef ICONV_CONST
|
|
#define ICONV_CONST const
|
|
#endif
|
|
|
|
#ifdef NEED_SOCKETS
|
|
#include <wsockcompat.h>
|
|
#endif
|
|
|
|
/*
|
|
* Windows platforms may define except
|
|
*/
|
|
#undef except
|
|
|
|
#define HAVE_ISINF
|
|
#define HAVE_ISNAN
|
|
#include <math.h>
|
|
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
|
/* MS C-runtime has functions which can be used in order to determine if
|
|
a given floating-point variable contains NaN, (+-)INF. These are
|
|
preferred, because floating-point technology is considered propriatary
|
|
by MS and we can assume that their functions know more about their
|
|
oddities than we do. */
|
|
#include <float.h>
|
|
/* Bjorn Reese figured a quite nice construct for isinf() using the _fpclass
|
|
function. */
|
|
#ifndef isinf
|
|
#define isinf(d) ((_fpclass(d) == _FPCLASS_PINF) ? 1 \
|
|
: ((_fpclass(d) == _FPCLASS_NINF) ? -1 : 0))
|
|
#endif
|
|
/* _isnan(x) returns nonzero if (x == NaN) and zero otherwise. */
|
|
#ifndef isnan
|
|
#define isnan(d) (_isnan(d))
|
|
#endif
|
|
#else /* _MSC_VER */
|
|
#ifndef isinf
|
|
static int isinf (double d) {
|
|
int expon = 0;
|
|
double val = frexp (d, &expon);
|
|
if (expon == 1025) {
|
|
if (val == 0.5) {
|
|
return 1;
|
|
} else if (val == -0.5) {
|
|
return -1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
#endif
|
|
#ifndef isnan
|
|
static int isnan (double d) {
|
|
int expon = 0;
|
|
double val = frexp (d, &expon);
|
|
if (expon == 1025) {
|
|
if (val == 0.5) {
|
|
return 0;
|
|
} else if (val == -0.5) {
|
|
return 0;
|
|
} else {
|
|
return 1;
|
|
}
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
#endif
|
|
#endif /* _MSC_VER */
|
|
|
|
#if defined(_MSC_VER)
|
|
#define mkdir(p,m) _mkdir(p)
|
|
#if _MSC_VER < 1900 // Cannot define this in VS 2015 and above!
|
|
#define snprintf _snprintf
|
|
#endif
|
|
#if _MSC_VER < 1500
|
|
#define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
|
|
#endif
|
|
#elif defined(__MINGW32__)
|
|
#define mkdir(p,m) _mkdir(p)
|
|
#endif
|
|
|
|
/* Threading API to use should be specified here for compatibility reasons.
|
|
This is however best specified on the compiler's command-line. */
|
|
#if defined(LIBXML_THREAD_ENABLED)
|
|
#if !defined(HAVE_PTHREAD_H) && !defined(HAVE_WIN32_THREADS) && !defined(_WIN32_WCE)
|
|
#define HAVE_WIN32_THREADS
|
|
#endif
|
|
#endif
|
|
|
|
/* Some third-party libraries far from our control assume the following
|
|
is defined, which it is not if we don't include windows.h. */
|
|
#if !defined(FALSE)
|
|
#define FALSE 0
|
|
#endif
|
|
#if !defined(TRUE)
|
|
#define TRUE (!(FALSE))
|
|
#endif
|
|
|
|
#endif /* __LIBXML_WIN32_CONFIG__ */
|
|
|