[LIBXSLT] Better highlight some ROS diffs. CORE-14291
[reactos.git] / dll / 3rdparty / libxslt / win32config.h
index 169b03d..6573bb4 100644 (file)
 #include <math.h>
 #if defined _MSC_VER || defined __MINGW32__
 /* MS C-runtime has functions which can be used in order to determine if
-   a given floating-point variable contains NaN, (+-)INF. These are 
+   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 
+   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 
+/* Bjorn Reese figured a quite nice construct for isinf() using the
    _fpclass() function. */
 #ifndef isinf
 #define isinf(d) ((_fpclass(d) == _FPCLASS_PINF) ? 1 \
@@ -77,6 +77,7 @@ static int isnan (double d) {
 #endif /* _MSC_VER */
 
 #include <direct.h>
+#ifdef __REACTOS__
 #if defined(_MSC_VER) || defined(__MINGW32__)
 #define mkdir(p,m) _mkdir(p)
 #define snprintf _snprintf
@@ -84,6 +85,42 @@ static int isnan (double d) {
 #define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
 #endif
 #endif
+#else /* __REACTOS__ */
+/* snprintf emulation taken from http://stackoverflow.com/a/8712996/1956010 */
+#if defined(_MSC_VER) && _MSC_VER < 1900
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#define snprintf c99_snprintf
+#define vsnprintf c99_vsnprintf
+
+__inline int c99_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap)
+{
+    int count = -1;
+
+    if (size != 0)
+        count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap);
+    if (count == -1)
+        count = _vscprintf(format, ap);
+
+    return count;
+}
+
+__inline int c99_snprintf(char *outBuf, size_t size, const char *format, ...)
+{
+    int count;
+    va_list ap;
+
+    va_start(ap, format);
+    count = c99_vsnprintf(outBuf, size, format, ap);
+    va_end(ap);
+
+    return count;
+}
+
+#endif /* defined(_MSC_VER) && _MSC_VER < 1900 */
+#endif /* __REACTOS__ */
 
 #define HAVE_SYS_STAT_H
 #define HAVE__STAT
@@ -95,5 +132,7 @@ static int isnan (double d) {
 #define ATTRIBUTE_UNUSED
 #endif
 
+#define _WINSOCKAPI_
+
 #endif /* __LIBXSLT_WIN32_CONFIG__ */