]> git.ipfire.org Git - thirdparty/json-c.git/commitdiff
vasprintf_compat.h: spin-off this compat header ; use math_compat.h as template 287/head
authorAlexandru Ardelean <ardeleanalex@gmail.com>
Wed, 16 Nov 2016 15:04:41 +0000 (17:04 +0200)
committerAlexandru Ardelean <ardeleanalex@gmail.com>
Tue, 22 Nov 2016 14:37:30 +0000 (16:37 +0200)
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
CMakeLists.txt
Makefile.am
json-c.vcxproj
json-c.vcxproj.filters
json_pointer.c
printbuf.c
vasprintf_compat.h [new file with mode: 0644]

index 473e9b7c228d11e3fba101e50d2765b4167422fd..8ae09504b92b74aa097734bd82abd8dd13233840 100644 (file)
@@ -37,6 +37,7 @@ set(JSON_C_HEADERS
     ./linkhash.h
     ./math_compat.h
     ./strdup_compat.h
+    ./vasprintf_compat.h
     ./printbuf.h
     ./random_seed.h
 )
index 64b1a3dd34505e6eb9ade0ca3783d6fc65731cf4..126ceeb625e7f3f4f458dfbae21764d13155bb73 100644 (file)
@@ -33,6 +33,7 @@ libjson_cinclude_HEADERS = \
        linkhash.h \
        math_compat.h \
        strdup_compat.h \
+       vasprintf_compat.h \
        printbuf.h \
        random_seed.h
 
index ab7b5e1f2a811d3fc46dbcdd9276327171f4ecab..3a6da616be1dd561abf125b9f34818c86bc342ad 100644 (file)
@@ -152,6 +152,7 @@ copy json_config.h.win32 json_config.h
     <ClInclude Include="linkhash.h" />
     <ClInclude Include="math_compat.h" />
     <ClInclude Include="strdup_compat.h" />
+    <ClInclude Include="vasprintf_compat.h" />
     <ClInclude Include="printbuf.h" />
     <ClInclude Include="random_seed.h" />
   </ItemGroup>
index 3c6f43df7a80a1a2fbeaf350eb3cc061d0c45bb6..7fd4dd0bd3eb5554e57d73a233415d92ac593c74 100644 (file)
@@ -83,6 +83,9 @@
     <ClInclude Include="strdup_compat.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="vasprintf_compat.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="random_seed.h">
       <Filter>Header Files</Filter>
     </ClInclude>
index 9cf3f160933d66ee042ece8cc250f0ff576ade0e..3648f8d66514581695c400895f2449db0ec8a851 100644 (file)
@@ -17,6 +17,7 @@
 
 #include "json_pointer.h"
 #include "strdup_compat.h"
+#include "vasprintf_compat.h"
 
 /**
  * JavaScript Object Notation (JSON) Pointer
index a40b89d577453ab468bc2f88177f7649a773b0e4..2745339c3ce091b8afab76624c8a96a567697fc5 100644 (file)
@@ -27,6 +27,7 @@
 
 #include "debug.h"
 #include "printbuf.h"
+#include "vasprintf_compat.h"
 
 static int printbuf_extend(struct printbuf *p, int min_size);
 
@@ -110,47 +111,6 @@ int printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len)
        return 0;
 }
 
-#if !defined(HAVE_VSNPRINTF) && defined(_MSC_VER)
-# define vsnprintf _vsnprintf
-#elif !defined(HAVE_VSNPRINTF) /* !HAVE_VSNPRINTF */
-# error Need vsnprintf!
-#endif /* !HAVE_VSNPRINTF && defined(WIN32) */
-
-#if !defined(HAVE_VASPRINTF)
-/* CAW: compliant version of vasprintf */
-static int vasprintf(char **buf, const char *fmt, va_list ap)
-{
-#ifndef WIN32
-       static char _T_emptybuffer = '\0';
-#endif /* !defined(WIN32) */
-       int chars;
-       char *b;
-
-       if(!buf) { return -1; }
-
-#ifdef WIN32
-       chars = _vscprintf(fmt, ap)+1;
-#else /* !defined(WIN32) */
-       /* CAW: RAWR! We have to hope to god here that vsnprintf doesn't overwrite
-          our buffer like on some 64bit sun systems.... but hey, its time to move on */
-       chars = vsnprintf(&_T_emptybuffer, 0, fmt, ap)+1;
-       if(chars < 0) { chars *= -1; } /* CAW: old glibc versions have this problem */
-#endif /* defined(WIN32) */
-
-       b = (char*)malloc(sizeof(char)*chars);
-       if(!b) { return -1; }
-
-       if((chars = vsprintf(b, fmt, ap)) < 0)
-       {
-               free(b);
-       } else {
-               *buf = b;
-       }
-
-       return chars;
-}
-#endif /* !HAVE_VASPRINTF */
-
 int sprintbuf(struct printbuf *p, const char *msg, ...)
 {
   va_list ap;
diff --git a/vasprintf_compat.h b/vasprintf_compat.h
new file mode 100644 (file)
index 0000000..51e234b
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef __vasprintf_compat_h
+#define __vasprintf_compat_h
+
+#if !defined(HAVE_VSNPRINTF) && defined(_MSC_VER)
+# define vsnprintf _vsnprintf
+#elif !defined(HAVE_VSNPRINTF) /* !HAVE_VSNPRINTF */
+# error Need vsnprintf!
+#endif /* !HAVE_VSNPRINTF && defined(WIN32) */
+
+#if !defined(HAVE_VASPRINTF)
+/* CAW: compliant version of vasprintf */
+static int vasprintf(char **buf, const char *fmt, va_list ap)
+{
+#ifndef WIN32
+       static char _T_emptybuffer = '\0';
+#endif /* !defined(WIN32) */
+       int chars;
+       char *b;
+
+       if(!buf) { return -1; }
+
+#ifdef WIN32
+       chars = _vscprintf(fmt, ap)+1;
+#else /* !defined(WIN32) */
+       /* CAW: RAWR! We have to hope to god here that vsnprintf doesn't overwrite
+          our buffer like on some 64bit sun systems.... but hey, its time to move on */
+       chars = vsnprintf(&_T_emptybuffer, 0, fmt, ap)+1;
+       if(chars < 0) { chars *= -1; } /* CAW: old glibc versions have this problem */
+#endif /* defined(WIN32) */
+
+       b = (char*)malloc(sizeof(char)*chars);
+       if(!b) { return -1; }
+
+       if((chars = vsprintf(b, fmt, ap)) < 0)
+       {
+               free(b);
+       } else {
+               *buf = b;
+       }
+
+       return chars;
+}
+#endif /* !HAVE_VASPRINTF */
+
+#endif /* __vasprintf_compat_h */