OSDN Git Service

PR fortran/19872
authorkargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 10 Apr 2005 03:43:09 +0000 (03:43 +0000)
committerkargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 10 Apr 2005 03:43:09 +0000 (03:43 +0000)
* io/transfer.c (data_transfer_init): truncate an existing
  file on the first write.

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

libgfortran/ChangeLog
libgfortran/io/transfer.c

index ba0257d..46fc3b3 100644 (file)
@@ -1,3 +1,10 @@
+2005-04-09  Bud Davis  <bdavis@gfortran.org>
+            Steven G. Kargl <kargls@comcast.net>
+
+       PR fortran/19872
+       * io/transfer.c (data_transfer_init): truncate an existing
+       file on the first write.
+
 2005-04-09  Thomas Koenig  <Thomas.Koenig@online.de>
 
        PR libfortran/19106
index 4d48323..f86a852 100644 (file)
@@ -1103,6 +1103,13 @@ data_transfer_init (int read_flag)
        generate_error (ERROR_OS, NULL);
     }
 
+  /* Overwriting an existing sequential file ? 
+     it is always safe to truncate the file on the first write */
+  if (g.mode == WRITING 
+      && current_unit->flags.access == ACCESS_SEQUENTIAL 
+      && current_unit->current_record == 0)
+        struncate(current_unit->s); 
+
   current_unit->mode = g.mode;
 
   /* Set the initial value of flags.  */