1 /* 2 * Summary: Windows configuration header 3 * Description: Windows configuration header 4 * 5 * Copy: See Copyright for the status of this software. 6 * 7 * Author: Igor Zlatkovic 8 */ 9 #ifndef __LIBXSLT_WIN32_CONFIG__ 10 #define __LIBXSLT_WIN32_CONFIG__ 11 12 #define HAVE_CTYPE_H 1 13 #define HAVE_STDLIB_H 1 14 #define HAVE_STDARG_H 1 15 #define HAVE_MALLOC_H 1 16 #define HAVE_TIME_H 1 17 #define HAVE_LOCALTIME 1 18 #define HAVE_GMTIME 1 19 #define HAVE_TIME 1 20 #define HAVE_MATH_H 1 21 #define HAVE_FCNTL_H 1 22 23 #include <io.h> 24 25 #define HAVE_ISINF 26 #define HAVE_ISNAN 27 28 #include <math.h> 29 #if defined _MSC_VER || defined __MINGW32__ 30 /* MS C-runtime has functions which can be used in order to determine if 31 a given floating-point variable contains NaN, (+-)INF. These are 32 preferred, because floating-point technology is considered propriatary 33 by MS and we can assume that their functions know more about their 34 oddities than we do. */ 35 #include <float.h> 36 /* Bjorn Reese figured a quite nice construct for isinf() using the 37 _fpclass() function. */ 38 #ifndef isinf 39 #define isinf(d) ((_fpclass(d) == _FPCLASS_PINF) ? 1 \ 40 : ((_fpclass(d) == _FPCLASS_NINF) ? -1 : 0)) 41 #endif 42 /* _isnan(x) returns nonzero if (x == NaN) and zero otherwise. */ 43 #ifndef isnan 44 #define isnan(d) (_isnan(d)) 45 #endif 46 #else /* _MSC_VER */ 47 static int isinf (double d) { 48 int expon = 0; 49 double val = frexp (d, &expon); 50 if (expon == 1025) { 51 if (val == 0.5) { 52 return 1; 53 } else if (val == -0.5) { 54 return -1; 55 } else { 56 return 0; 57 } 58 } else { 59 return 0; 60 } 61 } 62 static int isnan (double d) { 63 int expon = 0; 64 double val = frexp (d, &expon); 65 if (expon == 1025) { 66 if (val == 0.5) { 67 return 0; 68 } else if (val == -0.5) { 69 return 0; 70 } else { 71 return 1; 72 } 73 } else { 74 return 0; 75 } 76 } 77 #endif /* _MSC_VER */ 78 79 #include <direct.h> 80 #ifdef __REACTOS__ 81 #if defined(_MSC_VER) || defined(__MINGW32__) 82 #define mkdir(p,m) _mkdir(p) 83 #define snprintf _snprintf 84 #if _MSC_VER < 1500 85 #define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a) 86 #endif 87 #endif 88 #else /* __REACTOS__ */ 89 /* snprintf emulation taken from http://stackoverflow.com/a/8712996/1956010 */ 90 #if defined(_MSC_VER) && _MSC_VER < 1900 91 92 #include <stdarg.h> 93 #include <stdio.h> 94 95 #define snprintf c99_snprintf 96 #define vsnprintf c99_vsnprintf 97 98 __inline int c99_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap) 99 { 100 int count = -1; 101 102 if (size != 0) 103 count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap); 104 if (count == -1) 105 count = _vscprintf(format, ap); 106 107 return count; 108 } 109 110 __inline int c99_snprintf(char *outBuf, size_t size, const char *format, ...) 111 { 112 int count; 113 va_list ap; 114 115 va_start(ap, format); 116 count = c99_vsnprintf(outBuf, size, format, ap); 117 va_end(ap); 118 119 return count; 120 } 121 122 #endif /* defined(_MSC_VER) && _MSC_VER < 1900 */ 123 #endif /* __REACTOS__ */ 124 125 #define HAVE_SYS_STAT_H 126 #define HAVE__STAT 127 #define HAVE_STRING_H 128 129 #include <libxml/xmlversion.h> 130 131 #ifndef ATTRIBUTE_UNUSED 132 #define ATTRIBUTE_UNUSED 133 #endif 134 135 #define _WINSOCKAPI_ 136 137 #endif /* __LIBXSLT_WIN32_CONFIG__ */ 138 139