Blame m4/stdio_h.m4

Packit Service 4684c1
# stdio_h.m4 serial 50
Packit Service 4684c1
dnl Copyright (C) 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
AC_DEFUN([gl_STDIO_H],
Packit Service 4684c1
[
Packit Service 4684c1
  AH_VERBATIM([MINGW_ANSI_STDIO],
Packit Service 4684c1
[/* Use GNU style printf and scanf.  */
Packit Service 4684c1
#ifndef __USE_MINGW_ANSI_STDIO
Packit Service 4684c1
# undef __USE_MINGW_ANSI_STDIO
Packit Service 4684c1
#endif
Packit Service 4684c1
])
Packit Service 4684c1
  AC_DEFINE([__USE_MINGW_ANSI_STDIO])
Packit Service 4684c1
  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
Packit Service 4684c1
  gl_NEXT_HEADERS([stdio.h])
Packit Service 4684c1
Packit Service 4684c1
  dnl Determine whether __USE_MINGW_ANSI_STDIO makes printf and
Packit Service 4684c1
  dnl inttypes.h behave like gnu instead of system; we must give our
Packit Service 4684c1
  dnl printf wrapper the right attribute to match.
Packit Service 4684c1
  AC_CACHE_CHECK([which flavor of printf attribute matches inttypes macros],
Packit Service 4684c1
    [gl_cv_func_printf_attribute_flavor],
Packit Service 4684c1
    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Packit Service 4684c1
       #define __STDC_FORMAT_MACROS 1
Packit Service 4684c1
       #include <stdio.h>
Packit Service 4684c1
       #include <inttypes.h>
Packit Service 4684c1
       /* For non-mingw systems, compilation will trivially succeed.
Packit Service 4684c1
          For mingw, compilation will succeed for older mingw (system
Packit Service 4684c1
          printf, "I64d") and fail for newer mingw (gnu printf, "lld"). */
Packit Service 4684c1
       #if (defined _WIN32 && ! defined __CYGWIN__) && \
Packit Service 4684c1
         (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
Packit Service 4684c1
       extern char PRIdMAX_probe[sizeof PRIdMAX == sizeof "I64d" ? 1 : -1];
Packit Service 4684c1
       #endif
Packit Service 4684c1
      ]])], [gl_cv_func_printf_attribute_flavor=system],
Packit Service 4684c1
      [gl_cv_func_printf_attribute_flavor=gnu])])
Packit Service 4684c1
  if test "$gl_cv_func_printf_attribute_flavor" = gnu; then
Packit Service 4684c1
    AC_DEFINE([GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU], [1],
Packit Service 4684c1
      [Define to 1 if printf and friends should be labeled with
Packit Service 4684c1
       attribute "__gnu_printf__" instead of "__printf__"])
Packit Service 4684c1
  fi
Packit Service 4684c1
Packit Service 4684c1
  dnl No need to create extra modules for these functions. Everyone who uses
Packit Service 4684c1
  dnl <stdio.h> likely needs them.
Packit Service 4684c1
  GNULIB_FSCANF=1
Packit Service 4684c1
  gl_MODULE_INDICATOR([fscanf])
Packit Service 4684c1
  GNULIB_SCANF=1
Packit Service 4684c1
  gl_MODULE_INDICATOR([scanf])
Packit Service 4684c1
  GNULIB_FGETC=1
Packit Service 4684c1
  GNULIB_GETC=1
Packit Service 4684c1
  GNULIB_GETCHAR=1
Packit Service 4684c1
  GNULIB_FGETS=1
Packit Service 4684c1
  GNULIB_FREAD=1
Packit Service 4684c1
  dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c"
Packit Service 4684c1
  dnl "expected source file, required through AC_LIBSOURCES, not found". It is
Packit Service 4684c1
  dnl also an optimization, to avoid performing a configure check whose result
Packit Service 4684c1
  dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
Packit Service 4684c1
  dnl or GNULIB_NONBLOCKING redundant.
Packit Service 4684c1
  m4_ifdef([gl_NONBLOCKING_IO], [
Packit Service 4684c1
    gl_NONBLOCKING_IO
Packit Service 4684c1
    if test $gl_cv_have_nonblocking != yes; then
Packit Service 4684c1
      REPLACE_STDIO_READ_FUNCS=1
Packit Service 4684c1
      AC_LIBOBJ([stdio-read])
Packit Service 4684c1
    fi
Packit Service 4684c1
  ])
Packit Service 4684c1
Packit Service 4684c1
  dnl No need to create extra modules for these functions. Everyone who uses
Packit Service 4684c1
  dnl <stdio.h> likely needs them.
Packit Service 4684c1
  GNULIB_FPRINTF=1
Packit Service 4684c1
  GNULIB_PRINTF=1
Packit Service 4684c1
  GNULIB_VFPRINTF=1
Packit Service 4684c1
  GNULIB_VPRINTF=1
Packit Service 4684c1
  GNULIB_FPUTC=1
Packit Service 4684c1
  GNULIB_PUTC=1
Packit Service 4684c1
  GNULIB_PUTCHAR=1
Packit Service 4684c1
  GNULIB_FPUTS=1
Packit Service 4684c1
  GNULIB_PUTS=1
Packit Service 4684c1
  GNULIB_FWRITE=1
Packit Service 4684c1
  dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
Packit Service 4684c1
  dnl "expected source file, required through AC_LIBSOURCES, not found". It is
Packit Service 4684c1
  dnl also an optimization, to avoid performing a configure check whose result
Packit Service 4684c1
  dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or
Packit Service 4684c1
  dnl GNULIB_SIGPIPE redundant.
Packit Service 4684c1
  m4_ifdef([gl_SIGNAL_SIGPIPE], [
Packit Service 4684c1
    gl_SIGNAL_SIGPIPE
Packit Service 4684c1
    if test $gl_cv_header_signal_h_SIGPIPE != yes; then
Packit Service 4684c1
      REPLACE_STDIO_WRITE_FUNCS=1
Packit Service 4684c1
      AC_LIBOBJ([stdio-write])
Packit Service 4684c1
    fi
Packit Service 4684c1
  ])
Packit Service 4684c1
  dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
Packit Service 4684c1
  dnl "expected source file, required through AC_LIBSOURCES, not found". It is
Packit Service 4684c1
  dnl also an optimization, to avoid performing a configure check whose result
Packit Service 4684c1
  dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
Packit Service 4684c1
  dnl or GNULIB_NONBLOCKING redundant.
Packit Service 4684c1
  m4_ifdef([gl_NONBLOCKING_IO], [
Packit Service 4684c1
    gl_NONBLOCKING_IO
Packit Service 4684c1
    if test $gl_cv_have_nonblocking != yes; then
Packit Service 4684c1
      REPLACE_STDIO_WRITE_FUNCS=1
Packit Service 4684c1
      AC_LIBOBJ([stdio-write])
Packit Service 4684c1
    fi
Packit Service 4684c1
  ])
Packit Service 4684c1
Packit Service 4684c1
  dnl Check for declarations of anything we want to poison if the
Packit Service 4684c1
  dnl corresponding gnulib module is not in use, and which is not
Packit Service 4684c1
  dnl guaranteed by both C89 and C11.
Packit Service 4684c1
  gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
Packit Service 4684c1
    ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen
Packit Service 4684c1
    renameat snprintf tmpfile vdprintf vsnprintf])
Packit Service 4684c1
Packit Service 4684c1
  AC_REQUIRE([AC_C_RESTRICT])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
Packit Service 4684c1
[
Packit Service 4684c1
  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
Packit Service 4684c1
  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
Packit Service 4684c1
  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
Packit Service 4684c1
  dnl Define it also as a C macro, for the benefit of the unit tests.
Packit Service 4684c1
  gl_MODULE_INDICATOR_FOR_TESTS([$1])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_STDIO_H_DEFAULTS],
Packit Service 4684c1
[
Packit Service 4684c1
  GNULIB_DPRINTF=0;              AC_SUBST([GNULIB_DPRINTF])
Packit Service 4684c1
  GNULIB_FCLOSE=0;               AC_SUBST([GNULIB_FCLOSE])
Packit Service 4684c1
  GNULIB_FDOPEN=0;               AC_SUBST([GNULIB_FDOPEN])
Packit Service 4684c1
  GNULIB_FFLUSH=0;               AC_SUBST([GNULIB_FFLUSH])
Packit Service 4684c1
  GNULIB_FGETC=0;                AC_SUBST([GNULIB_FGETC])
Packit Service 4684c1
  GNULIB_FGETS=0;                AC_SUBST([GNULIB_FGETS])
Packit Service 4684c1
  GNULIB_FOPEN=0;                AC_SUBST([GNULIB_FOPEN])
Packit Service 4684c1
  GNULIB_FPRINTF=0;              AC_SUBST([GNULIB_FPRINTF])
Packit Service 4684c1
  GNULIB_FPRINTF_POSIX=0;        AC_SUBST([GNULIB_FPRINTF_POSIX])
Packit Service 4684c1
  GNULIB_FPURGE=0;               AC_SUBST([GNULIB_FPURGE])
Packit Service 4684c1
  GNULIB_FPUTC=0;                AC_SUBST([GNULIB_FPUTC])
Packit Service 4684c1
  GNULIB_FPUTS=0;                AC_SUBST([GNULIB_FPUTS])
Packit Service 4684c1
  GNULIB_FREAD=0;                AC_SUBST([GNULIB_FREAD])
Packit Service 4684c1
  GNULIB_FREOPEN=0;              AC_SUBST([GNULIB_FREOPEN])
Packit Service 4684c1
  GNULIB_FSCANF=0;               AC_SUBST([GNULIB_FSCANF])
Packit Service 4684c1
  GNULIB_FSEEK=0;                AC_SUBST([GNULIB_FSEEK])
Packit Service 4684c1
  GNULIB_FSEEKO=0;               AC_SUBST([GNULIB_FSEEKO])
Packit Service 4684c1
  GNULIB_FTELL=0;                AC_SUBST([GNULIB_FTELL])
Packit Service 4684c1
  GNULIB_FTELLO=0;               AC_SUBST([GNULIB_FTELLO])
Packit Service 4684c1
  GNULIB_FWRITE=0;               AC_SUBST([GNULIB_FWRITE])
Packit Service 4684c1
  GNULIB_GETC=0;                 AC_SUBST([GNULIB_GETC])
Packit Service 4684c1
  GNULIB_GETCHAR=0;              AC_SUBST([GNULIB_GETCHAR])
Packit Service 4684c1
  GNULIB_GETDELIM=0;             AC_SUBST([GNULIB_GETDELIM])
Packit Service 4684c1
  GNULIB_GETLINE=0;              AC_SUBST([GNULIB_GETLINE])
Packit Service 4684c1
  GNULIB_OBSTACK_PRINTF=0;       AC_SUBST([GNULIB_OBSTACK_PRINTF])
Packit Service 4684c1
  GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
Packit Service 4684c1
  GNULIB_PCLOSE=0;               AC_SUBST([GNULIB_PCLOSE])
Packit Service 4684c1
  GNULIB_PERROR=0;               AC_SUBST([GNULIB_PERROR])
Packit Service 4684c1
  GNULIB_POPEN=0;                AC_SUBST([GNULIB_POPEN])
Packit Service 4684c1
  GNULIB_PRINTF=0;               AC_SUBST([GNULIB_PRINTF])
Packit Service 4684c1
  GNULIB_PRINTF_POSIX=0;         AC_SUBST([GNULIB_PRINTF_POSIX])
Packit Service 4684c1
  GNULIB_PUTC=0;                 AC_SUBST([GNULIB_PUTC])
Packit Service 4684c1
  GNULIB_PUTCHAR=0;              AC_SUBST([GNULIB_PUTCHAR])
Packit Service 4684c1
  GNULIB_PUTS=0;                 AC_SUBST([GNULIB_PUTS])
Packit Service 4684c1
  GNULIB_REMOVE=0;               AC_SUBST([GNULIB_REMOVE])
Packit Service 4684c1
  GNULIB_RENAME=0;               AC_SUBST([GNULIB_RENAME])
Packit Service 4684c1
  GNULIB_RENAMEAT=0;             AC_SUBST([GNULIB_RENAMEAT])
Packit Service 4684c1
  GNULIB_SCANF=0;                AC_SUBST([GNULIB_SCANF])
Packit Service 4684c1
  GNULIB_SNPRINTF=0;             AC_SUBST([GNULIB_SNPRINTF])
Packit Service 4684c1
  GNULIB_SPRINTF_POSIX=0;        AC_SUBST([GNULIB_SPRINTF_POSIX])
Packit Service 4684c1
  GNULIB_STDIO_H_NONBLOCKING=0;  AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
Packit Service 4684c1
  GNULIB_STDIO_H_SIGPIPE=0;      AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
Packit Service 4684c1
  GNULIB_TMPFILE=0;              AC_SUBST([GNULIB_TMPFILE])
Packit Service 4684c1
  GNULIB_VASPRINTF=0;            AC_SUBST([GNULIB_VASPRINTF])
Packit Service 4684c1
  GNULIB_VFSCANF=0;              AC_SUBST([GNULIB_VFSCANF])
Packit Service 4684c1
  GNULIB_VSCANF=0;               AC_SUBST([GNULIB_VSCANF])
Packit Service 4684c1
  GNULIB_VDPRINTF=0;             AC_SUBST([GNULIB_VDPRINTF])
Packit Service 4684c1
  GNULIB_VFPRINTF=0;             AC_SUBST([GNULIB_VFPRINTF])
Packit Service 4684c1
  GNULIB_VFPRINTF_POSIX=0;       AC_SUBST([GNULIB_VFPRINTF_POSIX])
Packit Service 4684c1
  GNULIB_VPRINTF=0;              AC_SUBST([GNULIB_VPRINTF])
Packit Service 4684c1
  GNULIB_VPRINTF_POSIX=0;        AC_SUBST([GNULIB_VPRINTF_POSIX])
Packit Service 4684c1
  GNULIB_VSNPRINTF=0;            AC_SUBST([GNULIB_VSNPRINTF])
Packit Service 4684c1
  GNULIB_VSPRINTF_POSIX=0;       AC_SUBST([GNULIB_VSPRINTF_POSIX])
Packit Service 4684c1
  dnl Assume proper GNU behavior unless another module says otherwise.
Packit Service 4684c1
  HAVE_DECL_FPURGE=1;            AC_SUBST([HAVE_DECL_FPURGE])
Packit Service 4684c1
  HAVE_DECL_FSEEKO=1;            AC_SUBST([HAVE_DECL_FSEEKO])
Packit Service 4684c1
  HAVE_DECL_FTELLO=1;            AC_SUBST([HAVE_DECL_FTELLO])
Packit Service 4684c1
  HAVE_DECL_GETDELIM=1;          AC_SUBST([HAVE_DECL_GETDELIM])
Packit Service 4684c1
  HAVE_DECL_GETLINE=1;           AC_SUBST([HAVE_DECL_GETLINE])
Packit Service 4684c1
  HAVE_DECL_OBSTACK_PRINTF=1;    AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
Packit Service 4684c1
  HAVE_DECL_SNPRINTF=1;          AC_SUBST([HAVE_DECL_SNPRINTF])
Packit Service 4684c1
  HAVE_DECL_VSNPRINTF=1;         AC_SUBST([HAVE_DECL_VSNPRINTF])
Packit Service 4684c1
  HAVE_DPRINTF=1;                AC_SUBST([HAVE_DPRINTF])
Packit Service 4684c1
  HAVE_FSEEKO=1;                 AC_SUBST([HAVE_FSEEKO])
Packit Service 4684c1
  HAVE_FTELLO=1;                 AC_SUBST([HAVE_FTELLO])
Packit Service 4684c1
  HAVE_PCLOSE=1;                 AC_SUBST([HAVE_PCLOSE])
Packit Service 4684c1
  HAVE_POPEN=1;                  AC_SUBST([HAVE_POPEN])
Packit Service 4684c1
  HAVE_RENAMEAT=1;               AC_SUBST([HAVE_RENAMEAT])
Packit Service 4684c1
  HAVE_VASPRINTF=1;              AC_SUBST([HAVE_VASPRINTF])
Packit Service 4684c1
  HAVE_VDPRINTF=1;               AC_SUBST([HAVE_VDPRINTF])
Packit Service 4684c1
  REPLACE_DPRINTF=0;             AC_SUBST([REPLACE_DPRINTF])
Packit Service 4684c1
  REPLACE_FCLOSE=0;              AC_SUBST([REPLACE_FCLOSE])
Packit Service 4684c1
  REPLACE_FDOPEN=0;              AC_SUBST([REPLACE_FDOPEN])
Packit Service 4684c1
  REPLACE_FFLUSH=0;              AC_SUBST([REPLACE_FFLUSH])
Packit Service 4684c1
  REPLACE_FOPEN=0;               AC_SUBST([REPLACE_FOPEN])
Packit Service 4684c1
  REPLACE_FPRINTF=0;             AC_SUBST([REPLACE_FPRINTF])
Packit Service 4684c1
  REPLACE_FPURGE=0;              AC_SUBST([REPLACE_FPURGE])
Packit Service 4684c1
  REPLACE_FREOPEN=0;             AC_SUBST([REPLACE_FREOPEN])
Packit Service 4684c1
  REPLACE_FSEEK=0;               AC_SUBST([REPLACE_FSEEK])
Packit Service 4684c1
  REPLACE_FSEEKO=0;              AC_SUBST([REPLACE_FSEEKO])
Packit Service 4684c1
  REPLACE_FTELL=0;               AC_SUBST([REPLACE_FTELL])
Packit Service 4684c1
  REPLACE_FTELLO=0;              AC_SUBST([REPLACE_FTELLO])
Packit Service 4684c1
  REPLACE_GETDELIM=0;            AC_SUBST([REPLACE_GETDELIM])
Packit Service 4684c1
  REPLACE_GETLINE=0;             AC_SUBST([REPLACE_GETLINE])
Packit Service 4684c1
  REPLACE_OBSTACK_PRINTF=0;      AC_SUBST([REPLACE_OBSTACK_PRINTF])
Packit Service 4684c1
  REPLACE_PERROR=0;              AC_SUBST([REPLACE_PERROR])
Packit Service 4684c1
  REPLACE_POPEN=0;               AC_SUBST([REPLACE_POPEN])
Packit Service 4684c1
  REPLACE_PRINTF=0;              AC_SUBST([REPLACE_PRINTF])
Packit Service 4684c1
  REPLACE_REMOVE=0;              AC_SUBST([REPLACE_REMOVE])
Packit Service 4684c1
  REPLACE_RENAME=0;              AC_SUBST([REPLACE_RENAME])
Packit Service 4684c1
  REPLACE_RENAMEAT=0;            AC_SUBST([REPLACE_RENAMEAT])
Packit Service 4684c1
  REPLACE_SNPRINTF=0;            AC_SUBST([REPLACE_SNPRINTF])
Packit Service 4684c1
  REPLACE_SPRINTF=0;             AC_SUBST([REPLACE_SPRINTF])
Packit Service 4684c1
  REPLACE_STDIO_READ_FUNCS=0;    AC_SUBST([REPLACE_STDIO_READ_FUNCS])
Packit Service 4684c1
  REPLACE_STDIO_WRITE_FUNCS=0;   AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
Packit Service 4684c1
  REPLACE_TMPFILE=0;             AC_SUBST([REPLACE_TMPFILE])
Packit Service 4684c1
  REPLACE_VASPRINTF=0;           AC_SUBST([REPLACE_VASPRINTF])
Packit Service 4684c1
  REPLACE_VDPRINTF=0;            AC_SUBST([REPLACE_VDPRINTF])
Packit Service 4684c1
  REPLACE_VFPRINTF=0;            AC_SUBST([REPLACE_VFPRINTF])
Packit Service 4684c1
  REPLACE_VPRINTF=0;             AC_SUBST([REPLACE_VPRINTF])
Packit Service 4684c1
  REPLACE_VSNPRINTF=0;           AC_SUBST([REPLACE_VSNPRINTF])
Packit Service 4684c1
  REPLACE_VSPRINTF=0;            AC_SUBST([REPLACE_VSPRINTF])
Packit Service 4684c1
])