]> git.puffer.fish Git - matthieu/frr.git/commitdiff
2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
authorajs <ajs>
Wed, 12 Jan 2005 16:18:17 +0000 (16:18 +0000)
committerajs <ajs>
Wed, 12 Jan 2005 16:18:17 +0000 (16:18 +0000)
* zebra.h: If not C99 and no va_copy macro available, fall back to
  memcpy (solves a build problem on FreeBSD 4.x).

lib/ChangeLog
lib/zebra.h

index 2fee4611f1a98dd8ca7d9cba2fe714679fa0229b..4b245bec42bac10f8808fd9822b6c6f21a0d3598 100644 (file)
@@ -1,3 +1,8 @@
+2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+       * zebra.h: If not C99 and no va_copy macro available, fall back to
+         memcpy (solves a build problem on FreeBSD 4.x).
+
 2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
        * zebra.h: Define ZCMSG_FIRSTHDR appropriately based on whether
index 8c2dcabaeab2a3a8b43188384f02e6e4c4edb119..887ff7d63a174d289c35f886992dcde23819fe82 100644 (file)
@@ -97,9 +97,17 @@ typedef int socklen_t;
 #include <stdarg.h>
 #if !(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
 /* Not C99; do we need to define va_copy? */
-#if !defined(va_copy) && defined(__va_copy)
+#ifndef va_copy
+#ifdef __va_copy
 #define va_copy(DST,SRC) __va_copy(DST,SRC)
-#endif /* need va_copy */
+#else
+/* Now we are desperate; this should work on many typical platforms. 
+   But this is slightly dangerous, because the standard does not require
+   va_copy to be a macro. */
+#define va_copy(DST,SRC) memcpy(&(DST), &(SRC), sizeof(va_list))
+#warning "Not C99 and no va_copy macro available, falling back to memcpy"
+#endif /* __va_copy */
+#endif /* !va_copy */
 #endif /* !C99 */
 #include "zassert.h"