For Win32 environment, define CAN_COPY_VA_LIST, and define an inline
authorKen Raeburn <raeburn@mit.edu>
Wed, 27 Jun 2007 23:43:04 +0000 (23:43 +0000)
committerKen Raeburn <raeburn@mit.edu>
Wed, 27 Jun 2007 23:43:04 +0000 (23:43 +0000)
version of vsnprintf using the MS versions.  (Apparently no need for
plain snprintf just yet.)

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19644 dc483132-0cff-0310-8789-dd5450dbe970

src/include/k5-platform.h

index de1b698d5604c57bb85b589ef63e5275bef242f9..b1b0781082aceccfa2f2189db97bc4baddbffd06 100644 (file)
 #include <stdlib.h>
 #include <stdio.h>
 
+#ifdef _WIN32
+#define CAN_COPY_VA_LIST
+#endif
+
 /* Initialization and finalization function support for libraries.
 
    At top level, before the functions are defined or even declared:
@@ -770,8 +774,24 @@ load_64_n (const unsigned char *p)
 
 /* Provide [v]asprintf interfaces.  */
 #ifndef HAVE_VSNPRINTF
+#ifdef _WIN32
+static inline int
+vsnprintf(char *str, size_t size, const char *format, va_list args)
+{
+    va_list args_copy;
+    int length;
+
+    va_copy(args_copy, args);
+    length = _vscprintf(format, args_copy);
+    va_end(args_copy);
+    if (size)
+       _vsnprintf(str, size, format, args);
+    return length;
+}
+#else /* not win32 */
 #error We need an implementation of vsnprintf.
-#endif
+#endif /* win32? */
+#endif /* no vsnprintf */
 #ifndef HAVE_VASPRINTF
 #define vasprintf k5_vasprintf
 /* On error: BSD: Set *ret to NULL.  GNU: *ret is undefined.