From: Ulrich Drepper Date: Sat, 4 Aug 2001 23:59:30 +0000 (+0000) Subject: Update. X-Git-Tag: cvs/glibc-2_2_4~83 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3d759cb8d32614667f58688899fd193926dcf73d;p=thirdparty%2Fglibc.git Update. 2001-08-04 Ulrich Drepper * libio/fileops.c (_IO_new_file_underflow): Don't call _IO_flush_all_linebuffered. This isn't required in any standard. Instead flush only stdout. * libio/wfileops.c (_IO_wfile_underflow): Likewise. --- diff --git a/ChangeLog b/ChangeLog index 8a2c245c328..6450ac2ffa7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2001-08-04 Ulrich Drepper + + * libio/fileops.c (_IO_new_file_underflow): Don't call + _IO_flush_all_linebuffered. This isn't required in any standard. + Instead flush only stdout. + * libio/wfileops.c (_IO_wfile_underflow): Likewise. + 2001-08-04 Franz Sirl * dlfcn/Makefile: Add rules for new testcase tststatic. diff --git a/libio/fileops.c b/libio/fileops.c index 3947fa8d6c6..f67eeefe6e5 100644 --- a/libio/fileops.c +++ b/libio/fileops.c @@ -506,7 +506,27 @@ _IO_new_file_underflow (fp) /* Flush all line buffered files before reading. */ /* FIXME This can/should be moved to genops ?? */ if (fp->_flags & (_IO_LINE_BUF|_IO_UNBUFFERED)) - _IO_flush_all_linebuffered (); + { +#if 0 + _IO_flush_all_linebuffered (); +#else + /* We used to flush all line-buffered stream. This really isn't + required by any standard. My recollection is that + traditional Unix systems did this for stdout. stderr better + not be line buffered. So we do just that here + explicitly. --drepper */ + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _IO_stdout); + _IO_flockfile (_IO_stdout); + + if ((_IO_stdout->_flags & (_IO_LINKED | _IO_NO_WRITES | _IO_LINE_BUF)) + == (_IO_LINKED | _IO_LINE_BUF)) + _IO_OVERFLOW (_IO_stdout, EOF); + + _IO_funlockfile (_IO_stdout); + _IO_cleanup_region_end (0); +#endif + } _IO_switch_to_get_mode (fp); diff --git a/libio/wfileops.c b/libio/wfileops.c index 43b6db61332..04a3f5e64f1 100644 --- a/libio/wfileops.c +++ b/libio/wfileops.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 95, 97, 98, 99, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1993,95,97,98,99,2000,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Ulrich Drepper . Based on the single byte version by Per Bothner . @@ -229,7 +229,27 @@ _IO_wfile_underflow (fp) /* Flush all line buffered files before reading. */ /* FIXME This can/should be moved to genops ?? */ if (fp->_flags & (_IO_LINE_BUF|_IO_UNBUFFERED)) - _IO_flush_all_linebuffered (); + { +#if 0 + _IO_flush_all_linebuffered (); +#else + /* We used to flush all line-buffered stream. This really isn't + required by any standard. My recollection is that + traditional Unix systems did this for stdout. stderr better + not be line buffered. So we do just that here + explicitly. --drepper */ + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _IO_stdout); + _IO_flockfile (_IO_stdout); + + if ((_IO_stdout->_flags & (_IO_LINKED | _IO_NO_WRITES | _IO_LINE_BUF)) + == (_IO_LINKED | _IO_LINE_BUF)) + _IO_OVERFLOW (_IO_stdout, EOF); + + _IO_funlockfile (_IO_stdout); + _IO_cleanup_region_end (0); +#endif + } _IO_switch_to_get_mode (fp);