re PR libfortran/24892 (ACCESS argument to the OPEN statement)
PR fortran/24892 * io/io.h (unit_access): Add ACCESS_APPEND. * io/open.c (access_opt): Add APPEND value for ACCESS keyword. (st_open): Use that new value to set the POSITION accordingly. * gfortran.dg/open_access_append_1.f90: New test. * gfortran.dg/open_access_append_2.f90: New test. From-SVN: r107119
This commit is contained in:
parent
0bc52d42a8
commit
1c2e7a3ab3
@ -1,3 +1,9 @@
|
||||
2005-11-17 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||
|
||||
PR fortran/24892
|
||||
* gfortran.dg/open_access_append_1.f90: New test.
|
||||
* gfortran.dg/open_access_append_2.f90: New test.
|
||||
|
||||
2005-11-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/24851
|
||||
|
20
gcc/testsuite/gfortran.dg/open_access_append_1.f90
Normal file
20
gcc/testsuite/gfortran.dg/open_access_append_1.f90
Normal file
@ -0,0 +1,20 @@
|
||||
! { dg-do run }
|
||||
! Testcase for the GNU extension OPEN(...,ACCESS="APPEND")
|
||||
open (10,file="foo")
|
||||
close (10,status="delete")
|
||||
|
||||
open (10,file="foo",access="append") ! { dg-output ".*Extension.*" }
|
||||
write (10,*) 42
|
||||
close (10,status="keep")
|
||||
open (10,file="foo",access="append") ! { dg-output ".*Extension.*" }
|
||||
write (10,*) -42
|
||||
close (10,status="keep")
|
||||
|
||||
open (10,file="foo")
|
||||
read (10,*) i
|
||||
if (i /= 42) call abort
|
||||
read (10,*) i
|
||||
if (i /= -42) call abort
|
||||
close (10,status="delete")
|
||||
|
||||
end
|
5
gcc/testsuite/gfortran.dg/open_access_append_2.f90
Normal file
5
gcc/testsuite/gfortran.dg/open_access_append_2.f90
Normal file
@ -0,0 +1,5 @@
|
||||
! { dg-do run }
|
||||
! Testcase for the GNU extension OPEN(...,ACCESS="APPEND")
|
||||
open (10,err=900,access="append",position="asis") ! { dg-output ".*Extension.*" }
|
||||
call abort
|
||||
900 end
|
@ -1,3 +1,10 @@
|
||||
2005-11-17 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||
|
||||
PR fortran/24892
|
||||
* io/io.h (unit_access): Add ACCESS_APPEND.
|
||||
* io/open.c (access_opt): Add APPEND value for ACCESS keyword.
|
||||
(st_open): Use that new value to set the POSITION accordingly.
|
||||
|
||||
2005-11-14 Janne Blomqvist <jb@gcc.gnu.org>
|
||||
|
||||
PR fortran/21468
|
||||
|
@ -153,7 +153,7 @@ namelist_info;
|
||||
/* Options for the OPEN statement. */
|
||||
|
||||
typedef enum
|
||||
{ ACCESS_SEQUENTIAL, ACCESS_DIRECT,
|
||||
{ ACCESS_SEQUENTIAL, ACCESS_DIRECT, ACCESS_APPEND,
|
||||
ACCESS_UNSPECIFIED
|
||||
}
|
||||
unit_access;
|
||||
|
@ -39,6 +39,7 @@ Boston, MA 02110-1301, USA. */
|
||||
static const st_option access_opt[] = {
|
||||
{"sequential", ACCESS_SEQUENTIAL},
|
||||
{"direct", ACCESS_DIRECT},
|
||||
{"append", ACCESS_APPEND},
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
@ -486,6 +487,19 @@ st_open (void)
|
||||
generate_error (ERROR_BAD_OPTION,
|
||||
"Cannot use POSITION with direct access files");
|
||||
|
||||
if (flags.access == ACCESS_APPEND)
|
||||
{
|
||||
if (flags.position != POSITION_UNSPECIFIED
|
||||
&& flags.position != POSITION_APPEND)
|
||||
generate_error (ERROR_BAD_OPTION, "Conflicting ACCESS and POSITION "
|
||||
"flags in OPEN statement");
|
||||
|
||||
notify_std (GFC_STD_GNU,
|
||||
"Extension: APPEND as a value for ACCESS in OPEN statement");
|
||||
flags.access = ACCESS_SEQUENTIAL;
|
||||
flags.position = POSITION_APPEND;
|
||||
}
|
||||
|
||||
if (flags.position == POSITION_UNSPECIFIED)
|
||||
flags.position = POSITION_ASIS;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user