changeset 13954:5a91216fb4c4

stdio: Fix problem with popen() declaration on OSF/1 5.1. * lib/stdio.in.h: During the include_next statement, let recursive includes of this file include only the system header file.
author Bruno Haible <bruno@clisp.org>
date Mon, 20 Dec 2010 00:32:29 +0100
parents 6a6a78bd9425
children 7f79090fda41
files ChangeLog lib/stdio.in.h
diffstat 2 files changed, 18 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-19  Bruno Haible  <bruno@clisp.org>
+
+	stdio: Fix problem with popen() declaration on OSF/1 5.1.
+	* lib/stdio.in.h: During the include_next statement, let recursive
+	includes of this file include only the system header file.
+
 2010-12-19  Bruno Haible  <bruno@clisp.org>
 
 	iconv_open: Fix regression from 2010-12-04.
--- a/lib/stdio.in.h
+++ b/lib/stdio.in.h
@@ -21,8 +21,14 @@
 #endif
 @PRAGMA_COLUMNS@
 
-#if defined __need_FILE || defined __need___FILE
-/* Special invocation convention inside glibc header files.  */
+#if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H
+/* Special invocation convention:
+   - Inside glibc header files.
+   - On OSF/1 5.1 we have a sequence of nested includes
+     <stdio.h> -> <getopt.h> -> <ctype.h> -> <sys/localedef.h> ->
+     <sys/lc_core.h> -> <nl_types.h> -> <mesg.h> -> <stdio.h>.
+     In this situation, the functions are not yet declared, therefore we cannot
+     provide the C++ aliases.  */
 
 #@INCLUDE_NEXT@ @NEXT_STDIO_H@
 
@@ -31,9 +37,13 @@
 
 #ifndef _GL_STDIO_H
 
+#define _GL_ALREADY_INCLUDING_STDIO_H
+
 /* The include_next requires a split double-inclusion guard.  */
 #@INCLUDE_NEXT@ @NEXT_STDIO_H@
 
+#undef _GL_ALREADY_INCLUDING_STDIO_H
+
 #ifndef _GL_STDIO_H
 #define _GL_STDIO_H