1 diff -urN lftp-2.5.0a.org/m4/va_copy.m4 lftp-2.5.0a/m4/va_copy.m4
2 --- lftp-2.5.0a.org/m4/va_copy.m4 Thu Jan 1 01:00:00 1970
3 +++ lftp-2.5.0a/m4/va_copy.m4 Mon Mar 4 15:16:21 2002
5 +# Directly out of glib. We don't do copy-by-value and other really
6 +# pessimistic tests, since just about all systems will have one of these.
9 +AC_DEFUN(lftp_VA_COPY,
11 + AC_CACHE_CHECK([for an implementation of va_copy()],lftp_cv_va_copy,[
14 + void f (int i, ...) {
15 + va_list args1, args2;
16 + va_start (args1, i);
17 + va_copy (args2, args1);
18 + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
20 + va_end (args1); va_end (args2);
26 + [lftp_cv_va_copy=yes],
27 + [lftp_cv_va_copy=no],
30 + if test x$lftp_cv_va_copy != xyes; then
31 + AC_CACHE_CHECK([for an implementation of __va_copy()],lftp_cv___va_copy,[
34 + void f (int i, ...) {
35 + va_list args1, args2;
36 + va_start (args1, i);
37 + __va_copy (args2, args1);
38 + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
40 + va_end (args1); va_end (args2);
46 + [lftp_cv___va_copy=yes],
47 + [lftp_cv___va_copy=no],
52 + if test "x$lftp_cv_va_copy" = "xyes"; then
53 + va_copy_func=va_copy
54 + elif test "x$lftp_cv___va_copy" = "xyes"; then
55 + va_copy_func=__va_copy
58 + if test -n "$va_copy_func"; then
59 + AC_DEFINE_UNQUOTED(VA_COPY,$va_copy_func,[A 'va_copy' style function])
63 + AC_CACHE_CHECK([whether va_lists can be copied by value],lftp_cv_va_val_copy,[
67 + void f (int i, ...) {
68 + va_list args1, args2;
69 + va_start (args1, i);
71 + memmove(&args2, &args1, sizeof(args1));
72 + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
74 + va_end (args1); va_end (args2);
80 + [lftp_cv_va_val_copy=yes],
81 + [lftp_cv_va_val_copy=no],
82 + [lftp_cv_va_val_copy=no])
85 + if test x$lftp_cv_va_val_copy = xyes; then
86 + AC_DEFINE(VA_VAL_COPY,1,[Define to 1 if va_lists can be copied by value])
88 + AC_CACHE_CHECK([whether va_lists can be copied by pointer],lftp_cv_va_ptr_copy,[
91 + void f (int i, ...) {
92 + va_list args1, args2;
93 + va_start (args1, i);
96 + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
98 + va_end (args1); va_end (args2);
104 + [lftp_cv_va_ptr_copy=yes],
105 + [lftp_cv_va_ptr_copy=no],
106 + [lftp_cv_va_ptr_copy=no])
109 + if test x$lftp_cv_va_ptr_copy = xyes; then
110 + AC_DEFINE(VA_PTR_COPY,1,[Define to 1 if va_lists can be copied by pointer])
115 + if test x$lftp_cv_va_val_copy != xyes -a x$lftp_cv_va_ptr_copy != xyes -a \
116 + x$lftp_cv_va_copy != xyes -a x$lftp_cv___va_copy != xyes; then
117 + AC_MSG_ERROR(Can't find a way to va_copy.)
120 + dnl ZZZ for autoheader sorting.
121 + AH_VERBATIM([VA_ZZZ_COPY],
122 +[#if !defined (VA_COPY)
123 +# if defined (VA_PTR_COPY)
124 +# define VA_COPY(ap1, ap2) (*(ap1) = *(ap2))
125 +# elif defined (VA_VAL_COPY)
126 +# include <string.h>
127 +# define VA_COPY(to,from) (memcpy(&(to),&(from),sizeof((to))))
129 +#endif /* !VA_COPY */])