mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-07 07:40:25 +08:00
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
This commit is contained in:
parent
e182017e46
commit
b65b81f935
@ -1,3 +1,12 @@
|
||||
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 */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user