Commit b65b81f9 by Francois-Xavier Coudert Committed by François-Xavier Coudert

re PR libfortran/20179 (cannot mix C and Fortran I/O)

	PR libfortran/20179
	* io/unix.c (is_preconnected): Add function to test if a stream
	corresponds to a preconnected unit.
	* io/io.h: Add prototype for is_preconnected.
	* io/transfer.c (data_transfer_init): Do not truncate
	preconnected units.

From-SVN: r104141
parent e182017e
2005-09-11 Francois-Xavier Coudert <coudert@clipper.ens.fr>
PR libfortran/20179
* io/unix.c (is_preconnected): Add function to test if a stream
corresponds to a preconnected unit.
* io/io.h: Add prototype for is_preconnected.
* io/transfer.c (data_transfer_init): Do not truncate
preconnected units.
2005-09-10 Janne Blomqvist <jblomqvi@cc.hut.fi>
* io/unix.c: Remove mmap code.
......
......@@ -493,6 +493,9 @@ internal_proto(file_position);
extern int is_seekable (stream *);
internal_proto(is_seekable);
extern int is_preconnected (stream *);
internal_proto(is_preconnected);
extern void empty_internal_buffer(stream *);
internal_proto(empty_internal_buffer);
......
......@@ -1183,7 +1183,7 @@ data_transfer_init (int read_flag)
it is always safe to truncate the file on the first write */
if (g.mode == WRITING
&& current_unit->flags.access == ACCESS_SEQUENTIAL
&& current_unit->last_record == 0)
&& current_unit->last_record == 0 && !is_preconnected(current_unit->s))
struncate(current_unit->s);
current_unit->mode = g.mode;
......
......@@ -218,6 +218,17 @@ fix_fd (int fd)
return fd;
}
int
is_preconnected (stream * s)
{
int fd;
fd = ((unix_stream *) s)->fd;
if (fd == STDIN_FILENO || fd == STDOUT_FILENO || fd == STDERR_FILENO)
return 1;
else
return 0;
}
/* write()-- Write a buffer to a descriptor, allowing for short writes */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment