diff options
Diffstat (limited to 'chromium/third_party/libxslt/libxslt/win32config.h')
-rw-r--r-- | chromium/third_party/libxslt/libxslt/win32config.h | 42 |
1 files changed, 35 insertions, 7 deletions
diff --git a/chromium/third_party/libxslt/libxslt/win32config.h b/chromium/third_party/libxslt/libxslt/win32config.h index 9f60e55ca42..8fe704275a3 100644 --- a/chromium/third_party/libxslt/libxslt/win32config.h +++ b/chromium/third_party/libxslt/libxslt/win32config.h @@ -77,13 +77,41 @@ static int isnan (double d) { #endif /* _MSC_VER */ #include <direct.h> -#if defined(_MSC_VER) || defined(__MINGW32__) -#define mkdir(p,m) _mkdir(p) -#define snprintf _snprintf -#if _MSC_VER < 1500 -#define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a) -#endif -#endif + +/* 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 */ #define HAVE_SYS_STAT_H #define HAVE__STAT |