1
# vasnprintf.m4 serial 32
2
dnl Copyright (C) 2002-2004, 2006-2011 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],
9
AC_CHECK_FUNCS_ONCE([vasnprintf])
10
if test $ac_cv_func_vasnprintf = no; then
15
AC_DEFUN([gl_REPLACE_VASNPRINTF],
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.])
27
gl_PREREQ_PRINTF_PARSE
32
# Prequisites of lib/printf-args.h, lib/printf-args.c.
33
AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
35
AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
36
AC_REQUIRE([gt_TYPE_WCHAR_T])
37
AC_REQUIRE([gt_TYPE_WINT_T])
40
# Prequisites of lib/printf-parse.h, lib/printf-parse.c.
41
AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
43
AC_REQUIRE([gl_FEATURES_H])
44
AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
45
AC_REQUIRE([gt_TYPE_WCHAR_T])
46
AC_REQUIRE([gt_TYPE_WINT_T])
47
AC_REQUIRE([AC_TYPE_SIZE_T])
48
AC_CHECK_TYPE([ptrdiff_t], ,
49
[AC_DEFINE([ptrdiff_t], [long],
50
[Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
52
AC_REQUIRE([gt_AC_TYPE_INTMAX_T])
55
# Prerequisites of lib/vasnprintf.c.
56
AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
58
AC_REQUIRE([AC_C_INLINE])
59
AC_REQUIRE([AC_FUNC_ALLOCA])
60
AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
61
AC_REQUIRE([gt_TYPE_WCHAR_T])
62
AC_REQUIRE([gt_TYPE_WINT_T])
63
AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
64
dnl Use the _snprintf function only if it is declared (because on NetBSD it
65
dnl is defined as a weak alias of snprintf; we prefer to use the latter).
66
AC_CHECK_DECLS([_snprintf], , , [#include <stdio.h>])
67
dnl We can avoid a lot of code by assuming that snprintf's return value
68
dnl conforms to ISO C99. So check that.
69
AC_REQUIRE([gl_SNPRINTF_RETVAL_C99])
70
case "$gl_cv_func_snprintf_retval_c99" in
72
AC_DEFINE([HAVE_SNPRINTF_RETVAL_C99], [1],
73
[Define if the return value of the snprintf function is the number of
74
of bytes (excluding the terminating NUL) that would have been produced
75
if the buffer had been large enough.])
80
# Extra prerequisites of lib/vasnprintf.c for supporting 'long double'
82
AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE],
84
AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
85
case "$gl_cv_func_printf_long_double" in
89
AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
90
[Define if the vasnprintf implementation needs special code for
91
'long double' arguments.])
96
# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'double'
98
AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE],
100
AC_REQUIRE([gl_PRINTF_INFINITE])
101
case "$gl_cv_func_printf_infinite" in
105
AC_DEFINE([NEED_PRINTF_INFINITE_DOUBLE], [1],
106
[Define if the vasnprintf implementation needs special code for
107
infinite 'double' arguments.])
112
# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'long double'
114
AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE],
116
AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
117
dnl There is no need to set NEED_PRINTF_INFINITE_LONG_DOUBLE if
118
dnl NEED_PRINTF_LONG_DOUBLE is already set.
119
AC_REQUIRE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE])
120
case "$gl_cv_func_printf_long_double" in
122
case "$gl_cv_func_printf_infinite_long_double" in
126
AC_DEFINE([NEED_PRINTF_INFINITE_LONG_DOUBLE], [1],
127
[Define if the vasnprintf implementation needs special code for
128
infinite 'long double' arguments.])
135
# Extra prerequisites of lib/vasnprintf.c for supporting the 'a' directive.
136
AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_A],
138
AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
139
case "$gl_cv_func_printf_directive_a" in
143
AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], [1],
144
[Define if the vasnprintf implementation needs special code for
145
the 'a' and 'A' directives.])
146
AC_CHECK_FUNCS([nl_langinfo])
151
# Extra prerequisites of lib/vasnprintf.c for supporting the 'F' directive.
152
AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_F],
154
AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
155
case "$gl_cv_func_printf_directive_f" in
159
AC_DEFINE([NEED_PRINTF_DIRECTIVE_F], [1],
160
[Define if the vasnprintf implementation needs special code for
166
# Extra prerequisites of lib/vasnprintf.c for supporting the 'ls' directive.
167
AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LS],
169
AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
170
case "$gl_cv_func_printf_directive_ls" in
174
AC_DEFINE([NEED_PRINTF_DIRECTIVE_LS], [1],
175
[Define if the vasnprintf implementation needs special code for
176
the 'ls' directive.])
181
# Extra prerequisites of lib/vasnprintf.c for supporting the ' flag.
182
AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_GROUPING],
184
AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
185
case "$gl_cv_func_printf_flag_grouping" in
189
AC_DEFINE([NEED_PRINTF_FLAG_GROUPING], [1],
190
[Define if the vasnprintf implementation needs special code for the
196
# Extra prerequisites of lib/vasnprintf.c for supporting the '-' flag.
197
AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST],
199
AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
200
case "$gl_cv_func_printf_flag_leftadjust" in
204
AC_DEFINE([NEED_PRINTF_FLAG_LEFTADJUST], [1],
205
[Define if the vasnprintf implementation needs special code for the
211
# Extra prerequisites of lib/vasnprintf.c for supporting the 0 flag.
212
AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO],
214
AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
215
case "$gl_cv_func_printf_flag_zero" in
219
AC_DEFINE([NEED_PRINTF_FLAG_ZERO], [1],
220
[Define if the vasnprintf implementation needs special code for the
226
# Extra prerequisites of lib/vasnprintf.c for supporting large precisions.
227
AC_DEFUN([gl_PREREQ_VASNPRINTF_PRECISION],
229
AC_REQUIRE([gl_PRINTF_PRECISION])
230
case "$gl_cv_func_printf_precision" in
234
AC_DEFINE([NEED_PRINTF_UNBOUNDED_PRECISION], [1],
235
[Define if the vasnprintf implementation needs special code for
236
supporting large precisions without arbitrary bounds.])
237
AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
238
[Define if the vasnprintf implementation needs special code for
239
'double' arguments.])
240
AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
241
[Define if the vasnprintf implementation needs special code for
242
'long double' arguments.])
247
# Extra prerequisites of lib/vasnprintf.c for surviving out-of-memory
249
AC_DEFUN([gl_PREREQ_VASNPRINTF_ENOMEM],
251
AC_REQUIRE([gl_PRINTF_ENOMEM])
252
case "$gl_cv_func_printf_enomem" in
256
AC_DEFINE([NEED_PRINTF_ENOMEM], [1],
257
[Define if the vasnprintf implementation needs special code for
258
surviving out-of-memory conditions.])
259
AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
260
[Define if the vasnprintf implementation needs special code for
261
'double' arguments.])
262
AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
263
[Define if the vasnprintf implementation needs special code for
264
'long double' arguments.])
269
# Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance.
270
AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_EXTRAS],
272
AC_REQUIRE([gl_PREREQ_VASNPRINTF])
273
gl_PREREQ_VASNPRINTF_LONG_DOUBLE
274
gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
275
gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
276
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
277
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
278
gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
279
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
280
gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
281
gl_PREREQ_VASNPRINTF_FLAG_ZERO
282
gl_PREREQ_VASNPRINTF_PRECISION
283
gl_PREREQ_VASNPRINTF_ENOMEM
286
# Prerequisites of lib/asnprintf.c.
287
AC_DEFUN([gl_PREREQ_ASNPRINTF],