From 8f2298bad8f77a22efe0dc9a95676fae6c203e36 Mon Sep 17 00:00:00 2001 From: OlehKulykov Date: Mon, 31 Aug 2015 23:43:29 +0200 Subject: [PATCH] Buildable with MS Compiler version >= 1900 --- cmake/jansson_private_config.h.cmake | 14 ++++++++++++++ src/jansson_private.h | 16 +++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/cmake/jansson_private_config.h.cmake b/cmake/jansson_private_config.h.cmake index ee1078f..ac7318f 100644 --- a/cmake/jansson_private_config.h.cmake +++ b/cmake/jansson_private_config.h.cmake @@ -49,6 +49,20 @@ #cmakedefine HAVE_SNPRINTF 1 +/* snprintf should not be defined as macro with MSC_VER >= 1900 */ +#if defined(_WIN32) || defined(WIN32) +# if defined(_MSC_VER) /* MS compiller */ +# if (_MSC_VER < 1900) /* snprintf not introduced */ +# if !defined(snprintf) +# define snprintf _snprintf +# define HAVE_SNPRINTF 1 /* snprintf defined manually */ +# endif +# else +# define HAVE_SNPRINTF 1 /* snprintf available via sdk */ +# endif +# endif +#endif + #ifndef HAVE_SNPRINTF # define snprintf @JSON_SNPRINTF@ #endif diff --git a/src/jansson_private.h b/src/jansson_private.h index e100726..ccb3a57 100644 --- a/src/jansson_private.h +++ b/src/jansson_private.h @@ -90,10 +90,20 @@ char *jsonp_strndup(const char *str, size_t length); char *jsonp_strdup(const char *str); char *jsonp_strndup(const char *str, size_t len); + /* Windows compatibility */ -#ifdef _WIN32 -#define snprintf _snprintf -#define vsnprintf _vsnprintf +#if defined(_WIN32) || defined(WIN32) +# if defined(_MSC_VER) /* MS compiller */ +# if (_MSC_VER < 1900) && !defined(snprintf) /* snprintf not defined yet & not introduced */ +# define snprintf _snprintf +# endif +# if (_MSC_VER < 1500) && !defined(vsnprintf) /* vsnprintf not defined yet & not introduced */ +# define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a) +# endif +# else /* Other Windows compiller, old definition */ +# define snprintf _snprintf +# define vsnprintf _vsnprintf +# endif #endif #endif