| # obstack-printf-posix.m4 | |
| # serial 14 | |
| dnl Copyright (C) 2008-2026 Free Software Foundation, Inc. | |
| dnl This file is free software; the Free Software Foundation | |
| dnl gives unlimited permission to copy and/or distribute it, | |
| dnl with or without modifications, as long as this notice is preserved. | |
| dnl This file is offered as-is, without any warranty. | |
| dnl Part 1 of gl_FUNC_OBSTACK_PRINTF_POSIX: | |
| dnl Sets REPLACE_OBSTACK_PRINTF if needed. | |
| AC_DEFUN_ONCE([gl_FUNC_OBSTACK_PRINTF_POSIX_REPLACE], | |
| [ | |
| AC_REQUIRE([gl_FUNC_OBSTACK_PRINTF_IS_POSIX]) | |
| if test $gl_cv_func_obstack_printf_posix = no; then | |
| gl_REPLACE_OBSTACK_PRINTF | |
| fi | |
| ]) | |
| AC_DEFUN([gl_FUNC_OBSTACK_PRINTF_POSIX], | |
| [ | |
| gl_FUNC_OBSTACK_PRINTF_REPLACE | |
| if test $gl_cv_func_obstack_printf_posix = no; then | |
| gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS | |
| gl_REPLACE_VASNPRINTF | |
| fi | |
| gl_DECL_OBSTACK_PRINTF | |
| ]) | |
| dnl Test whether obstack_printf exists and interprets the format string in a | |
| dnl POSIX compliant way. | |
| dnl Result is gl_cv_func_obstack_printf_posix. | |
| AC_DEFUN([gl_FUNC_OBSTACK_PRINTF_IS_POSIX], | |
| [ | |
| dnl Persuade glibc <stdio.h> to declare obstack_printf(), obstack_vprintf(). | |
| AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | |
| AC_REQUIRE([gl_PRINTF_SIZES_C99]) | |
| AC_REQUIRE([gl_PRINTF_SIZES_C23]) | |
| AC_REQUIRE([gl_PRINTF_LONG_DOUBLE]) | |
| AC_REQUIRE([gl_PRINTF_INFINITE]) | |
| AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE]) | |
| AC_REQUIRE([gl_PRINTF_DIRECTIVE_A]) | |
| AC_REQUIRE([gl_PRINTF_DIRECTIVE_B]) | |
| AC_REQUIRE([gl_PRINTF_DIRECTIVE_F]) | |
| m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])]) | |
| AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS]) | |
| AC_REQUIRE([gl_PRINTF_DIRECTIVE_LC]) | |
| AC_REQUIRE([gl_PRINTF_POSITIONS]) | |
| AC_REQUIRE([gl_PRINTF_FLAG_GROUPING]) | |
| AC_REQUIRE([gl_PRINTF_FLAG_GROUPING_INT_PRECISION]) | |
| AC_REQUIRE([gl_PRINTF_FLAG_GROUPING_MULTIBYTE]) | |
| AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST]) | |
| AC_REQUIRE([gl_PRINTF_FLAG_ZERO]) | |
| AC_REQUIRE([gl_PRINTF_FLAG_ALT_PRECISION_ZERO]) | |
| AC_REQUIRE([gl_PRINTF_PRECISION]) | |
| AC_REQUIRE([gl_PRINTF_ENOMEM]) | |
| gl_cv_func_obstack_printf_posix=no | |
| AC_CHECK_FUNCS_ONCE([obstack_printf]) | |
| if test $ac_cv_func_obstack_printf = yes ; then | |
| case "$gl_cv_func_printf_sizes_c99" in | |
| *yes) | |
| case "$gl_cv_func_printf_sizes_c23" in | |
| *yes) | |
| case "$gl_cv_func_printf_long_double" in | |
| *yes) | |
| case "$gl_cv_func_printf_infinite" in | |
| *yes) | |
| case "$gl_cv_func_printf_infinite_long_double" in | |
| *yes) | |
| case "$gl_cv_func_printf_directive_a" in | |
| *yes) | |
| case "$gl_cv_func_printf_directive_b" in | |
| *yes) | |
| case "$gl_cv_func_printf_directive_f" in | |
| *yes) | |
| case m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],["$gl_cv_func_printf_directive_n"],["yes"]) in | |
| *yes) | |
| case "$gl_cv_func_printf_directive_ls" in | |
| *yes) | |
| case "$gl_cv_func_printf_directive_lc" in | |
| *yes) | |
| case "$gl_cv_func_printf_positions" in | |
| *yes) | |
| case "$gl_cv_func_printf_flag_grouping" in | |
| *yes) | |
| case "$gl_cv_func_printf_flag_grouping_int_precision" in | |
| *yes) | |
| case "$gl_cv_func_printf_flag_grouping_multibyte" in | |
| *yes) | |
| case "$gl_cv_func_printf_flag_leftadjust" in | |
| *yes) | |
| case "$gl_cv_func_printf_flag_zero" in | |
| *yes) | |
| case "$gl_cv_func_printf_flag_alt_precision_zero" in | |
| *yes) | |
| case "$gl_cv_func_printf_precision" in | |
| *yes) | |
| case "$gl_cv_func_printf_enomem" in | |
| *yes) | |
| # obstack_printf exists and is | |
| # already POSIX compliant. | |
| gl_cv_func_obstack_printf_posix=yes | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| fi | |
| ]) |