diff extern/jansson/snprintf.patch @ 122:2aecbd638b1c

Irccd: add an upstream patch to fix jansson on VS, #425
author David Demelier <markand@malikania.fr>
date Wed, 04 May 2016 13:38:02 +0200
parents
children 254bbc0f13b5
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extern/jansson/snprintf.patch	Wed May 04 13:38:02 2016 +0200
@@ -0,0 +1,53 @@
+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