Code

3a1d1e01006402ffd34994d1abe1642e243bc43f
[nagiosplug.git] / gl / m4 / vasnprintf.m4
1 # vasnprintf.m4 serial 29
2 dnl Copyright (C) 2002-2004, 2006-2009 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
7 AC_DEFUN([gl_FUNC_VASNPRINTF],
8 [
9   AC_CHECK_FUNCS_ONCE([vasnprintf])
10   if test $ac_cv_func_vasnprintf = no; then
11     gl_REPLACE_VASNPRINTF
12   fi
13 ])
15 AC_DEFUN([gl_REPLACE_VASNPRINTF],
16 [
17   AC_CHECK_FUNCS_ONCE([vasnprintf])
18   AC_LIBOBJ([vasnprintf])
19   AC_LIBOBJ([printf-args])
20   AC_LIBOBJ([printf-parse])
21   AC_LIBOBJ([asnprintf])
22   if test $ac_cv_func_vasnprintf = yes; then
23     AC_DEFINE([REPLACE_VASNPRINTF], [1],
24       [Define if vasnprintf exists but is overridden by gnulib.])
25   fi
26   gl_PREREQ_PRINTF_ARGS
27   gl_PREREQ_PRINTF_PARSE
28   gl_PREREQ_VASNPRINTF
29   gl_PREREQ_ASNPRINTF
30 ])
32 # Prequisites of lib/printf-args.h, lib/printf-args.c.
33 AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
34 [
35   AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
36   AC_REQUIRE([gt_TYPE_WCHAR_T])
37   AC_REQUIRE([gt_TYPE_WINT_T])
38 ])
40 # Prequisites of lib/printf-parse.h, lib/printf-parse.c.
41 AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
42 [
43   AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
44   AC_REQUIRE([gt_TYPE_WCHAR_T])
45   AC_REQUIRE([gt_TYPE_WINT_T])
46   AC_REQUIRE([AC_TYPE_SIZE_T])
47   AC_CHECK_TYPE([ptrdiff_t], ,
48     [AC_DEFINE([ptrdiff_t], [long],
49        [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
50     ])
51   AC_REQUIRE([gt_AC_TYPE_INTMAX_T])
52 ])
54 # Prerequisites of lib/vasnprintf.c.
55 AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
56 [
57   AC_REQUIRE([AC_FUNC_ALLOCA])
58   AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
59   AC_REQUIRE([gt_TYPE_WCHAR_T])
60   AC_REQUIRE([gt_TYPE_WINT_T])
61   AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
62   dnl Use the _snprintf function only if it is declared (because on NetBSD it
63   dnl is defined as a weak alias of snprintf; we prefer to use the latter).
64   AC_CHECK_DECLS([_snprintf], , , [#include <stdio.h>])
65 ])
67 # Extra prerequisites of lib/vasnprintf.c for supporting 'long double'
68 # arguments.
69 AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE],
70 [
71   AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
72   case "$gl_cv_func_printf_long_double" in
73     *yes)
74       ;;
75     *)
76       AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
77         [Define if the vasnprintf implementation needs special code for
78          'long double' arguments.])
79       ;;
80   esac
81 ])
83 # Extra prerequisites of lib/vasnprintf.c for supporting infinite 'double'
84 # arguments.
85 AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE],
86 [
87   AC_REQUIRE([gl_PRINTF_INFINITE])
88   case "$gl_cv_func_printf_infinite" in
89     *yes)
90       ;;
91     *)
92       AC_DEFINE([NEED_PRINTF_INFINITE_DOUBLE], [1],
93         [Define if the vasnprintf implementation needs special code for
94          infinite 'double' arguments.])
95       ;;
96   esac
97 ])
99 # Extra prerequisites of lib/vasnprintf.c for supporting infinite 'long double'
100 # arguments.
101 AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE],
103   AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
104   dnl There is no need to set NEED_PRINTF_INFINITE_LONG_DOUBLE if
105   dnl NEED_PRINTF_LONG_DOUBLE is already set.
106   AC_REQUIRE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE])
107   case "$gl_cv_func_printf_long_double" in
108     *yes)
109       case "$gl_cv_func_printf_infinite_long_double" in
110         *yes)
111           ;;
112         *)
113           AC_DEFINE([NEED_PRINTF_INFINITE_LONG_DOUBLE], [1],
114             [Define if the vasnprintf implementation needs special code for
115              infinite 'long double' arguments.])
116           ;;
117       esac
118       ;;
119   esac
120 ])
122 # Extra prerequisites of lib/vasnprintf.c for supporting the 'a' directive.
123 AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_A],
125   AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
126   case "$gl_cv_func_printf_directive_a" in
127     *yes)
128       ;;
129     *)
130       AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], [1],
131         [Define if the vasnprintf implementation needs special code for
132          the 'a' and 'A' directives.])
133       AC_CHECK_FUNCS([nl_langinfo])
134       ;;
135   esac
136 ])
138 # Extra prerequisites of lib/vasnprintf.c for supporting the 'F' directive.
139 AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_F],
141   AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
142   case "$gl_cv_func_printf_directive_f" in
143     *yes)
144       ;;
145     *)
146       AC_DEFINE([NEED_PRINTF_DIRECTIVE_F], [1],
147         [Define if the vasnprintf implementation needs special code for
148          the 'F' directive.])
149       ;;
150   esac
151 ])
153 # Extra prerequisites of lib/vasnprintf.c for supporting the 'ls' directive.
154 AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LS],
156   AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
157   case "$gl_cv_func_printf_directive_ls" in
158     *yes)
159       ;;
160     *)
161       AC_DEFINE([NEED_PRINTF_DIRECTIVE_LS], [1],
162         [Define if the vasnprintf implementation needs special code for
163          the 'ls' directive.])
164       ;;
165   esac
166 ])
168 # Extra prerequisites of lib/vasnprintf.c for supporting the ' flag.
169 AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_GROUPING],
171   AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
172   case "$gl_cv_func_printf_flag_grouping" in
173     *yes)
174       ;;
175     *)
176       AC_DEFINE([NEED_PRINTF_FLAG_GROUPING], [1],
177         [Define if the vasnprintf implementation needs special code for the
178          ' flag.])
179       ;;
180   esac
181 ])
183 # Extra prerequisites of lib/vasnprintf.c for supporting the '-' flag.
184 AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST],
186   AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
187   case "$gl_cv_func_printf_flag_leftadjust" in
188     *yes)
189       ;;
190     *)
191       AC_DEFINE([NEED_PRINTF_FLAG_LEFTADJUST], [1],
192         [Define if the vasnprintf implementation needs special code for the
193          '-' flag.])
194       ;;
195   esac
196 ])
198 # Extra prerequisites of lib/vasnprintf.c for supporting the 0 flag.
199 AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO],
201   AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
202   case "$gl_cv_func_printf_flag_zero" in
203     *yes)
204       ;;
205     *)
206       AC_DEFINE([NEED_PRINTF_FLAG_ZERO], [1],
207         [Define if the vasnprintf implementation needs special code for the
208          0 flag.])
209       ;;
210   esac
211 ])
213 # Extra prerequisites of lib/vasnprintf.c for supporting large precisions.
214 AC_DEFUN([gl_PREREQ_VASNPRINTF_PRECISION],
216   AC_REQUIRE([gl_PRINTF_PRECISION])
217   case "$gl_cv_func_printf_precision" in
218     *yes)
219       ;;
220     *)
221       AC_DEFINE([NEED_PRINTF_UNBOUNDED_PRECISION], [1],
222         [Define if the vasnprintf implementation needs special code for
223          supporting large precisions without arbitrary bounds.])
224       AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
225         [Define if the vasnprintf implementation needs special code for
226          'double' arguments.])
227       AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
228         [Define if the vasnprintf implementation needs special code for
229          'long double' arguments.])
230       ;;
231   esac
232 ])
234 # Extra prerequisites of lib/vasnprintf.c for surviving out-of-memory
235 # conditions.
236 AC_DEFUN([gl_PREREQ_VASNPRINTF_ENOMEM],
238   AC_REQUIRE([gl_PRINTF_ENOMEM])
239   case "$gl_cv_func_printf_enomem" in
240     *yes)
241       ;;
242     *)
243       AC_DEFINE([NEED_PRINTF_ENOMEM], [1],
244         [Define if the vasnprintf implementation needs special code for
245          surviving out-of-memory conditions.])
246       AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
247         [Define if the vasnprintf implementation needs special code for
248          'double' arguments.])
249       AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
250         [Define if the vasnprintf implementation needs special code for
251          'long double' arguments.])
252       ;;
253   esac
254 ])
256 # Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance.
257 AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_EXTRAS],
259   AC_REQUIRE([gl_PREREQ_VASNPRINTF])
260   gl_PREREQ_VASNPRINTF_LONG_DOUBLE
261   gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
262   gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
263   gl_PREREQ_VASNPRINTF_DIRECTIVE_A
264   gl_PREREQ_VASNPRINTF_DIRECTIVE_F
265   gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
266   gl_PREREQ_VASNPRINTF_FLAG_GROUPING
267   gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
268   gl_PREREQ_VASNPRINTF_FLAG_ZERO
269   gl_PREREQ_VASNPRINTF_PRECISION
270   gl_PREREQ_VASNPRINTF_ENOMEM
271 ])
273 # Prerequisites of lib/asnprintf.c.
274 AC_DEFUN([gl_PREREQ_ASNPRINTF],
276 ])