]> git.cworth.org Git - tar/blob - m4/stdio_h.m4
Imported Upstream version 1.21
[tar] / m4 / stdio_h.m4
1 # stdio_h.m4 serial 14
2 dnl Copyright (C) 2007-2008 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
6
7 AC_DEFUN([gl_STDIO_H],
8 [
9   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
10   gl_CHECK_NEXT_HEADERS([stdio.h])
11   dnl No need to create extra modules for these functions. Everyone who uses
12   dnl <stdio.h> likely needs them.
13   GNULIB_FPRINTF=1
14   GNULIB_PRINTF=1
15   GNULIB_VFPRINTF=1
16   GNULIB_VPRINTF=1
17   GNULIB_FPUTC=1
18   GNULIB_PUTC=1
19   GNULIB_PUTCHAR=1
20   GNULIB_FPUTS=1
21   GNULIB_PUTS=1
22   GNULIB_FWRITE=1
23   dnl This ifdef is just an optimization, to avoid performing a configure
24   dnl check whose result is not used. It does not make the test of
25   dnl GNULIB_STDIO_H_SIGPIPE or GNULIB_SIGPIPE redundant.
26   m4_ifdef([gl_SIGNAL_SIGPIPE], [
27     gl_SIGNAL_SIGPIPE
28     if test $gl_cv_header_signal_h_SIGPIPE != yes; then
29       REPLACE_STDIO_WRITE_FUNCS=1
30       AC_LIBOBJ([stdio-write])
31     fi
32   ])
33 ])
34
35 AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
36 [
37   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
38   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
39   GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
40 ])
41
42 AC_DEFUN([gl_STDIO_H_DEFAULTS],
43 [
44   GNULIB_FPRINTF=0;              AC_SUBST([GNULIB_FPRINTF])
45   GNULIB_FPRINTF_POSIX=0;        AC_SUBST([GNULIB_FPRINTF_POSIX])
46   GNULIB_PRINTF=0;               AC_SUBST([GNULIB_PRINTF])
47   GNULIB_PRINTF_POSIX=0;         AC_SUBST([GNULIB_PRINTF_POSIX])
48   GNULIB_SNPRINTF=0;             AC_SUBST([GNULIB_SNPRINTF])
49   GNULIB_SPRINTF_POSIX=0;        AC_SUBST([GNULIB_SPRINTF_POSIX])
50   GNULIB_VFPRINTF=0;             AC_SUBST([GNULIB_VFPRINTF])
51   GNULIB_VFPRINTF_POSIX=0;       AC_SUBST([GNULIB_VFPRINTF_POSIX])
52   GNULIB_VPRINTF=0;              AC_SUBST([GNULIB_VPRINTF])
53   GNULIB_VPRINTF_POSIX=0;        AC_SUBST([GNULIB_VPRINTF_POSIX])
54   GNULIB_VSNPRINTF=0;            AC_SUBST([GNULIB_VSNPRINTF])
55   GNULIB_VSPRINTF_POSIX=0;       AC_SUBST([GNULIB_VSPRINTF_POSIX])
56   GNULIB_VASPRINTF=0;            AC_SUBST([GNULIB_VASPRINTF])
57   GNULIB_OBSTACK_PRINTF=0;       AC_SUBST([GNULIB_OBSTACK_PRINTF])
58   GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
59   GNULIB_FOPEN=0;                AC_SUBST([GNULIB_FOPEN])
60   GNULIB_FREOPEN=0;              AC_SUBST([GNULIB_FREOPEN])
61   GNULIB_FSEEK=0;                AC_SUBST([GNULIB_FSEEK])
62   GNULIB_FSEEKO=0;               AC_SUBST([GNULIB_FSEEKO])
63   GNULIB_FTELL=0;                AC_SUBST([GNULIB_FTELL])
64   GNULIB_FTELLO=0;               AC_SUBST([GNULIB_FTELLO])
65   GNULIB_FFLUSH=0;               AC_SUBST([GNULIB_FFLUSH])
66   GNULIB_FCLOSE=0;               AC_SUBST([GNULIB_FCLOSE])
67   GNULIB_FPUTC=0;                AC_SUBST([GNULIB_FPUTC])
68   GNULIB_PUTC=0;                 AC_SUBST([GNULIB_PUTC])
69   GNULIB_PUTCHAR=0;              AC_SUBST([GNULIB_PUTCHAR])
70   GNULIB_FPUTS=0;                AC_SUBST([GNULIB_FPUTS])
71   GNULIB_PUTS=0;                 AC_SUBST([GNULIB_PUTS])
72   GNULIB_FWRITE=0;               AC_SUBST([GNULIB_FWRITE])
73   GNULIB_GETDELIM=0;             AC_SUBST([GNULIB_GETDELIM])
74   GNULIB_GETLINE=0;              AC_SUBST([GNULIB_GETLINE])
75   GNULIB_PERROR=0;               AC_SUBST([GNULIB_PERROR])
76   GNULIB_STDIO_H_SIGPIPE=0;      AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
77   dnl Assume proper GNU behavior unless another module says otherwise.
78   REPLACE_STDIO_WRITE_FUNCS=0;   AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
79   REPLACE_FPRINTF=0;             AC_SUBST([REPLACE_FPRINTF])
80   REPLACE_VFPRINTF=0;            AC_SUBST([REPLACE_VFPRINTF])
81   REPLACE_PRINTF=0;              AC_SUBST([REPLACE_PRINTF])
82   REPLACE_VPRINTF=0;             AC_SUBST([REPLACE_VPRINTF])
83   REPLACE_SNPRINTF=0;            AC_SUBST([REPLACE_SNPRINTF])
84   HAVE_DECL_SNPRINTF=1;          AC_SUBST([HAVE_DECL_SNPRINTF])
85   REPLACE_VSNPRINTF=0;           AC_SUBST([REPLACE_VSNPRINTF])
86   HAVE_DECL_VSNPRINTF=1;         AC_SUBST([HAVE_DECL_VSNPRINTF])
87   REPLACE_SPRINTF=0;             AC_SUBST([REPLACE_SPRINTF])
88   REPLACE_VSPRINTF=0;            AC_SUBST([REPLACE_VSPRINTF])
89   HAVE_VASPRINTF=1;              AC_SUBST([HAVE_VASPRINTF])
90   REPLACE_VASPRINTF=0;           AC_SUBST([REPLACE_VASPRINTF])
91   HAVE_DECL_OBSTACK_PRINTF=1;    AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
92   REPLACE_OBSTACK_PRINTF=0;      AC_SUBST([REPLACE_OBSTACK_PRINTF])
93   REPLACE_FOPEN=0;               AC_SUBST([REPLACE_FOPEN])
94   REPLACE_FREOPEN=0;             AC_SUBST([REPLACE_FREOPEN])
95   HAVE_FSEEKO=1;                 AC_SUBST([HAVE_FSEEKO])
96   REPLACE_FSEEKO=0;              AC_SUBST([REPLACE_FSEEKO])
97   REPLACE_FSEEK=0;               AC_SUBST([REPLACE_FSEEK])
98   HAVE_FTELLO=1;                 AC_SUBST([HAVE_FTELLO])
99   REPLACE_FTELLO=0;              AC_SUBST([REPLACE_FTELLO])
100   REPLACE_FTELL=0;               AC_SUBST([REPLACE_FTELL])
101   REPLACE_FFLUSH=0;              AC_SUBST([REPLACE_FFLUSH])
102   REPLACE_FCLOSE=0;              AC_SUBST([REPLACE_FCLOSE])
103   HAVE_DECL_GETDELIM=1;          AC_SUBST([HAVE_DECL_GETDELIM])
104   HAVE_DECL_GETLINE=1;           AC_SUBST([HAVE_DECL_GETLINE])
105   REPLACE_GETLINE=0;             AC_SUBST([REPLACE_GETLINE])
106   REPLACE_PERROR=0;              AC_SUBST([REPLACE_PERROR])
107 ])
108
109 dnl Code shared by fseeko and ftello.  Determine if large files are supported,
110 dnl but stdin does not start as a large file by default.
111 AC_DEFUN([gl_STDIN_LARGE_OFFSET],
112   [
113     AC_CACHE_CHECK([whether stdin defaults to large file offsets],
114       [gl_cv_var_stdin_large_offset],
115       [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]],
116 [[#if defined __SL64 && defined __SCLE /* cygwin */
117   /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making
118      fseeko/ftello needlessly fail.  This bug was fixed in 1.5.25, and
119      it is easier to do a version check than building a runtime test.  */
120 # include <cygwin/version.h>
121 # if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25)
122   choke me
123 # endif
124 #endif]])],
125         [gl_cv_var_stdin_large_offset=yes],
126         [gl_cv_var_stdin_large_offset=no])])
127 ])