]>
Commit | Line | Data |
---|---|---|
97a8185b AM |
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 | |
4 | @@ -0,0 +1,126 @@ | |
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. | |
7 | +# Add them if needed. | |
8 | + | |
9 | +AC_DEFUN(lftp_VA_COPY, | |
10 | +[ | |
11 | + AC_CACHE_CHECK([for an implementation of va_copy()],lftp_cv_va_copy,[ | |
12 | + AC_TRY_RUN([ | |
13 | + #include <stdarg.h> | |
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) | |
19 | + exit (1); | |
20 | + va_end (args1); va_end (args2); | |
21 | + } | |
22 | + int main() { | |
23 | + f (0, 42); | |
24 | + return 0; | |
25 | + }], | |
26 | + [lftp_cv_va_copy=yes], | |
27 | + [lftp_cv_va_copy=no], | |
28 | + []) | |
29 | + ]) | |
30 | + if test x$lftp_cv_va_copy != xyes; then | |
31 | + AC_CACHE_CHECK([for an implementation of __va_copy()],lftp_cv___va_copy,[ | |
32 | + AC_TRY_RUN([ | |
33 | + #include <stdarg.h> | |
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) | |
39 | + exit (1); | |
40 | + va_end (args1); va_end (args2); | |
41 | + } | |
42 | + int main() { | |
43 | + f (0, 42); | |
44 | + return 0; | |
45 | + }], | |
46 | + [lftp_cv___va_copy=yes], | |
47 | + [lftp_cv___va_copy=no], | |
48 | + []) | |
49 | + ]) | |
50 | + fi | |
51 | + | |
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 | |
56 | + fi | |
57 | + | |
58 | + if test -n "$va_copy_func"; then | |
59 | + AC_DEFINE_UNQUOTED(VA_COPY,$va_copy_func,[A 'va_copy' style function]) | |
60 | + | |
61 | + else | |
62 | + | |
63 | + AC_CACHE_CHECK([whether va_lists can be copied by value],lftp_cv_va_val_copy,[ | |
64 | + AC_TRY_RUN([ | |
65 | + #include <stdarg.h> | |
66 | + #include <string.h> | |
67 | + void f (int i, ...) { | |
68 | + va_list args1, args2; | |
69 | + va_start (args1, i); | |
70 | + | |
71 | + memmove(&args2, &args1, sizeof(args1)); | |
72 | + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) | |
73 | + exit (1); | |
74 | + va_end (args1); va_end (args2); | |
75 | + } | |
76 | + int main() { | |
77 | + f (0, 42); | |
78 | + return 0; | |
79 | + }], | |
80 | + [lftp_cv_va_val_copy=yes], | |
81 | + [lftp_cv_va_val_copy=no], | |
82 | + [lftp_cv_va_val_copy=no]) | |
83 | + ]) | |
84 | + | |
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]) | |
87 | + else | |
88 | + AC_CACHE_CHECK([whether va_lists can be copied by pointer],lftp_cv_va_ptr_copy,[ | |
89 | + AC_TRY_RUN([ | |
90 | + #include <stdarg.h> | |
91 | + void f (int i, ...) { | |
92 | + va_list args1, args2; | |
93 | + va_start (args1, i); | |
94 | + | |
95 | + *args2 = *args1; | |
96 | + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) | |
97 | + exit (1); | |
98 | + va_end (args1); va_end (args2); | |
99 | + } | |
100 | + int main() { | |
101 | + f (0, 42); | |
102 | + return 0; | |
103 | + }], | |
104 | + [lftp_cv_va_ptr_copy=yes], | |
105 | + [lftp_cv_va_ptr_copy=no], | |
106 | + [lftp_cv_va_ptr_copy=no]) | |
107 | + ]) | |
108 | + | |
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]) | |
111 | + fi | |
112 | + fi | |
113 | + fi | |
114 | + | |
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.) | |
118 | + fi | |
119 | + | |
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)))) | |
128 | +# endif | |
129 | +#endif /* !VA_COPY */]) | |
130 | +]) |