OSDN Git Service

2006-08-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / libgfortran / io / file_pos.c
index 05bb42d..3f6a332 100644 (file)
@@ -205,7 +205,7 @@ st_backspace (st_parameter_filepos *fpp)
      sequential I/O and the next direct access transfer repositions the file 
      anyway.  */
 
-  if (u->flags.access == ACCESS_DIRECT)
+  if (u->flags.access == ACCESS_DIRECT || u->flags.access == ACCESS_STREAM)
     goto done;
 
   /* Check for special cases involving the ENDFILE record first.  */
@@ -291,7 +291,7 @@ st_rewind (st_parameter_filepos *fpp)
   u = find_unit (fpp->common.unit);
   if (u != NULL)
     {
-      if (u->flags.access != ACCESS_SEQUENTIAL)
+      if (u->flags.access == ACCESS_DIRECT)
        generate_error (&fpp->common, ERROR_BAD_OPTION,
                        "Cannot REWIND a file opened for DIRECT access");
       else
@@ -301,7 +301,7 @@ st_rewind (st_parameter_filepos *fpp)
               file now.  Reset to read mode so two consecutive rewind
               statements do not delete the file contents.  */
          flush (u->s);
-         if (u->mode == WRITING)
+         if (u->mode == WRITING && u->flags.access != ACCESS_STREAM)
            struncate (u->s);
 
          u->mode = READING;