Blame m4/vasnprintf.m4

Packit Service 4684c1
# vasnprintf.m4 serial 37
Packit Service 4684c1
dnl Copyright (C) 2002-2004, 2006-2020 Free Software Foundation, Inc.
Packit Service 4684c1
dnl This file is free software; the Free Software Foundation
Packit Service 4684c1
dnl gives unlimited permission to copy and/or distribute it,
Packit Service 4684c1
dnl with or without modifications, as long as this notice is preserved.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_FUNC_VASNPRINTF],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_CHECK_FUNCS_ONCE([vasnprintf])
Packit Service 4684c1
  if test $ac_cv_func_vasnprintf = no; then
Packit Service 4684c1
    gl_REPLACE_VASNPRINTF
Packit Service 4684c1
  fi
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_REPLACE_VASNPRINTF],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_CHECK_FUNCS_ONCE([vasnprintf])
Packit Service 4684c1
  AC_LIBOBJ([vasnprintf])
Packit Service 4684c1
  AC_LIBOBJ([printf-args])
Packit Service 4684c1
  AC_LIBOBJ([printf-parse])
Packit Service 4684c1
  AC_LIBOBJ([asnprintf])
Packit Service 4684c1
  if test $ac_cv_func_vasnprintf = yes; then
Packit Service 4684c1
    AC_DEFINE([REPLACE_VASNPRINTF], [1],
Packit Service 4684c1
      [Define if vasnprintf exists but is overridden by gnulib.])
Packit Service 4684c1
  fi
Packit Service 4684c1
  gl_PREREQ_PRINTF_ARGS
Packit Service 4684c1
  gl_PREREQ_PRINTF_PARSE
Packit Service 4684c1
  gl_PREREQ_VASNPRINTF
Packit Service 4684c1
  gl_PREREQ_ASNPRINTF
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Prerequisites of lib/printf-args.h, lib/printf-args.c.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gt_TYPE_WCHAR_T])
Packit Service 4684c1
  AC_REQUIRE([gt_TYPE_WINT_T])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Prerequisites of lib/printf-parse.h, lib/printf-parse.c.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_FEATURES_H])
Packit Service 4684c1
  AC_REQUIRE([gt_TYPE_WCHAR_T])
Packit Service 4684c1
  AC_REQUIRE([gt_TYPE_WINT_T])
Packit Service 4684c1
  AC_REQUIRE([AC_TYPE_SIZE_T])
Packit Service 4684c1
  AC_CHECK_TYPE([ptrdiff_t], ,
Packit Service 4684c1
    [AC_DEFINE([ptrdiff_t], [long],
Packit Service 4684c1
       [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
Packit Service 4684c1
    ])
Packit Service 4684c1
  AC_REQUIRE([gt_AC_TYPE_INTMAX_T])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Prerequisites of lib/vasnprintf.c.
Packit Service 4684c1
AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_FUNC_ALLOCA])
Packit Service 4684c1
  AC_REQUIRE([gt_TYPE_WCHAR_T])
Packit Service 4684c1
  AC_REQUIRE([gt_TYPE_WINT_T])
Packit Service 4684c1
  AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
Packit Service 4684c1
  dnl Use the _snprintf function only if it is declared (because on NetBSD it
Packit Service 4684c1
  dnl is defined as a weak alias of snprintf; we prefer to use the latter).
Packit Service 4684c1
  AC_CHECK_DECLS([_snprintf], , , [[#include <stdio.h>]])
Packit Service 4684c1
  dnl Knowing DBL_EXPBIT0_WORD and DBL_EXPBIT0_BIT enables an optimization
Packit Service 4684c1
  dnl in the code for NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE.
Packit Service 4684c1
  AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
Packit Service 4684c1
  dnl We can avoid a lot of code by assuming that snprintf's return value
Packit Service 4684c1
  dnl conforms to ISO C99. So check that.
Packit Service 4684c1
  AC_REQUIRE([gl_SNPRINTF_RETVAL_C99])
Packit Service 4684c1
  case "$gl_cv_func_snprintf_retval_c99" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      AC_DEFINE([HAVE_SNPRINTF_RETVAL_C99], [1],
Packit Service 4684c1
        [Define if the return value of the snprintf function is the number of
Packit Service 4684c1
         of bytes (excluding the terminating NUL) that would have been produced
Packit Service 4684c1
         if the buffer had been large enough.])
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Extra prerequisites of lib/vasnprintf.c for supporting 'long double'
Packit Service 4684c1
# arguments.
Packit Service 4684c1
AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
Packit Service 4684c1
  case "$gl_cv_func_printf_long_double" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      ;;
Packit Service 4684c1
    *)
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for
Packit Service 4684c1
         'long double' arguments.])
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'double'
Packit Service 4684c1
# arguments.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PRINTF_INFINITE])
Packit Service 4684c1
  case "$gl_cv_func_printf_infinite" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      ;;
Packit Service 4684c1
    *)
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_INFINITE_DOUBLE], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for
Packit Service 4684c1
         infinite 'double' arguments.])
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'long double'
Packit Service 4684c1
# arguments.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
Packit Service 4684c1
  dnl There is no need to set NEED_PRINTF_INFINITE_LONG_DOUBLE if
Packit Service 4684c1
  dnl NEED_PRINTF_LONG_DOUBLE is already set.
Packit Service 4684c1
  AC_REQUIRE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE])
Packit Service 4684c1
  case "$gl_cv_func_printf_long_double" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      case "$gl_cv_func_printf_infinite_long_double" in
Packit Service 4684c1
        *yes)
Packit Service 4684c1
          ;;
Packit Service 4684c1
        *)
Packit Service 4684c1
          AC_DEFINE([NEED_PRINTF_INFINITE_LONG_DOUBLE], [1],
Packit Service 4684c1
            [Define if the vasnprintf implementation needs special code for
Packit Service 4684c1
             infinite 'long double' arguments.])
Packit Service 4684c1
          ;;
Packit Service 4684c1
      esac
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Extra prerequisites of lib/vasnprintf.c for supporting the 'a' directive.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_A],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
Packit Service 4684c1
  case "$gl_cv_func_printf_directive_a" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      ;;
Packit Service 4684c1
    *)
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for
Packit Service 4684c1
         the 'a' and 'A' directives.])
Packit Service 4684c1
      AC_CHECK_FUNCS([nl_langinfo])
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Extra prerequisites of lib/vasnprintf.c for supporting the 'F' directive.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_F],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
Packit Service 4684c1
  case "$gl_cv_func_printf_directive_f" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      ;;
Packit Service 4684c1
    *)
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_DIRECTIVE_F], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for
Packit Service 4684c1
         the 'F' directive.])
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Extra prerequisites of lib/vasnprintf.c for supporting the 'ls' directive.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LS],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
Packit Service 4684c1
  case "$gl_cv_func_printf_directive_ls" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      ;;
Packit Service 4684c1
    *)
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_DIRECTIVE_LS], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for
Packit Service 4684c1
         the 'ls' directive.])
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Extra prerequisites of lib/vasnprintf.c for supporting the ' flag.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_GROUPING],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
Packit Service 4684c1
  case "$gl_cv_func_printf_flag_grouping" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      ;;
Packit Service 4684c1
    *)
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_FLAG_GROUPING], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for the
Packit Service 4684c1
         ' flag.])
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Extra prerequisites of lib/vasnprintf.c for supporting the '-' flag.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
Packit Service 4684c1
  case "$gl_cv_func_printf_flag_leftadjust" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      ;;
Packit Service 4684c1
    *)
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_FLAG_LEFTADJUST], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for the
Packit Service 4684c1
         '-' flag.])
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Extra prerequisites of lib/vasnprintf.c for supporting the 0 flag.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
Packit Service 4684c1
  case "$gl_cv_func_printf_flag_zero" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      ;;
Packit Service 4684c1
    *)
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_FLAG_ZERO], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for the
Packit Service 4684c1
         0 flag.])
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Extra prerequisites of lib/vasnprintf.c for supporting large precisions.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_VASNPRINTF_PRECISION],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PRINTF_PRECISION])
Packit Service 4684c1
  case "$gl_cv_func_printf_precision" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      ;;
Packit Service 4684c1
    *)
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_UNBOUNDED_PRECISION], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for
Packit Service 4684c1
         supporting large precisions without arbitrary bounds.])
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for
Packit Service 4684c1
         'double' arguments.])
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for
Packit Service 4684c1
         'long double' arguments.])
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Extra prerequisites of lib/vasnprintf.c for surviving out-of-memory
Packit Service 4684c1
# conditions.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_VASNPRINTF_ENOMEM],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PRINTF_ENOMEM])
Packit Service 4684c1
  case "$gl_cv_func_printf_enomem" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      ;;
Packit Service 4684c1
    *)
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_ENOMEM], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for
Packit Service 4684c1
         surviving out-of-memory conditions.])
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for
Packit Service 4684c1
         'double' arguments.])
Packit Service 4684c1
      AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
Packit Service 4684c1
        [Define if the vasnprintf implementation needs special code for
Packit Service 4684c1
         'long double' arguments.])
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_EXTRAS],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PREREQ_VASNPRINTF])
Packit Service 4684c1
  gl_PREREQ_VASNPRINTF_LONG_DOUBLE
Packit Service 4684c1
  gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
Packit Service 4684c1
  gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
Packit Service 4684c1
  gl_PREREQ_VASNPRINTF_DIRECTIVE_A
Packit Service 4684c1
  gl_PREREQ_VASNPRINTF_DIRECTIVE_F
Packit Service 4684c1
  gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
Packit Service 4684c1
  gl_PREREQ_VASNPRINTF_FLAG_GROUPING
Packit Service 4684c1
  gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
Packit Service 4684c1
  gl_PREREQ_VASNPRINTF_FLAG_ZERO
Packit Service 4684c1
  gl_PREREQ_VASNPRINTF_PRECISION
Packit Service 4684c1
  gl_PREREQ_VASNPRINTF_ENOMEM
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Prerequisites of lib/asnprintf.c.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_ASNPRINTF],
Packit Service 4684c1
[
Packit Service 4684c1
])