| # obstack-printf.m4 | |
| # serial 6 | |
| 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 From Eric Blake. | |
| dnl Sets REPLACE_OBSTACK_PRINTF if needed. | |
| AC_DEFUN_ONCE([gl_FUNC_OBSTACK_PRINTF_REPLACE], | |
| [ | |
| AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | |
| AC_REQUIRE([gl_FUNC_OBSTACK]) | |
| dnl Persuade glibc <stdio.h> to declare obstack_printf(), obstack_vprintf(). | |
| AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | |
| dnl Test whether obstack_printf() exists. For now, we assume that | |
| dnl obstack_vprintf behaves identically, so we only test for one. | |
| AC_CHECK_FUNCS_ONCE([obstack_printf]) | |
| dnl The obstack_printf function from glibc does not work with the | |
| dnl 'struct obstack' defined in gnulib's <obstack.h>. Therefore, when | |
| dnl overriding 'struct obstack', we must also override obstack_printf. | |
| if test $HAVE_OBSTACK = 0 || test $REPLACE_OBSTACK = 1; then | |
| gl_REPLACE_OBSTACK_PRINTF | |
| fi | |
| m4_ifdef([gl_FUNC_OBSTACK_PRINTF_POSIX_REPLACE], | |
| [gl_FUNC_OBSTACK_PRINTF_POSIX_REPLACE]) | |
| m4_ifdef([gl_FUNC_OBSTACK_PRINTF_GNU_REPLACE], | |
| [gl_FUNC_OBSTACK_PRINTF_GNU_REPLACE]) | |
| ]) | |
| AC_DEFUN([gl_FUNC_OBSTACK_PRINTF], | |
| [ | |
| gl_FUNC_OBSTACK_PRINTF_REPLACE | |
| gl_DECL_OBSTACK_PRINTF | |
| ]) | |
| AC_DEFUN([gl_REPLACE_OBSTACK_PRINTF], | |
| [ | |
| AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | |
| if test $ac_cv_func_obstack_printf = yes; then | |
| REPLACE_OBSTACK_PRINTF=1 | |
| fi | |
| ]) | |
| dnl Ensure obstack_printf() and obstack_vprintf() are declared | |
| dnl (whether or not they are being replaced). | |
| AC_DEFUN([gl_DECL_OBSTACK_PRINTF], | |
| [ | |
| AC_CHECK_DECLS_ONCE([obstack_printf]) | |
| if test $ac_cv_have_decl_obstack_printf = no; then | |
| HAVE_DECL_OBSTACK_PRINTF=0 | |
| fi | |
| ]) |