Blame m4/printf.m4

Packit Service 4684c1
# printf.m4 serial 64
Packit Service 4684c1
dnl Copyright (C) 2003, 2007-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
dnl Test whether the *printf family of functions supports the 'j', 'z', 't',
Packit Service 4684c1
dnl 'L' size specifiers. (ISO C99, POSIX:2001)
Packit Service 4684c1
dnl Result is gl_cv_func_printf_sizes_c99.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_SIZES_C99],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
Packit Service 4684c1
  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf supports size specifiers as in C99],
Packit Service 4684c1
    [gl_cv_func_printf_sizes_c99],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stddef.h>
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
#include <sys/types.h>
Packit Service 4684c1
#if HAVE_STDINT_H_WITH_UINTMAX
Packit Service 4684c1
# include <stdint.h>
Packit Service 4684c1
#endif
Packit Service 4684c1
#if HAVE_INTTYPES_H_WITH_UINTMAX
Packit Service 4684c1
# include <inttypes.h>
Packit Service 4684c1
#endif
Packit Service 4684c1
static char buf[100];
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  int result = 0;
Packit Service 4684c1
#if HAVE_STDINT_H_WITH_UINTMAX || HAVE_INTTYPES_H_WITH_UINTMAX
Packit Service 4684c1
  buf[0] = '\0';
Packit Service 4684c1
  if (sprintf (buf, "%ju %d", (uintmax_t) 12345671, 33, 44, 55) < 0
Packit Service 4684c1
      || strcmp (buf, "12345671 33") != 0)
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
#else
Packit Service 4684c1
  result |= 1;
Packit Service 4684c1
#endif
Packit Service 4684c1
  buf[0] = '\0';
Packit Service 4684c1
  if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0
Packit Service 4684c1
      || strcmp (buf, "12345672 33") != 0)
Packit Service 4684c1
    result |= 2;
Packit Service 4684c1
  buf[0] = '\0';
Packit Service 4684c1
  if (sprintf (buf, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55) < 0
Packit Service 4684c1
      || strcmp (buf, "12345673 33") != 0)
Packit Service 4684c1
    result |= 4;
Packit Service 4684c1
  buf[0] = '\0';
Packit Service 4684c1
  if (sprintf (buf, "%Lg %d", (long double) 1.5, 33, 44, 55) < 0
Packit Service 4684c1
      || strcmp (buf, "1.5 33") != 0)
Packit Service 4684c1
    result |= 8;
Packit Service 4684c1
  return result;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_printf_sizes_c99=yes],
Packit Service 4684c1
        [gl_cv_func_printf_sizes_c99=no],
Packit Service 4684c1
        [
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
                                 # Guess yes on glibc systems.
Packit Service 4684c1
           *-gnu* | gnu*)        gl_cv_func_printf_sizes_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on musl systems.
Packit Service 4684c1
           *-musl*)              gl_cv_func_printf_sizes_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on FreeBSD >= 5.
Packit Service 4684c1
           freebsd[1-4].*)       gl_cv_func_printf_sizes_c99="guessing no";;
Packit Service 4684c1
           freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Mac OS X >= 10.3.
Packit Service 4684c1
           darwin[1-6].*)        gl_cv_func_printf_sizes_c99="guessing no";;
Packit Service 4684c1
           darwin*)              gl_cv_func_printf_sizes_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on OpenBSD >= 3.9.
Packit Service 4684c1
           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
Packit Service 4684c1
                                 gl_cv_func_printf_sizes_c99="guessing no";;
Packit Service 4684c1
           openbsd*)             gl_cv_func_printf_sizes_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Solaris >= 2.10.
Packit Service 4684c1
           solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";;
Packit Service 4684c1
           solaris*)             gl_cv_func_printf_sizes_c99="guessing no";;
Packit Service 4684c1
                                 # Guess yes on NetBSD >= 3.
Packit Service 4684c1
           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
Packit Service 4684c1
                                 gl_cv_func_printf_sizes_c99="guessing no";;
Packit Service 4684c1
           netbsd*)              gl_cv_func_printf_sizes_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Android.
Packit Service 4684c1
           linux*-android*)      gl_cv_func_printf_sizes_c99="guessing yes";;
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
                                 # Guess yes on MSVC, no on mingw.
Packit Service 4684c1
           mingw*)               AC_EGREP_CPP([Known], [
Packit Service 4684c1
#ifdef _MSC_VER
Packit Service 4684c1
 Known
Packit Service 4684c1
#endif
Packit Service 4684c1
                                   ],
Packit Service 4684c1
                                   [gl_cv_func_printf_sizes_c99="guessing yes"],
Packit Service 4684c1
                                   [gl_cv_func_printf_sizes_c99="guessing no"])
Packit Service 4684c1
                                 ;;
Packit Service 4684c1
                                 # If we don't know, obey --enable-cross-guesses.
Packit Service 4684c1
           *)                    gl_cv_func_printf_sizes_c99="$gl_cross_guess_normal";;
Packit Service 4684c1
         esac
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions supports 'long double'
Packit Service 4684c1
dnl arguments together with the 'L' size specifier. (ISO C99, POSIX:2001)
Packit Service 4684c1
dnl Result is gl_cv_func_printf_long_double.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_LONG_DOUBLE],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf supports 'long double' arguments],
Packit Service 4684c1
    [gl_cv_func_printf_long_double],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
static char buf[10000];
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  int result = 0;
Packit Service 4684c1
  buf[0] = '\0';
Packit Service 4684c1
  if (sprintf (buf, "%Lf %d", 1.75L, 33, 44, 55) < 0
Packit Service 4684c1
      || strcmp (buf, "1.750000 33") != 0)
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  buf[0] = '\0';
Packit Service 4684c1
  if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0
Packit Service 4684c1
      || strcmp (buf, "1.750000e+00 33") != 0)
Packit Service 4684c1
    result |= 2;
Packit Service 4684c1
  buf[0] = '\0';
Packit Service 4684c1
  if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0
Packit Service 4684c1
      || strcmp (buf, "1.75 33") != 0)
Packit Service 4684c1
    result |= 4;
Packit Service 4684c1
  return result;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_printf_long_double=yes],
Packit Service 4684c1
        [gl_cv_func_printf_long_double=no],
Packit Service 4684c1
        [case "$host_os" in
Packit Service 4684c1
                            # Guess no on BeOS.
Packit Service 4684c1
           beos*)           gl_cv_func_printf_long_double="guessing no";;
Packit Service 4684c1
                            # Guess yes on Android.
Packit Service 4684c1
           linux*-android*) gl_cv_func_printf_long_double="guessing yes";;
Packit Service 4684c1
                            # Guess yes on MSVC, no on mingw.
Packit Service 4684c1
           mingw*)          AC_EGREP_CPP([Known], [
Packit Service 4684c1
#ifdef _MSC_VER
Packit Service 4684c1
 Known
Packit Service 4684c1
#endif
Packit Service 4684c1
                              ],
Packit Service 4684c1
                              [gl_cv_func_printf_long_double="guessing yes"],
Packit Service 4684c1
                              [gl_cv_func_printf_long_double="guessing no"])
Packit Service 4684c1
                            ;;
Packit Service 4684c1
           *)               gl_cv_func_printf_long_double="guessing yes";;
Packit Service 4684c1
         esac
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions supports infinite and NaN
Packit Service 4684c1
dnl 'double' arguments and negative zero arguments in the %f, %e, %g
Packit Service 4684c1
dnl directives. (ISO C99, POSIX:2001)
Packit Service 4684c1
dnl Result is gl_cv_func_printf_infinite.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_INFINITE],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf supports infinite 'double' arguments],
Packit Service 4684c1
    [gl_cv_func_printf_infinite],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
static int
Packit Service 4684c1
strisnan (const char *string, size_t start_index, size_t end_index)
Packit Service 4684c1
{
Packit Service 4684c1
  if (start_index < end_index)
Packit Service 4684c1
    {
Packit Service 4684c1
      if (string[start_index] == '-')
Packit Service 4684c1
        start_index++;
Packit Service 4684c1
      if (start_index + 3 <= end_index
Packit Service 4684c1
          && memcmp (string + start_index, "nan", 3) == 0)
Packit Service 4684c1
        {
Packit Service 4684c1
          start_index += 3;
Packit Service 4684c1
          if (start_index == end_index
Packit Service 4684c1
              || (string[start_index] == '(' && string[end_index - 1] == ')'))
Packit Service 4684c1
            return 1;
Packit Service 4684c1
        }
Packit Service 4684c1
    }
Packit Service 4684c1
  return 0;
Packit Service 4684c1
}
Packit Service 4684c1
static int
Packit Service 4684c1
have_minus_zero ()
Packit Service 4684c1
{
Packit Service 4684c1
  static double plus_zero = 0.0;
Packit Service 4684c1
  double minus_zero = - plus_zero;
Packit Service 4684c1
  return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
Packit Service 4684c1
}
Packit Service 4684c1
static char buf[10000];
Packit Service 4684c1
static double zero = 0.0;
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  int result = 0;
Packit Service 4684c1
  if (sprintf (buf, "%f", 1.0 / zero) < 0
Packit Service 4684c1
      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%f", -1.0 / zero) < 0
Packit Service 4684c1
      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%f", zero / zero) < 0
Packit Service 4684c1
      || !strisnan (buf, 0, strlen (buf)))
Packit Service 4684c1
    result |= 2;
Packit Service 4684c1
  if (sprintf (buf, "%e", 1.0 / zero) < 0
Packit Service 4684c1
      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
Packit Service 4684c1
    result |= 4;
Packit Service 4684c1
  if (sprintf (buf, "%e", -1.0 / zero) < 0
Packit Service 4684c1
      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
Packit Service 4684c1
    result |= 4;
Packit Service 4684c1
  if (sprintf (buf, "%e", zero / zero) < 0
Packit Service 4684c1
      || !strisnan (buf, 0, strlen (buf)))
Packit Service 4684c1
    result |= 8;
Packit Service 4684c1
  if (sprintf (buf, "%g", 1.0 / zero) < 0
Packit Service 4684c1
      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
Packit Service 4684c1
    result |= 16;
Packit Service 4684c1
  if (sprintf (buf, "%g", -1.0 / zero) < 0
Packit Service 4684c1
      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
Packit Service 4684c1
    result |= 16;
Packit Service 4684c1
  if (sprintf (buf, "%g", zero / zero) < 0
Packit Service 4684c1
      || !strisnan (buf, 0, strlen (buf)))
Packit Service 4684c1
    result |= 32;
Packit Service 4684c1
  /* This test fails on HP-UX 10.20.  */
Packit Service 4684c1
  if (have_minus_zero ())
Packit Service 4684c1
    if (sprintf (buf, "%g", - zero) < 0
Packit Service 4684c1
        || strcmp (buf, "-0") != 0)
Packit Service 4684c1
    result |= 64;
Packit Service 4684c1
  return result;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_printf_infinite=yes],
Packit Service 4684c1
        [gl_cv_func_printf_infinite=no],
Packit Service 4684c1
        [
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
                                 # Guess yes on glibc systems.
Packit Service 4684c1
           *-gnu* | gnu*)        gl_cv_func_printf_infinite="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on musl systems.
Packit Service 4684c1
           *-musl*)              gl_cv_func_printf_infinite="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on FreeBSD >= 6.
Packit Service 4684c1
           freebsd[1-5].*)       gl_cv_func_printf_infinite="guessing no";;
Packit Service 4684c1
           freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Mac OS X >= 10.3.
Packit Service 4684c1
           darwin[1-6].*)        gl_cv_func_printf_infinite="guessing no";;
Packit Service 4684c1
           darwin*)              gl_cv_func_printf_infinite="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on HP-UX >= 11.
Packit Service 4684c1
           hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite="guessing no";;
Packit Service 4684c1
           hpux*)                gl_cv_func_printf_infinite="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on NetBSD >= 3.
Packit Service 4684c1
           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
Packit Service 4684c1
                                 gl_cv_func_printf_infinite="guessing no";;
Packit Service 4684c1
           netbsd*)              gl_cv_func_printf_infinite="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on BeOS.
Packit Service 4684c1
           beos*)                gl_cv_func_printf_infinite="guessing yes";;
Packit Service 4684c1
                                 # Guess no on Android.
Packit Service 4684c1
           linux*-android*)      gl_cv_func_printf_infinite="guessing no";;
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
                                 # Guess yes on MSVC, no on mingw.
Packit Service 4684c1
           mingw*)               AC_EGREP_CPP([Known], [
Packit Service 4684c1
#ifdef _MSC_VER
Packit Service 4684c1
 Known
Packit Service 4684c1
#endif
Packit Service 4684c1
                                   ],
Packit Service 4684c1
                                   [gl_cv_func_printf_infinite="guessing yes"],
Packit Service 4684c1
                                   [gl_cv_func_printf_infinite="guessing no"])
Packit Service 4684c1
                                 ;;
Packit Service 4684c1
                                 # If we don't know, obey --enable-cross-guesses.
Packit Service 4684c1
           *)                    gl_cv_func_printf_infinite="$gl_cross_guess_normal";;
Packit Service 4684c1
         esac
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions supports infinite and NaN
Packit Service 4684c1
dnl 'long double' arguments in the %f, %e, %g directives. (ISO C99, POSIX:2001)
Packit Service 4684c1
dnl Result is gl_cv_func_printf_infinite_long_double.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_INFINITE_LONG_DOUBLE],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([gl_BIGENDIAN])
Packit Service 4684c1
  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  dnl The user can set or unset the variable gl_printf_safe to indicate
Packit Service 4684c1
  dnl that he wishes a safe handling of non-IEEE-754 'long double' values.
Packit Service 4684c1
  if test -n "$gl_printf_safe"; then
Packit Service 4684c1
    AC_DEFINE([CHECK_PRINTF_SAFE], [1],
Packit Service 4684c1
      [Define if you wish *printf() functions that have a safe handling of
Packit Service 4684c1
       non-IEEE-754 'long double' values.])
Packit Service 4684c1
  fi
Packit Service 4684c1
  case "$gl_cv_func_printf_long_double" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      AC_CACHE_CHECK([whether printf supports infinite 'long double' arguments],
Packit Service 4684c1
        [gl_cv_func_printf_infinite_long_double],
Packit Service 4684c1
        [
Packit Service 4684c1
          AC_RUN_IFELSE(
Packit Service 4684c1
            [AC_LANG_SOURCE([[
Packit Service 4684c1
]GL_NOCRASH[
Packit Service 4684c1
#include <float.h>
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
static int
Packit Service 4684c1
strisnan (const char *string, size_t start_index, size_t end_index)
Packit Service 4684c1
{
Packit Service 4684c1
  if (start_index < end_index)
Packit Service 4684c1
    {
Packit Service 4684c1
      if (string[start_index] == '-')
Packit Service 4684c1
        start_index++;
Packit Service 4684c1
      if (start_index + 3 <= end_index
Packit Service 4684c1
          && memcmp (string + start_index, "nan", 3) == 0)
Packit Service 4684c1
        {
Packit Service 4684c1
          start_index += 3;
Packit Service 4684c1
          if (start_index == end_index
Packit Service 4684c1
              || (string[start_index] == '(' && string[end_index - 1] == ')'))
Packit Service 4684c1
            return 1;
Packit Service 4684c1
        }
Packit Service 4684c1
    }
Packit Service 4684c1
  return 0;
Packit Service 4684c1
}
Packit Service 4684c1
static char buf[10000];
Packit Service 4684c1
static long double zeroL = 0.0L;
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  int result = 0;
Packit Service 4684c1
  nocrash_init();
Packit Service 4684c1
  if (sprintf (buf, "%Lf", 1.0L / zeroL) < 0
Packit Service 4684c1
      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%Lf", -1.0L / zeroL) < 0
Packit Service 4684c1
      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%Lf", zeroL / zeroL) < 0
Packit Service 4684c1
      || !strisnan (buf, 0, strlen (buf)))
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%Le", 1.0L / zeroL) < 0
Packit Service 4684c1
      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%Le", -1.0L / zeroL) < 0
Packit Service 4684c1
      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%Le", zeroL / zeroL) < 0
Packit Service 4684c1
      || !strisnan (buf, 0, strlen (buf)))
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%Lg", 1.0L / zeroL) < 0
Packit Service 4684c1
      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%Lg", -1.0L / zeroL) < 0
Packit Service 4684c1
      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%Lg", zeroL / zeroL) < 0
Packit Service 4684c1
      || !strisnan (buf, 0, strlen (buf)))
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
Packit Service 4684c1
/* Representation of an 80-bit 'long double' as an initializer for a sequence
Packit Service 4684c1
   of 'unsigned int' words.  */
Packit Service 4684c1
# ifdef WORDS_BIGENDIAN
Packit Service 4684c1
#  define LDBL80_WORDS(exponent,manthi,mantlo) \
Packit Service 4684c1
     { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
Packit Service 4684c1
       ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16),   \
Packit Service 4684c1
       (unsigned int) (mantlo) << 16                                        \
Packit Service 4684c1
     }
Packit Service 4684c1
# else
Packit Service 4684c1
#  define LDBL80_WORDS(exponent,manthi,mantlo) \
Packit Service 4684c1
     { mantlo, manthi, exponent }
Packit Service 4684c1
# endif
Packit Service 4684c1
  { /* Quiet NaN.  */
Packit Service 4684c1
    static union { unsigned int word[4]; long double value; } x =
Packit Service 4684c1
      { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
Packit Service 4684c1
    if (sprintf (buf, "%Lf", x.value) < 0
Packit Service 4684c1
        || !strisnan (buf, 0, strlen (buf)))
Packit Service 4684c1
      result |= 2;
Packit Service 4684c1
    if (sprintf (buf, "%Le", x.value) < 0
Packit Service 4684c1
        || !strisnan (buf, 0, strlen (buf)))
Packit Service 4684c1
      result |= 2;
Packit Service 4684c1
    if (sprintf (buf, "%Lg", x.value) < 0
Packit Service 4684c1
        || !strisnan (buf, 0, strlen (buf)))
Packit Service 4684c1
      result |= 2;
Packit Service 4684c1
  }
Packit Service 4684c1
  {
Packit Service 4684c1
    /* Signalling NaN.  */
Packit Service 4684c1
    static union { unsigned int word[4]; long double value; } x =
Packit Service 4684c1
      { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
Packit Service 4684c1
    if (sprintf (buf, "%Lf", x.value) < 0
Packit Service 4684c1
        || !strisnan (buf, 0, strlen (buf)))
Packit Service 4684c1
      result |= 2;
Packit Service 4684c1
    if (sprintf (buf, "%Le", x.value) < 0
Packit Service 4684c1
        || !strisnan (buf, 0, strlen (buf)))
Packit Service 4684c1
      result |= 2;
Packit Service 4684c1
    if (sprintf (buf, "%Lg", x.value) < 0
Packit Service 4684c1
        || !strisnan (buf, 0, strlen (buf)))
Packit Service 4684c1
      result |= 2;
Packit Service 4684c1
  }
Packit Service 4684c1
  { /* Pseudo-NaN.  */
Packit Service 4684c1
    static union { unsigned int word[4]; long double value; } x =
Packit Service 4684c1
      { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
Packit Service 4684c1
    if (sprintf (buf, "%Lf", x.value) <= 0)
Packit Service 4684c1
      result |= 4;
Packit Service 4684c1
    if (sprintf (buf, "%Le", x.value) <= 0)
Packit Service 4684c1
      result |= 4;
Packit Service 4684c1
    if (sprintf (buf, "%Lg", x.value) <= 0)
Packit Service 4684c1
      result |= 4;
Packit Service 4684c1
  }
Packit Service 4684c1
  { /* Pseudo-Infinity.  */
Packit Service 4684c1
    static union { unsigned int word[4]; long double value; } x =
Packit Service 4684c1
      { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
Packit Service 4684c1
    if (sprintf (buf, "%Lf", x.value) <= 0)
Packit Service 4684c1
      result |= 8;
Packit Service 4684c1
    if (sprintf (buf, "%Le", x.value) <= 0)
Packit Service 4684c1
      result |= 8;
Packit Service 4684c1
    if (sprintf (buf, "%Lg", x.value) <= 0)
Packit Service 4684c1
      result |= 8;
Packit Service 4684c1
  }
Packit Service 4684c1
  { /* Pseudo-Zero.  */
Packit Service 4684c1
    static union { unsigned int word[4]; long double value; } x =
Packit Service 4684c1
      { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
Packit Service 4684c1
    if (sprintf (buf, "%Lf", x.value) <= 0)
Packit Service 4684c1
      result |= 16;
Packit Service 4684c1
    if (sprintf (buf, "%Le", x.value) <= 0)
Packit Service 4684c1
      result |= 16;
Packit Service 4684c1
    if (sprintf (buf, "%Lg", x.value) <= 0)
Packit Service 4684c1
      result |= 16;
Packit Service 4684c1
  }
Packit Service 4684c1
  { /* Unnormalized number.  */
Packit Service 4684c1
    static union { unsigned int word[4]; long double value; } x =
Packit Service 4684c1
      { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
Packit Service 4684c1
    if (sprintf (buf, "%Lf", x.value) <= 0)
Packit Service 4684c1
      result |= 32;
Packit Service 4684c1
    if (sprintf (buf, "%Le", x.value) <= 0)
Packit Service 4684c1
      result |= 32;
Packit Service 4684c1
    if (sprintf (buf, "%Lg", x.value) <= 0)
Packit Service 4684c1
      result |= 32;
Packit Service 4684c1
  }
Packit Service 4684c1
  { /* Pseudo-Denormal.  */
Packit Service 4684c1
    static union { unsigned int word[4]; long double value; } x =
Packit Service 4684c1
      { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
Packit Service 4684c1
    if (sprintf (buf, "%Lf", x.value) <= 0)
Packit Service 4684c1
      result |= 64;
Packit Service 4684c1
    if (sprintf (buf, "%Le", x.value) <= 0)
Packit Service 4684c1
      result |= 64;
Packit Service 4684c1
    if (sprintf (buf, "%Lg", x.value) <= 0)
Packit Service 4684c1
      result |= 64;
Packit Service 4684c1
  }
Packit Service 4684c1
#endif
Packit Service 4684c1
  return result;
Packit Service 4684c1
}]])],
Packit Service 4684c1
            [gl_cv_func_printf_infinite_long_double=yes],
Packit Service 4684c1
            [gl_cv_func_printf_infinite_long_double=no],
Packit Service 4684c1
            [case "$host_cpu" in
Packit Service 4684c1
                                     # Guess no on ia64, x86_64, i386.
Packit Service 4684c1
               ia64 | x86_64 | i*86) gl_cv_func_printf_infinite_long_double="guessing no";;
Packit Service 4684c1
               *)
Packit Service 4684c1
                 case "$host_os" in
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
                                         # Guess yes on glibc systems.
Packit Service 4684c1
                   *-gnu* | gnu*)        gl_cv_func_printf_infinite_long_double="guessing yes";;
Packit Service 4684c1
                                         # Guess yes on musl systems.
Packit Service 4684c1
                   *-musl*)              gl_cv_func_printf_infinite_long_double="guessing yes";;
Packit Service 4684c1
                                         # Guess yes on FreeBSD >= 6.
Packit Service 4684c1
                   freebsd[1-5].*)       gl_cv_func_printf_infinite_long_double="guessing no";;
Packit Service 4684c1
                   freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";;
Packit Service 4684c1
                                         # Guess yes on HP-UX >= 11.
Packit Service 4684c1
                   hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";;
Packit Service 4684c1
                   hpux*)                gl_cv_func_printf_infinite_long_double="guessing yes";;
Packit Service 4684c1
                                         # Guess no on Android.
Packit Service 4684c1
                   linux*-android*)      gl_cv_func_printf_infinite_long_double="guessing no";;
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
                                         # Guess yes on MSVC, no on mingw.
Packit Service 4684c1
                   mingw*)               AC_EGREP_CPP([Known], [
Packit Service 4684c1
#ifdef _MSC_VER
Packit Service 4684c1
 Known
Packit Service 4684c1
#endif
Packit Service 4684c1
                                           ],
Packit Service 4684c1
                                           [gl_cv_func_printf_infinite_long_double="guessing yes"],
Packit Service 4684c1
                                           [gl_cv_func_printf_infinite_long_double="guessing no"])
Packit Service 4684c1
                                         ;;
Packit Service 4684c1
                                         # If we don't know, obey --enable-cross-guesses.
Packit Service 4684c1
                   *)                    gl_cv_func_printf_infinite_long_double="$gl_cross_guess_normal";;
Packit Service 4684c1
                 esac
Packit Service 4684c1
                 ;;
Packit Service 4684c1
             esac
Packit Service 4684c1
            ])
Packit Service 4684c1
        ])
Packit Service 4684c1
      ;;
Packit Service 4684c1
    *)
Packit Service 4684c1
      gl_cv_func_printf_infinite_long_double="irrelevant"
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions supports the 'a' and 'A'
Packit Service 4684c1
dnl conversion specifier for hexadecimal output of floating-point numbers.
Packit Service 4684c1
dnl (ISO C99, POSIX:2001)
Packit Service 4684c1
dnl Result is gl_cv_func_printf_directive_a.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_DIRECTIVE_A],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf supports the 'a' and 'A' directives],
Packit Service 4684c1
    [gl_cv_func_printf_directive_a],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
static char buf[100];
Packit Service 4684c1
static double zero = 0.0;
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  int result = 0;
Packit Service 4684c1
  if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0
Packit Service 4684c1
      || (strcmp (buf, "0x1.922p+1 33") != 0
Packit Service 4684c1
          && strcmp (buf, "0x3.244p+0 33") != 0
Packit Service 4684c1
          && strcmp (buf, "0x6.488p-1 33") != 0
Packit Service 4684c1
          && strcmp (buf, "0xc.91p-2 33") != 0))
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0
Packit Service 4684c1
      || (strcmp (buf, "-0X1.922P+1 33") != 0
Packit Service 4684c1
          && strcmp (buf, "-0X3.244P+0 33") != 0
Packit Service 4684c1
          && strcmp (buf, "-0X6.488P-1 33") != 0
Packit Service 4684c1
          && strcmp (buf, "-0XC.91P-2 33") != 0))
Packit Service 4684c1
    result |= 2;
Packit Service 4684c1
  /* This catches a FreeBSD 6.1 bug: it doesn't round.  */
Packit Service 4684c1
  if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
Packit Service 4684c1
      || (strcmp (buf, "0x1.83p+0 33") != 0
Packit Service 4684c1
          && strcmp (buf, "0x3.05p-1 33") != 0
Packit Service 4684c1
          && strcmp (buf, "0x6.0ap-2 33") != 0
Packit Service 4684c1
          && strcmp (buf, "0xc.14p-3 33") != 0))
Packit Service 4684c1
    result |= 4;
Packit Service 4684c1
  /* This catches a Mac OS X 10.12.4 (Darwin 16.5) bug: it doesn't round.  */
Packit Service 4684c1
  if (sprintf (buf, "%.0a %d", 1.51, 33, 44, 55) < 0
Packit Service 4684c1
      || (strcmp (buf, "0x2p+0 33") != 0
Packit Service 4684c1
          && strcmp (buf, "0x3p-1 33") != 0
Packit Service 4684c1
          && strcmp (buf, "0x6p-2 33") != 0
Packit Service 4684c1
          && strcmp (buf, "0xcp-3 33") != 0))
Packit Service 4684c1
    result |= 4;
Packit Service 4684c1
  /* This catches a FreeBSD 6.1 bug.  See
Packit Service 4684c1
     <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html> */
Packit Service 4684c1
  if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0
Packit Service 4684c1
      || buf[0] == '0')
Packit Service 4684c1
    result |= 8;
Packit Service 4684c1
  /* This catches a Mac OS X 10.3.9 (Darwin 7.9) bug.  */
Packit Service 4684c1
  if (sprintf (buf, "%.1a", 1.999) < 0
Packit Service 4684c1
      || (strcmp (buf, "0x1.0p+1") != 0
Packit Service 4684c1
          && strcmp (buf, "0x2.0p+0") != 0
Packit Service 4684c1
          && strcmp (buf, "0x4.0p-1") != 0
Packit Service 4684c1
          && strcmp (buf, "0x8.0p-2") != 0))
Packit Service 4684c1
    result |= 16;
Packit Service 4684c1
  /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a
Packit Service 4684c1
     glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
Packit Service 4684c1
  if (sprintf (buf, "%.1La", 1.999L) < 0
Packit Service 4684c1
      || (strcmp (buf, "0x1.0p+1") != 0
Packit Service 4684c1
          && strcmp (buf, "0x2.0p+0") != 0
Packit Service 4684c1
          && strcmp (buf, "0x4.0p-1") != 0
Packit Service 4684c1
          && strcmp (buf, "0x8.0p-2") != 0))
Packit Service 4684c1
    result |= 32;
Packit Service 4684c1
  return result;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_printf_directive_a=yes],
Packit Service 4684c1
        [gl_cv_func_printf_directive_a=no],
Packit Service 4684c1
        [
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
                                 # Guess yes on glibc >= 2.5 systems.
Packit Service 4684c1
           *-gnu* | gnu*)
Packit Service 4684c1
             AC_EGREP_CPP([BZ2908], [
Packit Service 4684c1
               #include <features.h>
Packit Service 4684c1
               #ifdef __GNU_LIBRARY__
Packit Service 4684c1
                #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)) && !defined __UCLIBC__
Packit Service 4684c1
                 BZ2908
Packit Service 4684c1
                #endif
Packit Service 4684c1
               #endif
Packit Service 4684c1
               ],
Packit Service 4684c1
               [gl_cv_func_printf_directive_a="guessing yes"],
Packit Service 4684c1
               [gl_cv_func_printf_directive_a="guessing no"])
Packit Service 4684c1
             ;;
Packit Service 4684c1
                                 # Guess yes on musl systems.
Packit Service 4684c1
           *-musl*)              gl_cv_func_printf_directive_a="guessing yes";;
Packit Service 4684c1
                                 # Guess no on Android.
Packit Service 4684c1
           linux*-android*)      gl_cv_func_printf_directive_a="guessing no";;
Packit Service 4684c1
                                 # Guess no on native Windows.
Packit Service 4684c1
           mingw*)               gl_cv_func_printf_directive_a="guessing no";;
Packit Service 4684c1
                                 # If we don't know, obey --enable-cross-guesses.
Packit Service 4684c1
           *)                    gl_cv_func_printf_directive_a="$gl_cross_guess_normal";;
Packit Service 4684c1
         esac
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions supports the %F format
Packit Service 4684c1
dnl directive. (ISO C99, POSIX:2001)
Packit Service 4684c1
dnl Result is gl_cv_func_printf_directive_f.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_DIRECTIVE_F],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf supports the 'F' directive],
Packit Service 4684c1
    [gl_cv_func_printf_directive_f],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
static char buf[100];
Packit Service 4684c1
static double zero = 0.0;
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  int result = 0;
Packit Service 4684c1
  if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0
Packit Service 4684c1
      || strcmp (buf, "1234567.000000 33") != 0)
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%F", 1.0 / zero) < 0
Packit Service 4684c1
      || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
Packit Service 4684c1
    result |= 2;
Packit Service 4684c1
  /* This catches a Cygwin 1.5.x bug.  */
Packit Service 4684c1
  if (sprintf (buf, "%.F", 1234.0) < 0
Packit Service 4684c1
      || strcmp (buf, "1234") != 0)
Packit Service 4684c1
    result |= 4;
Packit Service 4684c1
  return result;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_printf_directive_f=yes],
Packit Service 4684c1
        [gl_cv_func_printf_directive_f=no],
Packit Service 4684c1
        [
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
                                 # Guess yes on glibc systems.
Packit Service 4684c1
           *-gnu* | gnu*)        gl_cv_func_printf_directive_f="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on musl systems.
Packit Service 4684c1
           *-musl*)              gl_cv_func_printf_directive_f="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on FreeBSD >= 6.
Packit Service 4684c1
           freebsd[1-5].*)       gl_cv_func_printf_directive_f="guessing no";;
Packit Service 4684c1
           freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Mac OS X >= 10.3.
Packit Service 4684c1
           darwin[1-6].*)        gl_cv_func_printf_directive_f="guessing no";;
Packit Service 4684c1
           darwin*)              gl_cv_func_printf_directive_f="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Solaris >= 2.10.
Packit Service 4684c1
           solaris2.[1-9][0-9]*) gl_cv_func_printf_directive_f="guessing yes";;
Packit Service 4684c1
           solaris*)             gl_cv_func_printf_directive_f="guessing no";;
Packit Service 4684c1
                                 # Guess no on Android.
Packit Service 4684c1
           linux*-android*)      gl_cv_func_printf_directive_f="guessing no";;
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
                                 # Guess yes on MSVC, no on mingw.
Packit Service 4684c1
           mingw*)               AC_EGREP_CPP([Known], [
Packit Service 4684c1
#ifdef _MSC_VER
Packit Service 4684c1
 Known
Packit Service 4684c1
#endif
Packit Service 4684c1
                                   ],
Packit Service 4684c1
                                   [gl_cv_func_printf_directive_f="guessing yes"],
Packit Service 4684c1
                                   [gl_cv_func_printf_directive_f="guessing no"])
Packit Service 4684c1
                                 ;;
Packit Service 4684c1
                                 # If we don't know, obey --enable-cross-guesses.
Packit Service 4684c1
           *)                    gl_cv_func_printf_directive_f="$gl_cross_guess_normal";;
Packit Service 4684c1
         esac
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions supports the %n format
Packit Service 4684c1
dnl directive. (ISO C99, POSIX:2001)
Packit Service 4684c1
dnl Result is gl_cv_func_printf_directive_n.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_DIRECTIVE_N],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf supports the 'n' directive],
Packit Service 4684c1
    [gl_cv_func_printf_directive_n],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <stdlib.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
#ifdef _MSC_VER
Packit Service 4684c1
/* See page about "Parameter Validation" on msdn.microsoft.com.  */
Packit Service 4684c1
static void cdecl
Packit Service 4684c1
invalid_parameter_handler (const wchar_t *expression,
Packit Service 4684c1
                           const wchar_t *function,
Packit Service 4684c1
                           const wchar_t *file, unsigned int line,
Packit Service 4684c1
                           uintptr_t dummy)
Packit Service 4684c1
{
Packit Service 4684c1
  exit (1);
Packit Service 4684c1
}
Packit Service 4684c1
#endif
Packit Service 4684c1
static char fmtstring[10];
Packit Service 4684c1
static char buf[100];
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  int count = -1;
Packit Service 4684c1
#ifdef _MSC_VER
Packit Service 4684c1
  _set_invalid_parameter_handler (invalid_parameter_handler);
Packit Service 4684c1
#endif
Packit Service 4684c1
  /* Copy the format string.  Some systems (glibc with _FORTIFY_SOURCE=2)
Packit Service 4684c1
     support %n in format strings in read-only memory but not in writable
Packit Service 4684c1
     memory.  */
Packit Service 4684c1
  strcpy (fmtstring, "%d %n");
Packit Service 4684c1
  if (sprintf (buf, fmtstring, 123, &count, 33, 44, 55) < 0
Packit Service 4684c1
      || strcmp (buf, "123 ") != 0
Packit Service 4684c1
      || count != 4)
Packit Service 4684c1
    return 1;
Packit Service 4684c1
  return 0;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_printf_directive_n=yes],
Packit Service 4684c1
        [gl_cv_func_printf_directive_n=no],
Packit Service 4684c1
        [case "$host_os" in
Packit Service 4684c1
                            # Guess no on glibc when _FORTIFY_SOURCE >= 2.
Packit Service 4684c1
           *-gnu* | gnu*)   AC_COMPILE_IFELSE(
Packit Service 4684c1
                              [AC_LANG_SOURCE(
Packit Service 4684c1
                                 [[#if _FORTIFY_SOURCE >= 2
Packit Service 4684c1
                                    error fail
Packit Service 4684c1
                                   #endif
Packit Service 4684c1
                                 ]])],
Packit Service 4684c1
                              [gl_cv_func_printf_directive_n="guessing yes"],
Packit Service 4684c1
                              [gl_cv_func_printf_directive_n="guessing no"])
Packit Service 4684c1
                            ;;
Packit Service 4684c1
                            # Guess no on Android.
Packit Service 4684c1
           linux*-android*) gl_cv_func_printf_directive_n="guessing no";;
Packit Service 4684c1
                            # Guess no on native Windows.
Packit Service 4684c1
           mingw*)          gl_cv_func_printf_directive_n="guessing no";;
Packit Service 4684c1
           *)               gl_cv_func_printf_directive_n="guessing yes";;
Packit Service 4684c1
         esac
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions supports the %ls format
Packit Service 4684c1
dnl directive and in particular, when a precision is specified, whether
Packit Service 4684c1
dnl the functions stop converting the wide string argument when the number
Packit Service 4684c1
dnl of bytes that have been produced by this conversion equals or exceeds
Packit Service 4684c1
dnl the precision.
Packit Service 4684c1
dnl Result is gl_cv_func_printf_directive_ls.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_DIRECTIVE_LS],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf supports the 'ls' directive],
Packit Service 4684c1
    [gl_cv_func_printf_directive_ls],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
Packit Service 4684c1
   <wchar.h>.
Packit Service 4684c1
   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
Packit Service 4684c1
   included before <wchar.h>.  */
Packit Service 4684c1
#include <stddef.h>
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <time.h>
Packit Service 4684c1
#include <wchar.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  int result = 0;
Packit Service 4684c1
  char buf[100];
Packit Service 4684c1
  /* Test whether %ls works at all.
Packit Service 4684c1
     This test fails on OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Haiku, but not on
Packit Service 4684c1
     Cygwin 1.5.  */
Packit Service 4684c1
  {
Packit Service 4684c1
    static const wchar_t wstring[] = { 'a', 'b', 'c', 0 };
Packit Service 4684c1
    buf[0] = '\0';
Packit Service 4684c1
    if (sprintf (buf, "%ls", wstring) < 0
Packit Service 4684c1
        || strcmp (buf, "abc") != 0)
Packit Service 4684c1
      result |= 1;
Packit Service 4684c1
  }
Packit Service 4684c1
  /* This test fails on IRIX 6.5, Solaris 2.6, Cygwin 1.5, Haiku (with an
Packit Service 4684c1
     assertion failure inside libc), but not on OpenBSD 4.0.  */
Packit Service 4684c1
  {
Packit Service 4684c1
    static const wchar_t wstring[] = { 'a', 0 };
Packit Service 4684c1
    buf[0] = '\0';
Packit Service 4684c1
    if (sprintf (buf, "%ls", wstring) < 0
Packit Service 4684c1
        || strcmp (buf, "a") != 0)
Packit Service 4684c1
      result |= 2;
Packit Service 4684c1
  }
Packit Service 4684c1
  /* Test whether precisions in %ls are supported as specified in ISO C 99
Packit Service 4684c1
     section 7.19.6.1:
Packit Service 4684c1
       "If a precision is specified, no more than that many bytes are written
Packit Service 4684c1
        (including shift sequences, if any), and the array shall contain a
Packit Service 4684c1
        null wide character if, to equal the multibyte character sequence
Packit Service 4684c1
        length given by the precision, the function would need to access a
Packit Service 4684c1
        wide character one past the end of the array."
Packit Service 4684c1
     This test fails on Solaris 10.  */
Packit Service 4684c1
  {
Packit Service 4684c1
    static const wchar_t wstring[] = { 'a', 'b', (wchar_t) 0xfdfdfdfd, 0 };
Packit Service 4684c1
    buf[0] = '\0';
Packit Service 4684c1
    if (sprintf (buf, "%.2ls", wstring) < 0
Packit Service 4684c1
        || strcmp (buf, "ab") != 0)
Packit Service 4684c1
      result |= 8;
Packit Service 4684c1
  }
Packit Service 4684c1
  return result;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_printf_directive_ls=yes],
Packit Service 4684c1
        [gl_cv_func_printf_directive_ls=no],
Packit Service 4684c1
        [
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
           openbsd*)        gl_cv_func_printf_directive_ls="guessing no";;
Packit Service 4684c1
           irix*)           gl_cv_func_printf_directive_ls="guessing no";;
Packit Service 4684c1
           solaris*)        gl_cv_func_printf_directive_ls="guessing no";;
Packit Service 4684c1
           cygwin*)         gl_cv_func_printf_directive_ls="guessing no";;
Packit Service 4684c1
           beos* | haiku*)  gl_cv_func_printf_directive_ls="guessing no";;
Packit Service 4684c1
                            # Guess no on Android.
Packit Service 4684c1
           linux*-android*) gl_cv_func_printf_directive_ls="guessing no";;
Packit Service 4684c1
                            # Guess yes on native Windows.
Packit Service 4684c1
           mingw*)          gl_cv_func_printf_directive_ls="guessing yes";;
Packit Service 4684c1
           *)               gl_cv_func_printf_directive_ls="guessing yes";;
Packit Service 4684c1
         esac
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions supports POSIX/XSI format
Packit Service 4684c1
dnl strings with positions. (POSIX:2001)
Packit Service 4684c1
dnl Result is gl_cv_func_printf_positions.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_POSITIONS],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf supports POSIX/XSI format strings with positions],
Packit Service 4684c1
    [gl_cv_func_printf_positions],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
/* The string "%2$d %1$d", with dollar characters protected from the shell's
Packit Service 4684c1
   dollar expansion (possibly an autoconf bug).  */
Packit Service 4684c1
static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
Packit Service 4684c1
static char buf[100];
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  sprintf (buf, format, 33, 55);
Packit Service 4684c1
  return (strcmp (buf, "55 33") != 0);
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_printf_positions=yes],
Packit Service 4684c1
        [gl_cv_func_printf_positions=no],
Packit Service 4684c1
        [
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
           netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*)
Packit Service 4684c1
                            gl_cv_func_printf_positions="guessing no";;
Packit Service 4684c1
           beos*)           gl_cv_func_printf_positions="guessing no";;
Packit Service 4684c1
                            # Guess yes on Android.
Packit Service 4684c1
           linux*-android*) gl_cv_func_printf_positions="guessing yes";;
Packit Service 4684c1
                            # Guess no on native Windows.
Packit Service 4684c1
           mingw* | pw*)    gl_cv_func_printf_positions="guessing no";;
Packit Service 4684c1
           *)               gl_cv_func_printf_positions="guessing yes";;
Packit Service 4684c1
         esac
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions supports POSIX/XSI format
Packit Service 4684c1
dnl strings with the ' flag for grouping of decimal digits. (POSIX:2001)
Packit Service 4684c1
dnl Result is gl_cv_func_printf_flag_grouping.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_FLAG_GROUPING],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf supports the grouping flag],
Packit Service 4684c1
    [gl_cv_func_printf_flag_grouping],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
static char buf[100];
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  if (sprintf (buf, "%'d %d", 1234567, 99) < 0
Packit Service 4684c1
      || buf[strlen (buf) - 1] != '9')
Packit Service 4684c1
    return 1;
Packit Service 4684c1
  return 0;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_printf_flag_grouping=yes],
Packit Service 4684c1
        [gl_cv_func_printf_flag_grouping=no],
Packit Service 4684c1
        [
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
           cygwin*)         gl_cv_func_printf_flag_grouping="guessing no";;
Packit Service 4684c1
           netbsd*)         gl_cv_func_printf_flag_grouping="guessing no";;
Packit Service 4684c1
                            # Guess no on Android.
Packit Service 4684c1
           linux*-android*) gl_cv_func_printf_flag_grouping="guessing no";;
Packit Service 4684c1
                            # Guess no on native Windows.
Packit Service 4684c1
           mingw* | pw*)    gl_cv_func_printf_flag_grouping="guessing no";;
Packit Service 4684c1
           *)               gl_cv_func_printf_flag_grouping="guessing yes";;
Packit Service 4684c1
         esac
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions supports the - flag correctly.
Packit Service 4684c1
dnl (ISO C99.) See
Packit Service 4684c1
dnl <https://lists.gnu.org/r/bug-coreutils/2008-02/msg00035.html>
Packit Service 4684c1
dnl Result is gl_cv_func_printf_flag_leftadjust.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_FLAG_LEFTADJUST],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf supports the left-adjust flag correctly],
Packit Service 4684c1
    [gl_cv_func_printf_flag_leftadjust],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
static char buf[100];
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  /* Check that a '-' flag is not annihilated by a negative width.  */
Packit Service 4684c1
  if (sprintf (buf, "a%-*sc", -3, "b") < 0
Packit Service 4684c1
      || strcmp (buf, "ab  c") != 0)
Packit Service 4684c1
    return 1;
Packit Service 4684c1
  return 0;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_printf_flag_leftadjust=yes],
Packit Service 4684c1
        [gl_cv_func_printf_flag_leftadjust=no],
Packit Service 4684c1
        [
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
                            # Guess yes on HP-UX 11.
Packit Service 4684c1
           hpux11*)         gl_cv_func_printf_flag_leftadjust="guessing yes";;
Packit Service 4684c1
                            # Guess no on HP-UX 10 and older.
Packit Service 4684c1
           hpux*)           gl_cv_func_printf_flag_leftadjust="guessing no";;
Packit Service 4684c1
                            # Guess yes on Android.
Packit Service 4684c1
           linux*-android*) gl_cv_func_printf_flag_leftadjust="guessing yes";;
Packit Service 4684c1
                            # Guess yes on native Windows.
Packit Service 4684c1
           mingw*)          gl_cv_func_printf_flag_leftadjust="guessing yes";;
Packit Service 4684c1
                            # Guess yes otherwise.
Packit Service 4684c1
           *)               gl_cv_func_printf_flag_leftadjust="guessing yes";;
Packit Service 4684c1
         esac
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions supports padding of non-finite
Packit Service 4684c1
dnl values with the 0 flag correctly. (ISO C99 + TC1 + TC2.) See
Packit Service 4684c1
dnl <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html>
Packit Service 4684c1
dnl Result is gl_cv_func_printf_flag_zero.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_FLAG_ZERO],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf supports the zero flag correctly],
Packit Service 4684c1
    [gl_cv_func_printf_flag_zero],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
static char buf[100];
Packit Service 4684c1
static double zero = 0.0;
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  if (sprintf (buf, "%010f", 1.0 / zero, 33, 44, 55) < 0
Packit Service 4684c1
      || (strcmp (buf, "       inf") != 0
Packit Service 4684c1
          && strcmp (buf, "  infinity") != 0))
Packit Service 4684c1
    return 1;
Packit Service 4684c1
  return 0;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_printf_flag_zero=yes],
Packit Service 4684c1
        [gl_cv_func_printf_flag_zero=no],
Packit Service 4684c1
        [
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
                            # Guess yes on glibc systems.
Packit Service 4684c1
           *-gnu* | gnu*)   gl_cv_func_printf_flag_zero="guessing yes";;
Packit Service 4684c1
                            # Guess yes on musl systems.
Packit Service 4684c1
           *-musl*)         gl_cv_func_printf_flag_zero="guessing yes";;
Packit Service 4684c1
                            # Guess yes on BeOS.
Packit Service 4684c1
           beos*)           gl_cv_func_printf_flag_zero="guessing yes";;
Packit Service 4684c1
                            # Guess no on Android.
Packit Service 4684c1
           linux*-android*) gl_cv_func_printf_flag_zero="guessing no";;
Packit Service 4684c1
                            # Guess no on native Windows.
Packit Service 4684c1
           mingw*)          gl_cv_func_printf_flag_zero="guessing no";;
Packit Service 4684c1
                            # If we don't know, obey --enable-cross-guesses.
Packit Service 4684c1
           *)               gl_cv_func_printf_flag_zero="$gl_cross_guess_normal";;
Packit Service 4684c1
         esac
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions supports large precisions.
Packit Service 4684c1
dnl On mingw, precisions larger than 512 are treated like 512, in integer,
Packit Service 4684c1
dnl floating-point or pointer output. On Solaris 10/x86, precisions larger
Packit Service 4684c1
dnl than 510 in floating-point output crash the program. On Solaris 10/SPARC,
Packit Service 4684c1
dnl precisions larger than 510 in floating-point output yield wrong results.
Packit Service 4684c1
dnl On AIX 7.1, precisions larger than 998 in floating-point output yield
Packit Service 4684c1
dnl wrong results. On BeOS, precisions larger than 1044 crash the program.
Packit Service 4684c1
dnl Result is gl_cv_func_printf_precision.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_PRECISION],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf supports large precisions],
Packit Service 4684c1
    [gl_cv_func_printf_precision],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
static char buf[5000];
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  int result = 0;
Packit Service 4684c1
#ifdef __BEOS__
Packit Service 4684c1
  /* On BeOS, this would crash and show a dialog box.  Avoid the crash.  */
Packit Service 4684c1
  return 1;
Packit Service 4684c1
#endif
Packit Service 4684c1
  if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3)
Packit Service 4684c1
    result |= 1;
Packit Service 4684c1
  if (sprintf (buf, "%.4000f %d", 1.0, 33, 44) < 4000 + 5)
Packit Service 4684c1
    result |= 2;
Packit Service 4684c1
  if (sprintf (buf, "%.511f %d", 1.0, 33, 44) < 511 + 5
Packit Service 4684c1
      || buf[0] != '1')
Packit Service 4684c1
    result |= 4;
Packit Service 4684c1
  if (sprintf (buf, "%.999f %d", 1.0, 33, 44) < 999 + 5
Packit Service 4684c1
      || buf[0] != '1')
Packit Service 4684c1
    result |= 4;
Packit Service 4684c1
  return result;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_printf_precision=yes],
Packit Service 4684c1
        [gl_cv_func_printf_precision=no],
Packit Service 4684c1
        [
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
           # Guess no only on Solaris, native Windows, and BeOS systems.
Packit Service 4684c1
           solaris*)        gl_cv_func_printf_precision="guessing no" ;;
Packit Service 4684c1
           mingw* | pw*)    gl_cv_func_printf_precision="guessing no" ;;
Packit Service 4684c1
           beos*)           gl_cv_func_printf_precision="guessing no" ;;
Packit Service 4684c1
                            # Guess yes on Android.
Packit Service 4684c1
           linux*-android*) gl_cv_func_printf_precision="guessing yes" ;;
Packit Service 4684c1
           *)               gl_cv_func_printf_precision="guessing yes" ;;
Packit Service 4684c1
         esac
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the *printf family of functions recovers gracefully in case
Packit Service 4684c1
dnl of an out-of-memory condition, or whether it crashes the entire program.
Packit Service 4684c1
dnl Result is gl_cv_func_printf_enomem.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_PRINTF_ENOMEM],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([gl_MULTIARCH])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether printf survives out-of-memory conditions],
Packit Service 4684c1
    [gl_cv_func_printf_enomem],
Packit Service 4684c1
    [
Packit Service 4684c1
      gl_cv_func_printf_enomem="guessing no"
Packit Service 4684c1
      if test "$cross_compiling" = no; then
Packit Service 4684c1
        if test $APPLE_UNIVERSAL_BUILD = 0; then
Packit Service 4684c1
          AC_LANG_CONFTEST([AC_LANG_SOURCE([
Packit Service 4684c1
]GL_NOCRASH[
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <sys/types.h>
Packit Service 4684c1
#include <sys/time.h>
Packit Service 4684c1
#include <sys/resource.h>
Packit Service 4684c1
#include <errno.h>
Packit Service 4684c1
int main()
Packit Service 4684c1
{
Packit Service 4684c1
  struct rlimit limit;
Packit Service 4684c1
  int ret;
Packit Service 4684c1
  nocrash_init ();
Packit Service 4684c1
  /* Some printf implementations allocate temporary space with malloc.  */
Packit Service 4684c1
  /* On BSD systems, malloc() is limited by RLIMIT_DATA.  */
Packit Service 4684c1
#ifdef RLIMIT_DATA
Packit Service 4684c1
  if (getrlimit (RLIMIT_DATA, &limit) < 0)
Packit Service 4684c1
    return 77;
Packit Service 4684c1
  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
Packit Service 4684c1
    limit.rlim_max = 5000000;
Packit Service 4684c1
  limit.rlim_cur = limit.rlim_max;
Packit Service 4684c1
  if (setrlimit (RLIMIT_DATA, &limit) < 0)
Packit Service 4684c1
    return 77;
Packit Service 4684c1
#endif
Packit Service 4684c1
  /* On Linux systems, malloc() is limited by RLIMIT_AS.  */
Packit Service 4684c1
#ifdef RLIMIT_AS
Packit Service 4684c1
  if (getrlimit (RLIMIT_AS, &limit) < 0)
Packit Service 4684c1
    return 77;
Packit Service 4684c1
  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
Packit Service 4684c1
    limit.rlim_max = 5000000;
Packit Service 4684c1
  limit.rlim_cur = limit.rlim_max;
Packit Service 4684c1
  if (setrlimit (RLIMIT_AS, &limit) < 0)
Packit Service 4684c1
    return 77;
Packit Service 4684c1
#endif
Packit Service 4684c1
  /* Some printf implementations allocate temporary space on the stack.  */
Packit Service 4684c1
#ifdef RLIMIT_STACK
Packit Service 4684c1
  if (getrlimit (RLIMIT_STACK, &limit) < 0)
Packit Service 4684c1
    return 77;
Packit Service 4684c1
  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
Packit Service 4684c1
    limit.rlim_max = 5000000;
Packit Service 4684c1
  limit.rlim_cur = limit.rlim_max;
Packit Service 4684c1
  if (setrlimit (RLIMIT_STACK, &limit) < 0)
Packit Service 4684c1
    return 77;
Packit Service 4684c1
#endif
Packit Service 4684c1
  ret = printf ("%.5000000f", 1.0);
Packit Service 4684c1
  return !(ret == 5000002 || (ret < 0 && errno == ENOMEM));
Packit Service 4684c1
}
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
          ])])
Packit Service 4684c1
          if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
Packit Service 4684c1
            (./conftest 2>&AS_MESSAGE_LOG_FD
Packit Service 4684c1
             result=$?
Packit Service 4684c1
             _AS_ECHO_LOG([\$? = $result])
Packit Service 4684c1
             if test $result != 0 && test $result != 77; then result=1; fi
Packit Service 4684c1
             exit $result
Packit Service 4684c1
            ) >/dev/null 2>/dev/null
Packit Service 4684c1
            case $? in
Packit Service 4684c1
              0) gl_cv_func_printf_enomem="yes" ;;
Packit Service 4684c1
              77) gl_cv_func_printf_enomem="guessing no" ;;
Packit Service 4684c1
              *) gl_cv_func_printf_enomem="no" ;;
Packit Service 4684c1
            esac
Packit Service 4684c1
          else
Packit Service 4684c1
            gl_cv_func_printf_enomem="guessing no"
Packit Service 4684c1
          fi
Packit Service 4684c1
          rm -fr conftest*
Packit Service 4684c1
        else
Packit Service 4684c1
          dnl A universal build on Apple Mac OS X platforms.
Packit Service 4684c1
          dnl The result would be 'no' in 32-bit mode and 'yes' in 64-bit mode.
Packit Service 4684c1
          dnl But we need a configuration result that is valid in both modes.
Packit Service 4684c1
          gl_cv_func_printf_enomem="guessing no"
Packit Service 4684c1
        fi
Packit Service 4684c1
      fi
Packit Service 4684c1
      if test "$gl_cv_func_printf_enomem" = "guessing no"; then
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
        case "$host_os" in
Packit Service 4684c1
                           # Guess yes on glibc systems.
Packit Service 4684c1
          *-gnu* | gnu*)   gl_cv_func_printf_enomem="guessing yes";;
Packit Service 4684c1
                           # Guess yes on Solaris.
Packit Service 4684c1
          solaris*)        gl_cv_func_printf_enomem="guessing yes";;
Packit Service 4684c1
                           # Guess yes on AIX.
Packit Service 4684c1
          aix*)            gl_cv_func_printf_enomem="guessing yes";;
Packit Service 4684c1
                           # Guess yes on HP-UX/hppa.
Packit Service 4684c1
          hpux*)           case "$host_cpu" in
Packit Service 4684c1
                             hppa*) gl_cv_func_printf_enomem="guessing yes";;
Packit Service 4684c1
                             *)     gl_cv_func_printf_enomem="guessing no";;
Packit Service 4684c1
                           esac
Packit Service 4684c1
                           ;;
Packit Service 4684c1
                           # Guess yes on IRIX.
Packit Service 4684c1
          irix*)           gl_cv_func_printf_enomem="guessing yes";;
Packit Service 4684c1
                           # Guess yes on OSF/1.
Packit Service 4684c1
          osf*)            gl_cv_func_printf_enomem="guessing yes";;
Packit Service 4684c1
                           # Guess yes on BeOS.
Packit Service 4684c1
          beos*)           gl_cv_func_printf_enomem="guessing yes";;
Packit Service 4684c1
                           # Guess yes on Haiku.
Packit Service 4684c1
          haiku*)          gl_cv_func_printf_enomem="guessing yes";;
Packit Service 4684c1
                           # Guess no on Android.
Packit Service 4684c1
          linux*-android*) gl_cv_func_printf_enomem="guessing no";;
Packit Service 4684c1
                           # If we don't know, obey --enable-cross-guesses.
Packit Service 4684c1
          *)               gl_cv_func_printf_enomem="$gl_cross_guess_normal";;
Packit Service 4684c1
        esac
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
      fi
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the snprintf function exists. (ISO C99, POSIX:2001)
Packit Service 4684c1
dnl Result is ac_cv_func_snprintf.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_SNPRINTF_PRESENCE],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_CHECK_FUNCS_ONCE([snprintf])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the string produced by the snprintf function is always NUL
Packit Service 4684c1
dnl terminated. (ISO C99, POSIX:2001)
Packit Service 4684c1
dnl Result is gl_cv_func_snprintf_truncation_c99.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_SNPRINTF_TRUNCATION_C99],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_REQUIRE([gl_SNPRINTF_PRESENCE])
Packit Service 4684c1
  AC_CACHE_CHECK([whether snprintf truncates the result as in C99],
Packit Service 4684c1
    [gl_cv_func_snprintf_truncation_c99],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
#if HAVE_SNPRINTF
Packit Service 4684c1
# define my_snprintf snprintf
Packit Service 4684c1
#else
Packit Service 4684c1
# include <stdarg.h>
Packit Service 4684c1
static int my_snprintf (char *buf, int size, const char *format, ...)
Packit Service 4684c1
{
Packit Service 4684c1
  va_list args;
Packit Service 4684c1
  int ret;
Packit Service 4684c1
  va_start (args, format);
Packit Service 4684c1
  ret = vsnprintf (buf, size, format, args);
Packit Service 4684c1
  va_end (args);
Packit Service 4684c1
  return ret;
Packit Service 4684c1
}
Packit Service 4684c1
#endif
Packit Service 4684c1
static char buf[100];
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  strcpy (buf, "ABCDEF");
Packit Service 4684c1
  my_snprintf (buf, 3, "%d %d", 4567, 89);
Packit Service 4684c1
  if (memcmp (buf, "45\0DEF", 6) != 0)
Packit Service 4684c1
    return 1;
Packit Service 4684c1
  return 0;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_snprintf_truncation_c99=yes],
Packit Service 4684c1
        [gl_cv_func_snprintf_truncation_c99=no],
Packit Service 4684c1
        [
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
                                 # Guess yes on glibc systems.
Packit Service 4684c1
           *-gnu* | gnu*)        gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on musl systems.
Packit Service 4684c1
           *-musl*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on FreeBSD >= 5.
Packit Service 4684c1
           freebsd[1-4].*)       gl_cv_func_snprintf_truncation_c99="guessing no";;
Packit Service 4684c1
           freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Mac OS X >= 10.3.
Packit Service 4684c1
           darwin[1-6].*)        gl_cv_func_snprintf_truncation_c99="guessing no";;
Packit Service 4684c1
           darwin*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on OpenBSD >= 3.9.
Packit Service 4684c1
           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
Packit Service 4684c1
                                 gl_cv_func_snprintf_truncation_c99="guessing no";;
Packit Service 4684c1
           openbsd*)             gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Solaris >= 2.6.
Packit Service 4684c1
           solaris2.[0-5] | solaris2.[0-5].*)
Packit Service 4684c1
                                 gl_cv_func_snprintf_truncation_c99="guessing no";;
Packit Service 4684c1
           solaris*)             gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on AIX >= 4.
Packit Service 4684c1
           aix[1-3]*)            gl_cv_func_snprintf_truncation_c99="guessing no";;
Packit Service 4684c1
           aix*)                 gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on HP-UX >= 11.
Packit Service 4684c1
           hpux[7-9]* | hpux10*) gl_cv_func_snprintf_truncation_c99="guessing no";;
Packit Service 4684c1
           hpux*)                gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on IRIX >= 6.5.
Packit Service 4684c1
           irix6.5)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on OSF/1 >= 5.
Packit Service 4684c1
           osf[3-4]*)            gl_cv_func_snprintf_truncation_c99="guessing no";;
Packit Service 4684c1
           osf*)                 gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on NetBSD >= 3.
Packit Service 4684c1
           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
Packit Service 4684c1
                                 gl_cv_func_snprintf_truncation_c99="guessing no";;
Packit Service 4684c1
           netbsd*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on BeOS.
Packit Service 4684c1
           beos*)                gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Android.
Packit Service 4684c1
           linux*-android*)      gl_cv_func_snprintf_truncation_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess no on native Windows.
Packit Service 4684c1
           mingw*)               gl_cv_func_snprintf_truncation_c99="guessing no";;
Packit Service 4684c1
                                 # If we don't know, obey --enable-cross-guesses.
Packit Service 4684c1
           *)                    gl_cv_func_snprintf_truncation_c99="$gl_cross_guess_normal";;
Packit Service 4684c1
         esac
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the return value of the snprintf function is the number
Packit Service 4684c1
dnl of bytes (excluding the terminating NUL) that would have been produced
Packit Service 4684c1
dnl if the buffer had been large enough. (ISO C99, POSIX:2001)
Packit Service 4684c1
dnl For example, this test program fails on IRIX 6.5:
Packit Service 4684c1
dnl     ---------------------------------------------------------------------
Packit Service 4684c1
dnl     #include <stdio.h>
Packit Service 4684c1
dnl     int main()
Packit Service 4684c1
dnl     {
Packit Service 4684c1
dnl       static char buf[8];
Packit Service 4684c1
dnl       int retval = snprintf (buf, 3, "%d", 12345);
Packit Service 4684c1
dnl       return retval >= 0 && retval < 3;
Packit Service 4684c1
dnl     }
Packit Service 4684c1
dnl     ---------------------------------------------------------------------
Packit Service 4684c1
dnl Result is gl_cv_func_snprintf_retval_c99.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN_ONCE([gl_SNPRINTF_RETVAL_C99],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_REQUIRE([gl_SNPRINTF_PRESENCE])
Packit Service 4684c1
  AC_CACHE_CHECK([whether snprintf returns a byte count as in C99],
Packit Service 4684c1
    [gl_cv_func_snprintf_retval_c99],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
#if HAVE_SNPRINTF
Packit Service 4684c1
# define my_snprintf snprintf
Packit Service 4684c1
#else
Packit Service 4684c1
# include <stdarg.h>
Packit Service 4684c1
static int my_snprintf (char *buf, int size, const char *format, ...)
Packit Service 4684c1
{
Packit Service 4684c1
  va_list args;
Packit Service 4684c1
  int ret;
Packit Service 4684c1
  va_start (args, format);
Packit Service 4684c1
  ret = vsnprintf (buf, size, format, args);
Packit Service 4684c1
  va_end (args);
Packit Service 4684c1
  return ret;
Packit Service 4684c1
}
Packit Service 4684c1
#endif
Packit Service 4684c1
static char buf[100];
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  strcpy (buf, "ABCDEF");
Packit Service 4684c1
  if (my_snprintf (buf, 3, "%d %d", 4567, 89) != 7)
Packit Service 4684c1
    return 1;
Packit Service 4684c1
  if (my_snprintf (buf, 0, "%d %d", 4567, 89) != 7)
Packit Service 4684c1
    return 2;
Packit Service 4684c1
  if (my_snprintf (NULL, 0, "%d %d", 4567, 89) != 7)
Packit Service 4684c1
    return 3;
Packit Service 4684c1
  return 0;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_snprintf_retval_c99=yes],
Packit Service 4684c1
        [gl_cv_func_snprintf_retval_c99=no],
Packit Service 4684c1
        [case "$host_os" in
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
                                 # Guess yes on glibc systems.
Packit Service 4684c1
           *-gnu* | gnu*)        gl_cv_func_snprintf_retval_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on musl systems.
Packit Service 4684c1
           *-musl*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on FreeBSD >= 5.
Packit Service 4684c1
           freebsd[1-4].*)       gl_cv_func_snprintf_retval_c99="guessing no";;
Packit Service 4684c1
           freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Mac OS X >= 10.3.
Packit Service 4684c1
           darwin[1-6].*)        gl_cv_func_snprintf_retval_c99="guessing no";;
Packit Service 4684c1
           darwin*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on OpenBSD >= 3.9.
Packit Service 4684c1
           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
Packit Service 4684c1
                                 gl_cv_func_snprintf_retval_c99="guessing no";;
Packit Service 4684c1
           openbsd*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Solaris >= 2.10.
Packit Service 4684c1
           solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";;
Packit Service 4684c1
           solaris*)             gl_cv_func_printf_sizes_c99="guessing no";;
Packit Service 4684c1
                                 # Guess yes on AIX >= 4.
Packit Service 4684c1
           aix[1-3]*)            gl_cv_func_snprintf_retval_c99="guessing no";;
Packit Service 4684c1
           aix*)                 gl_cv_func_snprintf_retval_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on NetBSD >= 3.
Packit Service 4684c1
           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
Packit Service 4684c1
                                 gl_cv_func_snprintf_retval_c99="guessing no";;
Packit Service 4684c1
           netbsd*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on BeOS.
Packit Service 4684c1
           beos*)                gl_cv_func_snprintf_retval_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Android.
Packit Service 4684c1
           linux*-android*)      gl_cv_func_snprintf_retval_c99="guessing yes";;
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
                                 # Guess yes on MSVC, no on mingw.
Packit Service 4684c1
           mingw*)               AC_EGREP_CPP([Known], [
Packit Service 4684c1
#ifdef _MSC_VER
Packit Service 4684c1
 Known
Packit Service 4684c1
#endif
Packit Service 4684c1
                                   ],
Packit Service 4684c1
                                   [gl_cv_func_snprintf_retval_c99="guessing yes"],
Packit Service 4684c1
                                   [gl_cv_func_snprintf_retval_c99="guessing no"])
Packit Service 4684c1
                                 ;;
Packit Service 4684c1
                                 # If we don't know, obey --enable-cross-guesses.
Packit Service 4684c1
           *)                    gl_cv_func_snprintf_retval_c99="$gl_cross_guess_normal";;
Packit Service 4684c1
         esac
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the snprintf function supports the %n format directive
Packit Service 4684c1
dnl also in truncated portions of the format string. (ISO C99, POSIX:2001)
Packit Service 4684c1
dnl Result is gl_cv_func_snprintf_directive_n.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_REQUIRE([gl_SNPRINTF_PRESENCE])
Packit Service 4684c1
  AC_CACHE_CHECK([whether snprintf fully supports the 'n' directive],
Packit Service 4684c1
    [gl_cv_func_snprintf_directive_n],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#include <string.h>
Packit Service 4684c1
#if HAVE_SNPRINTF
Packit Service 4684c1
# define my_snprintf snprintf
Packit Service 4684c1
#else
Packit Service 4684c1
# include <stdarg.h>
Packit Service 4684c1
static int my_snprintf (char *buf, int size, const char *format, ...)
Packit Service 4684c1
{
Packit Service 4684c1
  va_list args;
Packit Service 4684c1
  int ret;
Packit Service 4684c1
  va_start (args, format);
Packit Service 4684c1
  ret = vsnprintf (buf, size, format, args);
Packit Service 4684c1
  va_end (args);
Packit Service 4684c1
  return ret;
Packit Service 4684c1
}
Packit Service 4684c1
#endif
Packit Service 4684c1
static char fmtstring[10];
Packit Service 4684c1
static char buf[100];
Packit Service 4684c1
int main ()
Packit Service 4684c1
{
Packit Service 4684c1
  int count = -1;
Packit Service 4684c1
  /* Copy the format string.  Some systems (glibc with _FORTIFY_SOURCE=2)
Packit Service 4684c1
     support %n in format strings in read-only memory but not in writable
Packit Service 4684c1
     memory.  */
Packit Service 4684c1
  strcpy (fmtstring, "%d %n");
Packit Service 4684c1
  my_snprintf (buf, 4, fmtstring, 12345, &count, 33, 44, 55);
Packit Service 4684c1
  if (count != 6)
Packit Service 4684c1
    return 1;
Packit Service 4684c1
  return 0;
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_snprintf_directive_n=yes],
Packit Service 4684c1
        [gl_cv_func_snprintf_directive_n=no],
Packit Service 4684c1
        [
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
                                 # Guess no on glibc when _FORTIFY_SOURCE >= 2.
Packit Service 4684c1
           *-gnu* | gnu*)        AC_COMPILE_IFELSE(
Packit Service 4684c1
                                   [AC_LANG_SOURCE(
Packit Service 4684c1
                                      [[#if _FORTIFY_SOURCE >= 2
Packit Service 4684c1
                                         error fail
Packit Service 4684c1
                                        #endif
Packit Service 4684c1
                                      ]])],
Packit Service 4684c1
                                   [gl_cv_func_snprintf_directive_n="guessing yes"],
Packit Service 4684c1
                                   [gl_cv_func_snprintf_directive_n="guessing no"])
Packit Service 4684c1
                                 ;;
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
                                 # Guess yes on musl systems.
Packit Service 4684c1
           *-musl*)              gl_cv_func_snprintf_directive_n="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on FreeBSD >= 5.
Packit Service 4684c1
           freebsd[1-4].*)       gl_cv_func_snprintf_directive_n="guessing no";;
Packit Service 4684c1
           freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Mac OS X >= 10.3.
Packit Service 4684c1
           darwin[1-6].*)        gl_cv_func_snprintf_directive_n="guessing no";;
Packit Service 4684c1
           darwin*)              gl_cv_func_snprintf_directive_n="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Solaris >= 2.6.
Packit Service 4684c1
           solaris2.[0-5] | solaris2.[0-5].*)
Packit Service 4684c1
                                 gl_cv_func_snprintf_directive_n="guessing no";;
Packit Service 4684c1
           solaris*)             gl_cv_func_snprintf_directive_n="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on AIX >= 4.
Packit Service 4684c1
           aix[1-3]*)            gl_cv_func_snprintf_directive_n="guessing no";;
Packit Service 4684c1
           aix*)                 gl_cv_func_snprintf_directive_n="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on IRIX >= 6.5.
Packit Service 4684c1
           irix6.5)              gl_cv_func_snprintf_directive_n="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on OSF/1 >= 5.
Packit Service 4684c1
           osf[3-4]*)            gl_cv_func_snprintf_directive_n="guessing no";;
Packit Service 4684c1
           osf*)                 gl_cv_func_snprintf_directive_n="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on NetBSD >= 3.
Packit Service 4684c1
           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
Packit Service 4684c1
                                 gl_cv_func_snprintf_directive_n="guessing no";;
Packit Service 4684c1
           netbsd*)              gl_cv_func_snprintf_directive_n="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on BeOS.
Packit Service 4684c1
           beos*)                gl_cv_func_snprintf_directive_n="guessing yes";;
Packit Service 4684c1
                                 # Guess no on Android.
Packit Service 4684c1
           linux*-android*)      gl_cv_func_snprintf_directive_n="guessing no";;
Packit Service 4684c1
                                 # Guess no on native Windows.
Packit Service 4684c1
           mingw*)               gl_cv_func_snprintf_directive_n="guessing no";;
Packit Service 4684c1
                                 # If we don't know, obey --enable-cross-guesses.
Packit Service 4684c1
           *)                    gl_cv_func_snprintf_directive_n="$gl_cross_guess_normal";;
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
         esac
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the snprintf function, when passed a size = 1, writes any
Packit Service 4684c1
dnl output without bounds in this case, behaving like sprintf. This is the
Packit Service 4684c1
dnl case on Linux libc5.
Packit Service 4684c1
dnl Result is gl_cv_func_snprintf_size1.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_SNPRINTF_SIZE1],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_REQUIRE([gl_SNPRINTF_PRESENCE])
Packit Service 4684c1
  AC_CACHE_CHECK([whether snprintf respects a size of 1],
Packit Service 4684c1
    [gl_cv_func_snprintf_size1],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
#if HAVE_SNPRINTF
Packit Service 4684c1
# define my_snprintf snprintf
Packit Service 4684c1
#else
Packit Service 4684c1
# include <stdarg.h>
Packit Service 4684c1
static int my_snprintf (char *buf, int size, const char *format, ...)
Packit Service 4684c1
{
Packit Service 4684c1
  va_list args;
Packit Service 4684c1
  int ret;
Packit Service 4684c1
  va_start (args, format);
Packit Service 4684c1
  ret = vsnprintf (buf, size, format, args);
Packit Service 4684c1
  va_end (args);
Packit Service 4684c1
  return ret;
Packit Service 4684c1
}
Packit Service 4684c1
#endif
Packit Service 4684c1
int main()
Packit Service 4684c1
{
Packit Service 4684c1
  static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
Packit Service 4684c1
  my_snprintf (buf, 1, "%d", 12345);
Packit Service 4684c1
  return buf[1] != 'E';
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_snprintf_size1=yes],
Packit Service 4684c1
        [gl_cv_func_snprintf_size1=no],
Packit Service 4684c1
        [case "$host_os" in
Packit Service 4684c1
                            # Guess yes on Android.
Packit Service 4684c1
           linux*-android*) gl_cv_func_snprintf_size1="guessing yes" ;;
Packit Service 4684c1
                            # Guess yes on native Windows.
Packit Service 4684c1
           mingw*)          gl_cv_func_snprintf_size1="guessing yes" ;;
Packit Service 4684c1
           *)               gl_cv_func_snprintf_size1="guessing yes" ;;
Packit Service 4684c1
         esac
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl Test whether the vsnprintf function, when passed a zero size, produces no
Packit Service 4684c1
dnl output. (ISO C99, POSIX:2001)
Packit Service 4684c1
dnl For example, snprintf nevertheless writes a NUL byte in this case
Packit Service 4684c1
dnl on OSF/1 5.1:
Packit Service 4684c1
dnl     ---------------------------------------------------------------------
Packit Service 4684c1
dnl     #include <stdio.h>
Packit Service 4684c1
dnl     int main()
Packit Service 4684c1
dnl     {
Packit Service 4684c1
dnl       static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
Packit Service 4684c1
dnl       snprintf (buf, 0, "%d", 12345);
Packit Service 4684c1
dnl       return buf[0] != 'D';
Packit Service 4684c1
dnl     }
Packit Service 4684c1
dnl     ---------------------------------------------------------------------
Packit Service 4684c1
dnl And vsnprintf writes any output without bounds in this case, behaving like
Packit Service 4684c1
dnl vsprintf, on HP-UX 11 and OSF/1 5.1:
Packit Service 4684c1
dnl     ---------------------------------------------------------------------
Packit Service 4684c1
dnl     #include <stdarg.h>
Packit Service 4684c1
dnl     #include <stdio.h>
Packit Service 4684c1
dnl     static int my_snprintf (char *buf, int size, const char *format, ...)
Packit Service 4684c1
dnl     {
Packit Service 4684c1
dnl       va_list args;
Packit Service 4684c1
dnl       int ret;
Packit Service 4684c1
dnl       va_start (args, format);
Packit Service 4684c1
dnl       ret = vsnprintf (buf, size, format, args);
Packit Service 4684c1
dnl       va_end (args);
Packit Service 4684c1
dnl       return ret;
Packit Service 4684c1
dnl     }
Packit Service 4684c1
dnl     int main()
Packit Service 4684c1
dnl     {
Packit Service 4684c1
dnl       static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
Packit Service 4684c1
dnl       my_snprintf (buf, 0, "%d", 12345);
Packit Service 4684c1
dnl       return buf[0] != 'D';
Packit Service 4684c1
dnl     }
Packit Service 4684c1
dnl     ---------------------------------------------------------------------
Packit Service 4684c1
dnl Result is gl_cv_func_vsnprintf_zerosize_c99.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_VSNPRINTF_ZEROSIZE_C99],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_PROG_CC])
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether vsnprintf respects a zero size as in C99],
Packit Service 4684c1
    [gl_cv_func_vsnprintf_zerosize_c99],
Packit Service 4684c1
    [
Packit Service 4684c1
      AC_RUN_IFELSE(
Packit Service 4684c1
        [AC_LANG_SOURCE([[
Packit Service 4684c1
#include <stdarg.h>
Packit Service 4684c1
#include <stdio.h>
Packit Service 4684c1
static int my_snprintf (char *buf, int size, const char *format, ...)
Packit Service 4684c1
{
Packit Service 4684c1
  va_list args;
Packit Service 4684c1
  int ret;
Packit Service 4684c1
  va_start (args, format);
Packit Service 4684c1
  ret = vsnprintf (buf, size, format, args);
Packit Service 4684c1
  va_end (args);
Packit Service 4684c1
  return ret;
Packit Service 4684c1
}
Packit Service 4684c1
int main()
Packit Service 4684c1
{
Packit Service 4684c1
  static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
Packit Service 4684c1
  my_snprintf (buf, 0, "%d", 12345);
Packit Service 4684c1
  return buf[0] != 'D';
Packit Service 4684c1
}]])],
Packit Service 4684c1
        [gl_cv_func_vsnprintf_zerosize_c99=yes],
Packit Service 4684c1
        [gl_cv_func_vsnprintf_zerosize_c99=no],
Packit Service 4684c1
        [
Packit Service 4684c1
changequote(,)dnl
Packit Service 4684c1
         case "$host_os" in
Packit Service 4684c1
                                 # Guess yes on glibc systems.
Packit Service 4684c1
           *-gnu* | gnu*)        gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on musl systems.
Packit Service 4684c1
           *-musl*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on FreeBSD >= 5.
Packit Service 4684c1
           freebsd[1-4].*)       gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
Packit Service 4684c1
           freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Mac OS X >= 10.3.
Packit Service 4684c1
           darwin[1-6].*)        gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
Packit Service 4684c1
           darwin*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Cygwin.
Packit Service 4684c1
           cygwin*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Solaris >= 2.6.
Packit Service 4684c1
           solaris2.[0-5] | solaris2.[0-5].*)
Packit Service 4684c1
                                 gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
Packit Service 4684c1
           solaris*)             gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on AIX >= 4.
Packit Service 4684c1
           aix[1-3]*)            gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
Packit Service 4684c1
           aix*)                 gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on IRIX >= 6.5.
Packit Service 4684c1
           irix6.5)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on NetBSD >= 3.
Packit Service 4684c1
           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
Packit Service 4684c1
                                 gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
Packit Service 4684c1
           netbsd*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on BeOS.
Packit Service 4684c1
           beos*)                gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on Android.
Packit Service 4684c1
           linux*-android*)      gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
Packit Service 4684c1
                                 # Guess yes on native Windows.
Packit Service 4684c1
           mingw* | pw*)         gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
Packit Service 4684c1
                                 # If we don't know, obey --enable-cross-guesses.
Packit Service 4684c1
           *)                    gl_cv_func_vsnprintf_zerosize_c99="$gl_cross_guess_normal";;
Packit Service 4684c1
         esac
Packit Service 4684c1
changequote([,])dnl
Packit Service 4684c1
        ])
Packit Service 4684c1
    ])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
dnl The results of these tests on various platforms are:
Packit Service 4684c1
dnl
Packit Service 4684c1
dnl 1 = gl_PRINTF_SIZES_C99
Packit Service 4684c1
dnl 2 = gl_PRINTF_LONG_DOUBLE
Packit Service 4684c1
dnl 3 = gl_PRINTF_INFINITE
Packit Service 4684c1
dnl 4 = gl_PRINTF_INFINITE_LONG_DOUBLE
Packit Service 4684c1
dnl 5 = gl_PRINTF_DIRECTIVE_A
Packit Service 4684c1
dnl 6 = gl_PRINTF_DIRECTIVE_F
Packit Service 4684c1
dnl 7 = gl_PRINTF_DIRECTIVE_N
Packit Service 4684c1
dnl 8 = gl_PRINTF_DIRECTIVE_LS
Packit Service 4684c1
dnl 9 = gl_PRINTF_POSITIONS
Packit Service 4684c1
dnl 10 = gl_PRINTF_FLAG_GROUPING
Packit Service 4684c1
dnl 11 = gl_PRINTF_FLAG_LEFTADJUST
Packit Service 4684c1
dnl 12 = gl_PRINTF_FLAG_ZERO
Packit Service 4684c1
dnl 13 = gl_PRINTF_PRECISION
Packit Service 4684c1
dnl 14 = gl_PRINTF_ENOMEM
Packit Service 4684c1
dnl 15 = gl_SNPRINTF_PRESENCE
Packit Service 4684c1
dnl 16 = gl_SNPRINTF_TRUNCATION_C99
Packit Service 4684c1
dnl 17 = gl_SNPRINTF_RETVAL_C99
Packit Service 4684c1
dnl 18 = gl_SNPRINTF_DIRECTIVE_N
Packit Service 4684c1
dnl 19 = gl_SNPRINTF_SIZE1
Packit Service 4684c1
dnl 20 = gl_VSNPRINTF_ZEROSIZE_C99
Packit Service 4684c1
dnl
Packit Service 4684c1
dnl 1 = checking whether printf supports size specifiers as in C99...
Packit Service 4684c1
dnl 2 = checking whether printf supports 'long double' arguments...
Packit Service 4684c1
dnl 3 = checking whether printf supports infinite 'double' arguments...
Packit Service 4684c1
dnl 4 = checking whether printf supports infinite 'long double' arguments...
Packit Service 4684c1
dnl 5 = checking whether printf supports the 'a' and 'A' directives...
Packit Service 4684c1
dnl 6 = checking whether printf supports the 'F' directive...
Packit Service 4684c1
dnl 7 = checking whether printf supports the 'n' directive...
Packit Service 4684c1
dnl 8 = checking whether printf supports the 'ls' directive...
Packit Service 4684c1
dnl 9 = checking whether printf supports POSIX/XSI format strings with positions...
Packit Service 4684c1
dnl 10 = checking whether printf supports the grouping flag...
Packit Service 4684c1
dnl 11 = checking whether printf supports the left-adjust flag correctly...
Packit Service 4684c1
dnl 12 = checking whether printf supports the zero flag correctly...
Packit Service 4684c1
dnl 13 = checking whether printf supports large precisions...
Packit Service 4684c1
dnl 14 = checking whether printf survives out-of-memory conditions...
Packit Service 4684c1
dnl 15 = checking for snprintf...
Packit Service 4684c1
dnl 16 = checking whether snprintf truncates the result as in C99...
Packit Service 4684c1
dnl 17 = checking whether snprintf returns a byte count as in C99...
Packit Service 4684c1
dnl 18 = checking whether snprintf fully supports the 'n' directive...
Packit Service 4684c1
dnl 19 = checking whether snprintf respects a size of 1...
Packit Service 4684c1
dnl 20 = checking whether vsnprintf respects a zero size as in C99...
Packit Service 4684c1
dnl
Packit Service 4684c1
dnl . = yes, # = no.
Packit Service 4684c1
dnl
Packit Service 4684c1
dnl                                  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
Packit Service 4684c1
dnl   glibc 2.5                      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
Packit Service 4684c1
dnl   glibc 2.3.6                    .  .  .  .  #  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
Packit Service 4684c1
dnl   FreeBSD 5.4, 6.1               .  .  .  .  #  .  .  .  .  .  .  #  .  #  .  .  .  .  .  .
Packit Service 4684c1
dnl   Mac OS X 10.5.8                .  .  .  #  #  .  .  .  .  .  .  #  .  .  .  .  .  .  .  .
Packit Service 4684c1
dnl   Mac OS X 10.3.9                .  .  .  .  #  .  .  .  .  .  .  #  .  #  .  .  .  .  .  .
Packit Service 4684c1
dnl   OpenBSD 3.9, 4.0               .  .  #  #  #  #  .  #  .  #  .  #  .  #  .  .  .  .  .  .
Packit Service 4684c1
dnl   Cygwin 1.7.0 (2009)            .  .  .  #  .  .  .  ?  .  .  .  .  .  ?  .  .  .  .  .  .
Packit Service 4684c1
dnl   Cygwin 1.5.25 (2008)           .  .  .  #  #  .  .  #  .  .  .  .  .  #  .  .  .  .  .  .
Packit Service 4684c1
dnl   Cygwin 1.5.19 (2006)           #  .  .  #  #  #  .  #  .  #  .  #  #  #  .  .  .  .  .  .
Packit Service 4684c1
dnl   Solaris 11.4                   .  .  #  #  #  .  .  #  .  .  .  #  .  .  .  .  .  .  .  .
Packit Service 4684c1
dnl   Solaris 11.3                   .  .  .  .  #  .  .  #  .  .  .  .  .  .  .  .  .  .  .  .
Packit Service 4684c1
dnl   Solaris 11.0                   .  .  #  #  #  .  .  #  .  .  .  #  .  .  .  .  .  .  .  .
Packit Service 4684c1
dnl   Solaris 10                     .  .  #  #  #  .  .  #  .  .  .  #  #  .  .  .  .  .  .  .
Packit Service 4684c1
dnl   Solaris 2.6 ... 9              #  .  #  #  #  #  .  #  .  .  .  #  #  .  .  .  #  .  .  .
Packit Service 4684c1
dnl   Solaris 2.5.1                  #  .  #  #  #  #  .  #  .  .  .  #  .  .  #  #  #  #  #  #
Packit Service 4684c1
dnl   AIX 7.1                        .  .  #  #  #  .  .  .  .  .  .  #  #  .  .  .  .  .  .  .
Packit Service 4684c1
dnl   AIX 5.2                        .  .  #  #  #  .  .  .  .  .  .  #  .  .  .  .  .  .  .  .
Packit Service 4684c1
dnl   AIX 4.3.2, 5.1                 #  .  #  #  #  #  .  .  .  .  .  #  .  .  .  .  #  .  .  .
Packit Service 4684c1
dnl   HP-UX 11.31                    .  .  .  .  #  .  .  .  .  .  .  #  .  .  .  .  #  #  .  .
Packit Service 4684c1
dnl   HP-UX 11.{00,11,23}            #  .  .  .  #  #  .  .  .  .  .  #  .  .  .  .  #  #  .  #
Packit Service 4684c1
dnl   HP-UX 10.20                    #  .  #  .  #  #  .  ?  .  .  #  #  .  .  .  .  #  #  ?  #
Packit Service 4684c1
dnl   IRIX 6.5                       #  .  #  #  #  #  .  #  .  .  .  #  .  .  .  .  #  .  .  .
Packit Service 4684c1
dnl   OSF/1 5.1                      #  .  #  #  #  #  .  .  .  .  .  #  .  .  .  .  #  .  .  #
Packit Service 4684c1
dnl   OSF/1 4.0d                     #  .  #  #  #  #  .  .  .  .  .  #  .  .  #  #  #  #  #  #
Packit Service 4684c1
dnl   NetBSD 5.0                     .  .  .  #  #  .  .  .  .  .  .  #  .  #  .  .  .  .  .  .
Packit Service 4684c1
dnl   NetBSD 4.0                     .  ?  ?  ?  ?  ?  .  ?  .  ?  ?  ?  ?  ?  .  .  .  ?  ?  ?
Packit Service 4684c1
dnl   NetBSD 3.0                     .  .  .  .  #  #  .  ?  #  #  ?  #  .  #  .  .  .  .  .  .
Packit Service 4684c1
dnl   Haiku                          .  .  .  #  #  #  .  #  .  .  .  .  .  ?  .  .  ?  .  .  .
Packit Service 4684c1
dnl   BeOS                           #  #  .  #  #  #  .  ?  #  .  ?  .  #  ?  .  .  ?  .  .  .
Packit Service 4684c1
dnl   Android 4.3                    .  .  #  #  #  #  #  #  .  #  .  #  .  #  .  .  .  #  .  .
Packit Service 4684c1
dnl   old mingw / msvcrt             #  #  #  #  #  #  .  .  #  #  .  #  #  ?  .  #  #  #  .  .
Packit Service 4684c1
dnl   MSVC 9                         #  #  #  #  #  #  #  .  #  #  .  #  #  ?  #  #  #  #  .  .
Packit Service 4684c1
dnl   mingw 2009-2011                .  #  .  #  .  .  .  .  #  #  .  .  .  ?  .  .  .  .  .  .
Packit Service 4684c1
dnl   mingw-w64 2011                 #  #  #  #  #  #  .  .  #  #  .  #  #  ?  .  #  #  #  .  .