Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 4 Aug 2001 23:59:30 +0000 (23:59 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 4 Aug 2001 23:59:30 +0000 (23:59 +0000)
2001-08-04  Ulrich Drepper  <drepper@redhat.com>

* 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.

ChangeLog
libio/fileops.c
libio/wfileops.c

index 8a2c245..6450ac2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2001-08-04  Ulrich Drepper  <drepper@redhat.com>
+
+       * 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  <Franz.Sirl-kernel@lauterbach.com>
 
        * dlfcn/Makefile: Add rules for new testcase tststatic.
index 3947fa8..f67eeef 100644 (file)
@@ -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);
 
index 43b6db6..04a3f5e 100644 (file)
@@ -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 <drepper@cygnus.com>.
    Based on the single byte version by Per Bothner <bothner@cygnus.com>.
@@ -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);