Work around an incorrect implementation of the 0 flag on most platforms.
[pspp] / m4 / snprintf-posix.m4
1 # snprintf-posix.m4 serial 6
2 dnl Copyright (C) 2007 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.
6
7 AC_DEFUN([gl_FUNC_SNPRINTF_POSIX],
8 [
9   AC_REQUIRE([gl_EOVERFLOW])
10   AC_REQUIRE([gl_PRINTF_SIZES_C99])
11   AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
12   AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
13   AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
14   AC_REQUIRE([gl_PRINTF_POSITIONS])
15   AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
16   AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
17   gl_cv_func_snprintf_posix=no
18   AC_CHECK_FUNCS([snprintf])
19   if test $ac_cv_func_snprintf = yes; then
20     gl_SNPRINTF_TRUNCATION_C99
21     gl_SNPRINTF_RETVAL_C99
22     gl_SNPRINTF_DIRECTIVE_N
23     gl_VSNPRINTF_ZEROSIZE_C99
24     case "$gl_cv_func_printf_sizes_c99" in
25       *yes)
26         case "$gl_cv_func_printf_directive_a" in
27           *yes)
28             case "$gl_cv_func_printf_directive_f" in
29               *yes)
30                 case "$gl_cv_func_printf_directive_n" in
31                   *yes)
32                     case "$gl_cv_func_printf_positions" in
33                       *yes)
34                         case "$gl_cv_func_printf_flag_grouping" in
35                           *yes)
36                             case "$gl_cv_func_printf_flag_zero" in
37                               *yes)
38                                 case "$gl_cv_func_snprintf_truncation_c99" in
39                                   *yes)
40                                     case "$gl_cv_func_snprintf_retval_c99" in
41                                       *yes)
42                                         case "$gl_cv_func_snprintf_directive_n" in
43                                           *yes)
44                                             case "$gl_cv_func_vsnprintf_zerosize_c99" in
45                                               *yes)
46                                                 # snprintf exists and is already
47                                                 # POSIX compliant.
48                                                 gl_cv_func_snprintf_posix=yes
49                                                 ;;
50                                             esac
51                                             ;;
52                                         esac
53                                         ;;
54                                     esac
55                                     ;;
56                                 esac
57                                 ;;
58                             esac
59                             ;;
60                         esac
61                         ;;
62                     esac
63                     ;;
64                 esac
65                 ;;
66             esac
67             ;;
68         esac
69         ;;
70     esac
71   fi
72   if test $gl_cv_func_snprintf_posix = no; then
73     gl_PREREQ_VASNPRINTF_DIRECTIVE_A
74     gl_PREREQ_VASNPRINTF_DIRECTIVE_F
75     gl_PREREQ_VASNPRINTF_FLAG_GROUPING
76     gl_PREREQ_VASNPRINTF_FLAG_ZERO
77     gl_REPLACE_VASNPRINTF
78     gl_REPLACE_SNPRINTF
79   fi
80 ])