--- a2ps-4.13-orig/configure.in 2005-08-14 14:13:42.000000000 +0200 +++ a2ps-4.13/configure.in 2005-08-14 14:18:20.000000000 +0200 @@ -157,6 +157,22 @@ [Define to rpl_fnmatch if the replacement function should be used.]) fi +# Check for C99 va_copy +AC_CACHE_CHECK([ + AC_TRY_LINK([#include ], + [ + va_list va1, va2; + + va_copy(va2, va1); + va_end(va2); + ], + [ac_cv_va_copy="yes"],[ac_cv_va_copy="no"] + ) +]) +if test "x$ac_cv_va_copy"="xyes"; then + AC_DEFINE(HAVE_VA_COPY,1,[Define to 1 if C99 va_copy function should be used]) +fi + # Needed checks for tinyterm.[ch] ad_TINYTERM_CHECKS --- a2ps-4.13-orig/lib/printlen.c 2002-03-04 19:46:25.000000000 +0100 +++ a2ps-4.13/lib/printlen.c 2005-08-14 14:29:08.000000000 +0200 @@ -27,15 +27,24 @@ unsigned long strtoul (); +#if !defined(HAVE_VA_COPY) static int int_printflen (const char *format, va_list *args) +#else +static int +int_printflen (const char *format, va_list args) +#endif { const char *cp; int total_width = 0; int width = 0; va_list ap; +#ifndef HAVE_VA_COPY memcpy (&ap, args, sizeof (va_list)); +#else + va_copy(ap, args); +#endif for (cp = format ; *cp ; cp++) { @@ -93,13 +102,21 @@ } } } + +#ifdef HAVE_VA_COPY + va_end(ap); +#endif return total_width; } int vprintflen (const char *format, va_list args) { +#if !defined(HAVE_VA_COPY) return int_printflen (format, &args); +#else + return int_printflen (format, args); +#endif } int