From 25a5e75613af9aac60b3c5b6856d6b6819b1ccae Mon Sep 17 00:00:00 2001 From: Francois-Xavier Coudert Date: Mon, 7 May 2007 19:48:40 +0000 Subject: [PATCH] re PR libfortran/31607 (CALL SYSTEM produces garbled output when writing to a buffered file) PR libfortran/31607 * intrinsics/system.c (system_sub): Call flush_all_units. * io/io.h (flush_all_units): Move prototype to libgfortran.h. * libgfortran.h (flush_all_units): Add prototype. From-SVN: r124510 --- libgfortran/ChangeLog | 7 +++++++ libgfortran/intrinsics/system.c | 3 +++ libgfortran/io/io.h | 3 --- libgfortran/libgfortran.h | 5 +++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 24cf9297d8a..18118d88799 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,10 @@ +2007-05-07 Francois-Xavier Coudert + + PR libfortran/31607 + * intrinsics/system.c (system_sub): Call flush_all_units. + * io/io.h (flush_all_units): Move prototype to libgfortran.h. + * libgfortran.h (flush_all_units): Add prototype. + 2007-05-06 Jerry DeLisle PR libfortran/31201 diff --git a/libgfortran/intrinsics/system.c b/libgfortran/intrinsics/system.c index 73f937142f6..49a5ba2a6d5 100644 --- a/libgfortran/intrinsics/system.c +++ b/libgfortran/intrinsics/system.c @@ -49,6 +49,9 @@ system_sub (const char *fcmd, GFC_INTEGER_4 *status, gfc_charlen_type cmd_len) char cmd[cmd_len + 1]; int stat; + /* Flush all I/O units before executing the command. */ + flush_all_units(); + memcpy (cmd, fcmd, cmd_len); cmd[cmd_len] = '\0'; diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h index 181c1816b61..a1138cffac0 100644 --- a/libgfortran/io/io.h +++ b/libgfortran/io/io.h @@ -586,9 +586,6 @@ internal_proto(compare_file_filename); extern gfc_unit *find_file (const char *file, gfc_charlen_type file_len); internal_proto(find_file); -extern void flush_all_units (void); -internal_proto(flush_all_units); - extern int stream_at_bof (stream *); internal_proto(stream_at_bof); diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h index bfbfbef634d..0f7d2c7705a 100644 --- a/libgfortran/libgfortran.h +++ b/libgfortran/libgfortran.h @@ -666,6 +666,11 @@ internal_proto(fstrcpy); extern void cf_strcpy (char *, int, const char *); internal_proto(cf_strcpy); +/* io/intrinsics.c */ + +extern void flush_all_units (void); +internal_proto(flush_all_units); + /* io.c */ extern void init_units (void); -- 2.30.2