Blame m4/stdio_h.m4

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