aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/io
diff options
context:
space:
mode:
authorJanne Blomqvist <jblomqvi@cc.hut.fi>2004-05-16 16:27:48 +0300
committerPaul Brook <pbrook@gcc.gnu.org>2004-05-16 13:27:48 +0000
commit000aa32a49ae77b3703599eb9a66b9f7d0ab7032 (patch)
tree98bc62ebf30b17a551677a60581e8a1ed4703037 /libgfortran/io
parent1ab106cdc46e598261d9ffa0673936d35af923db (diff)
downloadgcc-000aa32a49ae77b3703599eb9a66b9f7d0ab7032.zip
gcc-000aa32a49ae77b3703599eb9a66b9f7d0ab7032.tar.gz
gcc-000aa32a49ae77b3703599eb9a66b9f7d0ab7032.tar.bz2
io.h (flush): Add prototype.
* io/io.h (flush): Add prototype. * io/transfer.c (finalize_transfer): Flush partial records. * io/unix.c (flush): New function. From-SVN: r81913
Diffstat (limited to 'libgfortran/io')
-rw-r--r--libgfortran/io/io.h3
-rw-r--r--libgfortran/io/transfer.c8
-rw-r--r--libgfortran/io/unix.c6
3 files changed, 16 insertions, 1 deletions
diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h
index 99c2b02..1806fb9 100644
--- a/libgfortran/io/io.h
+++ b/libgfortran/io/io.h
@@ -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 */
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 2440aea..da2e615 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -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;
}
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index 3cefd2a..104afb2c 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -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.