1# vsnprintf-posix.m4 serial 15
2dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7AC_DEFUN([gl_FUNC_VSNPRINTF_POSIX],
8[
9  AC_REQUIRE([gl_PRINTF_SIZES_C99])
10  AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
11  AC_REQUIRE([gl_PRINTF_INFINITE])
12  AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
13  AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
14  AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
15  AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
16  AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
17  AC_REQUIRE([gl_PRINTF_POSITIONS])
18  AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
19  AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
20  AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
21  AC_REQUIRE([gl_PRINTF_PRECISION])
22  AC_REQUIRE([gl_PRINTF_ENOMEM])
23  gl_cv_func_vsnprintf_posix=no
24  AC_CHECK_FUNCS([vsnprintf])
25  if test $ac_cv_func_vsnprintf = yes; then
26    dnl These tests use vsnprintf() if snprintf() does not exist.
27    gl_SNPRINTF_TRUNCATION_C99
28    gl_SNPRINTF_RETVAL_C99
29    gl_SNPRINTF_DIRECTIVE_N
30    gl_SNPRINTF_SIZE1
31    gl_VSNPRINTF_ZEROSIZE_C99
32    case "$gl_cv_func_printf_sizes_c99" in
33      *yes)
34        case "$gl_cv_func_printf_long_double" in
35          *yes)
36            case "$gl_cv_func_printf_infinite" in
37              *yes)
38                case "$gl_cv_func_printf_infinite_long_double" in
39                  *yes)
40                    case "$gl_cv_func_printf_directive_a" in
41                      *yes)
42                        case "$gl_cv_func_printf_directive_f" in
43                          *yes)
44                            case "$gl_cv_func_printf_directive_n" in
45                              *yes)
46                                case "$gl_cv_func_printf_directive_ls" in
47                                  *yes)
48                                    case "$gl_cv_func_printf_positions" in
49                                      *yes)
50                                        case "$gl_cv_func_printf_flag_grouping" in
51                                          *yes)
52                                            case "$gl_cv_func_printf_flag_leftadjust" in
53                                              *yes)
54                                                case "$gl_cv_func_printf_flag_zero" in
55                                                  *yes)
56                                                    case "$gl_cv_func_printf_precision" in
57                                                      *yes)
58                                                        case "$gl_cv_func_printf_enomem" in
59                                                          *yes)
60                                                            case "$gl_cv_func_snprintf_truncation_c99" in
61                                                              *yes)
62                                                                case "$gl_cv_func_snprintf_retval_c99" in
63                                                                  *yes)
64                                                                    case "$gl_cv_func_snprintf_directive_n" in
65                                                                      *yes)
66                                                                        case "$gl_cv_func_snprintf_size1" in
67                                                                          *yes)
68                                                                            case "$gl_cv_func_vsnprintf_zerosize_c99" in
69                                                                              *yes)
70                                                                                # vsnprintf exists and is
71                                                                                # already POSIX compliant.
72                                                                                gl_cv_func_vsnprintf_posix=yes
73                                                                                ;;
74                                                                            esac
75                                                                            ;;
76                                                                        esac
77                                                                        ;;
78                                                                    esac
79                                                                    ;;
80                                                                esac
81                                                                ;;
82                                                            esac
83                                                            ;;
84                                                        esac
85                                                        ;;
86                                                    esac
87                                                    ;;
88                                                esac
89                                                ;;
90                                            esac
91                                            ;;
92                                        esac
93                                        ;;
94                                    esac
95                                    ;;
96                                esac
97                                ;;
98                            esac
99                            ;;
100                        esac
101                        ;;
102                    esac
103                    ;;
104                esac
105                ;;
106            esac
107            ;;
108        esac
109        ;;
110    esac
111  fi
112  if test $gl_cv_func_vsnprintf_posix = no; then
113    gl_PREREQ_VASNPRINTF_LONG_DOUBLE
114    gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
115    gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
116    gl_PREREQ_VASNPRINTF_DIRECTIVE_A
117    gl_PREREQ_VASNPRINTF_DIRECTIVE_F
118    gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
119    gl_PREREQ_VASNPRINTF_FLAG_GROUPING
120    gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
121    gl_PREREQ_VASNPRINTF_FLAG_ZERO
122    gl_PREREQ_VASNPRINTF_PRECISION
123    gl_PREREQ_VASNPRINTF_ENOMEM
124    gl_REPLACE_VASNPRINTF
125    gl_REPLACE_VSNPRINTF
126  fi
127])
128