OSDN Git Service

* io/io.h (flush): Add prototype.
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 16 May 2004 13:27:48 +0000 (13:27 +0000)
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 16 May 2004 13:27:48 +0000 (13:27 +0000)
* io/transfer.c (finalize_transfer): Flush partial records.
* io/unix.c (flush): New function.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81913 138bc75d-0d04-0410-961f-82ee72b054a4

libgfortran/ChangeLog
libgfortran/io/io.h
libgfortran/io/transfer.c
libgfortran/io/unix.c

index d3bf438..27531d8 100644 (file)
@@ -1,3 +1,9 @@
+2004-05-16  Janne Blomqvist  <jblomqvi@cc.hut.fi>
+
+       * io/io.h (flush): Add prototype.
+       * io/transfer.c (finalize_transfer): Flush partial records.
+       * io/unix.c (flush): New function.
+
 2004-05-15  Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
 
        PR fortran/15234
index 99c2b02..1806fb9 100644 (file)
@@ -456,6 +456,9 @@ int is_seekable (stream *);
 #define empty_internal_buffer prefix(empty_internal_buffer)
 void empty_internal_buffer(stream *);
 
+#define flush prefix(flush)
+try flush (stream *);
+
 
 /* unit.c */
 
index 2440aea..da2e615 100644 (file)
@@ -1338,7 +1338,13 @@ finalize_transfer (void)
       free_fnodes ();
 
       if (advance_status == ADVANCE_NO)
-       return;
+       {
+         /* Most systems buffer lines, so force the partial record
+            to be written out.  */
+         flush (current_unit->s);
+         return;
+       }
+
       next_record (1);
       current_unit->current_record = 0;
     }
index 3cefd2a..104afb2 100644 (file)
@@ -1394,6 +1394,12 @@ is_seekable (stream * s)
   return ((unix_stream *) s)->mmaped;
 }
 
+try
+flush (stream *s)
+{
+  return fd_flush( (unix_stream *) s);
+}
+
 
 /* How files are stored:  This is an operating-system specific issue,
    and therefore belongs here.  There are three cases to consider.