libgfortran ChangeLog:
authorJanne Blomqvist <jb@gcc.gnu.org>
Sat, 26 Nov 2005 09:12:36 +0000 (11:12 +0200)
committerJanne Blomqvist <jb@gcc.gnu.org>
Sat, 26 Nov 2005 09:12:36 +0000 (11:12 +0200)
2005-11-26  Janne Blomqvist  <jb@gcc.gnu.org>

PR libgfortran/24945
* io/open.c (edit_modes): Check for STATUS_UNKNOWN flag.

testsuite ChangeLog

2005-11-26  Janne Blomqvist  <jb@gcc.gnu.org>

PR libgfortran/24945
* gfortran.dg/open_status_2.f90: New test.

From-SVN: r107538

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/open_status_2.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/io/open.c

index 99342b2..4f73095 100644 (file)
@@ -1,3 +1,8 @@
+2005-11-26  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       PR libgfortran/24945
+       * gfortran.dg/open_status_2.f90: New test.
+       
 2005-11-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * gcc.c-torture/execute/builtins/fprintf.c,
diff --git a/gcc/testsuite/gfortran.dg/open_status_2.f90 b/gcc/testsuite/gfortran.dg/open_status_2.f90
new file mode 100644 (file)
index 0000000..8b4b577
--- /dev/null
@@ -0,0 +1,12 @@
+! { dg-do run } 
+! PR 25036
+! Test reopening file without status specifier or with
+! status='unknown'. The standard says that these two must behave
+! identically, but the actual behaviour is processor dependent.
+program open_status_2
+  open(10, file="f", form='unformatted', status='unknown')
+  open(10, file="f", form='unformatted', status='unknown')
+  open(10, file="f", form='unformatted')
+  close(10, status='delete')
+end program open_status_2
index a637ee4..03629e2 100644 (file)
@@ -1,3 +1,8 @@
+2005-11-26  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       PR libgfortran/24945
+       * io/open.c (edit_modes): Check for STATUS_UNKNOWN flag.
+       
 2005-11-25  Richard Henderson  <rth@redhat.com>
 
        * io/list_read.c (nml_parse_qualifier): Use memcpy to extract
index 5459509..7e42cc6 100644 (file)
@@ -144,9 +144,10 @@ edit_modes (st_parameter_open *opp, gfc_unit * u, unit_flags * flags)
 
   /* Status must be OLD if present.  */
 
-  if (flags->status != STATUS_UNSPECIFIED && flags->status != STATUS_OLD)
+  if (flags->status != STATUS_UNSPECIFIED && flags->status != STATUS_OLD &&
+      flags->status != STATUS_UNKNOWN)
     generate_error (&opp->common, ERROR_BAD_OPTION,
-                   "OPEN statement must have a STATUS of OLD");
+                   "OPEN statement must have a STATUS of OLD or UNKNOWN");
 
   if (u->flags.form == FORM_UNFORMATTED)
     {