diff options
author | Francois-Xavier Coudert <coudert@clipper.ens.fr> | 2005-11-17 13:46:57 +0100 |
---|---|---|
committer | François-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2005-11-17 12:46:57 +0000 |
commit | 1c2e7a3ab332ecb47b606ce2400672eb6065e45f (patch) | |
tree | b4222529fc4abf9ab78757cfd41d5b3ec666c05d /libgfortran/io/open.c | |
parent | 0bc52d42a8a8c376f9d13a9ea1d5739b6dc3a195 (diff) | |
download | gcc-1c2e7a3ab332ecb47b606ce2400672eb6065e45f.zip gcc-1c2e7a3ab332ecb47b606ce2400672eb6065e45f.tar.gz gcc-1c2e7a3ab332ecb47b606ce2400672eb6065e45f.tar.bz2 |
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
Diffstat (limited to 'libgfortran/io/open.c')
-rw-r--r-- | libgfortran/io/open.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/libgfortran/io/open.c b/libgfortran/io/open.c index 203964b..c3b5dde 100644 --- a/libgfortran/io/open.c +++ b/libgfortran/io/open.c @@ -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; |