cmark

My personal build of CMark ✏️

Commit
ac812214f6fa81b201b8fcf3779ed8d2c3cfacf7
Parent
ae806c61768ee2cad6501378a8e6d9199a00b5b4
Author
John MacFarlane <jgm@berkeley.edu>
Date

config.h.in - added compatibility snprintf, vsnprintf for MSVC.

Diffstat

1 file changed, 35 insertions, 0 deletions

Status File Name N° Changes Insertions Deletions
Modified src/config.h.in 35 35 0
diff --git a/src/config.h.in b/src/config.h.in
@@ -23,3 +23,38 @@
     #define CMARK_INLINE inline
   #endif
 #endif
+
+/* snprintf and vsnprintf fallbacks for MSVC before 2015,
+   due to Valentin Milea http://stackoverflow.com/questions/2915672/
+*/
+
+#if defined(_MSC_VER) && _MSC_VER < 1900
+
+#define snprintf c99_snprintf
+#define vsnprintf c99_vsnprintf
+
+CMARK_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;
+}
+
+CMARK_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