# HG changeset patch # User Bruno Haible # Date 1222611471 -7200 # Node ID d4c4e46404f1c81a7cdde642388c85439fce2e0e # Parent 3c8170dabe46afe06e22f4e25064b6ac0881ed55 Override freopen more carefully. diff -r 3c8170dabe46 -r d4c4e46404f1 ChangeLog --- a/ChangeLog Sun Sep 28 16:12:20 2008 +0200 +++ b/ChangeLog Sun Sep 28 16:17:51 2008 +0200 @@ -1,8 +1,14 @@ 2008-09-28 Bruno Haible + Override freopen more carefully. + * lib/freopen.c (orig_freopen): New function. + (rpl_freopen): Use orig_freopen instead of freopen. + * m4/freopen.m4 (gl_PREREQ_FREOPEN): New macro. + (gl_FUNC_FREOPEN): Invoke it. + Override fopen more carefully. * lib/fopen.c (orig_fopen): New function. - (rpl_fopen): Use orig_fopen instead of open. + (rpl_fopen): Use orig_fopen instead of fopen. * m4/fopen.m4 (gl_PREREQ_FOPEN): New macro. (gl_FUNC_FOPEN): Invoke it. Needed on AIX. Reported by Rainer Tammer . diff -r 3c8170dabe46 -r d4c4e46404f1 lib/freopen.c --- a/lib/freopen.c Sun Sep 28 16:12:20 2008 +0200 +++ b/lib/freopen.c Sun Sep 28 16:17:51 2008 +0200 @@ -1,5 +1,5 @@ /* Open a stream to a file. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007-2008 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,6 +18,17 @@ #include +/* Get the original definition of freopen. It might be defined as a macro. */ +#define __need_FILE +#include +#undef __need_FILE + +static inline FILE * +orig_freopen (const char *filename, const char *mode, FILE *stream) +{ + return freopen (filename, mode, stream); +} + /* Specification. */ #include @@ -25,12 +36,11 @@ FILE * rpl_freopen (const char *filename, const char *mode, FILE *stream) -#undef freopen { #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ if (strcmp (filename, "/dev/null") == 0) filename = "NUL"; #endif - return freopen (filename, mode, stream); + return orig_freopen (filename, mode, stream); } diff -r 3c8170dabe46 -r d4c4e46404f1 m4/freopen.m4 --- a/m4/freopen.m4 Sun Sep 28 16:12:20 2008 +0200 +++ b/m4/freopen.m4 Sun Sep 28 16:17:51 2008 +0200 @@ -1,5 +1,5 @@ -# freopen.m4 serial 1 -dnl Copyright (C) 2007 Free Software Foundation, Inc. +# freopen.m4 serial 2 +dnl Copyright (C) 2007-2008 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -12,6 +12,13 @@ mingw* | pw*) REPLACE_FREOPEN=1 AC_LIBOBJ([freopen]) + gl_PREREQ_FREOPEN ;; esac ]) + +# Prerequisites of lib/freopen.c. +AC_DEFUN([gl_PREREQ_FREOPEN], +[ + AC_REQUIRE([AC_C_INLINE]) +])