aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/io/open.c
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <coudert@clipper.ens.fr>2005-11-17 13:46:57 +0100
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2005-11-17 12:46:57 +0000
commit1c2e7a3ab332ecb47b606ce2400672eb6065e45f (patch)
treeb4222529fc4abf9ab78757cfd41d5b3ec666c05d /libgfortran/io/open.c
parent0bc52d42a8a8c376f9d13a9ea1d5739b6dc3a195 (diff)
downloadgcc-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.c14
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;