re PR libfortran/31052 ([4.2 only] Bad IOSTAT values when readings NAMELISTs past EOF)
2007-03-22 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/31052 * file_pos.c: Update Copyright year. * io/open.c (test_endfile): Restore test_endfile to fix SPEC regression. Update Copyright year. * io/io.h: Same. * io/unix.c (is_special): Add missing type for this function. Update Copyright year. * io/transfer.c (next_record_r): Restore test_endfile. (st_read): Fix whitespace. Update Copyright year From-SVN: r123139
This commit is contained in:
parent
46ecc2bc5c
commit
9a7b6ea727
@ -1,3 +1,15 @@
|
||||
2007-03-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR libgfortran/31052
|
||||
* file_pos.c: Update Copyright year.
|
||||
* io/open.c (test_endfile): Restore test_endfile to fix SPEC regression.
|
||||
Update Copyright year.
|
||||
* io/io.h: Same.
|
||||
* io/unix.c (is_special): Add missing type for this function.
|
||||
Update Copyright year.
|
||||
* io/transfer.c (next_record_r): Restore test_endfile.
|
||||
(st_read): Fix whitespace. Update Copyright year
|
||||
|
||||
2007-03-20 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||
|
||||
* configure.ac: Add missing check for gettimeofday.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2002-2003, 2005, 2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002-2003, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
Contributed by Andy Vaught and Janne Blomqvist
|
||||
|
||||
This file is part of the GNU Fortran runtime library (libgfortran).
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Andy Vaught
|
||||
|
||||
This file is part of the GNU Fortran 95 runtime library (libgfortran).
|
||||
@ -694,6 +695,9 @@ internal_proto(unlock_unit);
|
||||
|
||||
/* open.c */
|
||||
|
||||
extern void test_endfile (gfc_unit *);
|
||||
internal_proto(test_endfile);
|
||||
|
||||
extern gfc_unit *new_unit (st_parameter_open *, gfc_unit *, unit_flags *);
|
||||
internal_proto(new_unit);
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2002, 2003, 2004, 2005
|
||||
/* Copyright (C) 2002, 2003, 2004, 2005, 2007
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Andy Vaught
|
||||
|
||||
@ -109,6 +109,19 @@ static const st_option convert_opt[] =
|
||||
{ NULL, 0}
|
||||
};
|
||||
|
||||
/* Given a unit, test to see if the file is positioned at the terminal
|
||||
point, and if so, change state from NO_ENDFILE flag to AT_ENDFILE.
|
||||
This prevents us from changing the state from AFTER_ENDFILE to
|
||||
AT_ENDFILE. */
|
||||
|
||||
void
|
||||
test_endfile (gfc_unit * u)
|
||||
{
|
||||
if (u->endfile == NO_ENDFILE && file_length (u->s) == file_position (u->s))
|
||||
u->endfile = AT_ENDFILE;
|
||||
}
|
||||
|
||||
|
||||
/* Change the modes of a file, those that are allowed * to be
|
||||
changed. */
|
||||
|
||||
@ -195,6 +208,8 @@ edit_modes (st_parameter_open *opp, gfc_unit * u, unit_flags * flags)
|
||||
|
||||
u->current_record = 0;
|
||||
u->last_record = 0;
|
||||
|
||||
test_endfile (u); /* We might be at the end. */
|
||||
break;
|
||||
|
||||
case POSITION_APPEND:
|
||||
@ -471,6 +486,13 @@ new_unit (st_parameter_open *opp, gfc_unit *u, unit_flags * flags)
|
||||
memmove (u->file, opp->file, opp->file_len);
|
||||
u->file_len = opp->file_len;
|
||||
|
||||
/* Curiously, the standard requires that the
|
||||
position specifier be ignored for new files so a newly connected
|
||||
file starts out at the initial point. We still need to figure
|
||||
out if the file is at the end or not. */
|
||||
|
||||
test_endfile (u);
|
||||
|
||||
if (flags->status == STATUS_SCRATCH && opp->file != NULL)
|
||||
free_mem (opp->file);
|
||||
return u;
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Andy Vaught
|
||||
Namelist transfer functions contributed by Paul Thomas
|
||||
|
||||
@ -2222,6 +2223,9 @@ next_record_r (st_parameter_dt *dtp)
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (dtp->u.p.current_unit->flags.access == ACCESS_SEQUENTIAL)
|
||||
test_endfile (dtp->u.p.current_unit);
|
||||
}
|
||||
|
||||
|
||||
@ -2681,7 +2685,7 @@ st_read (st_parameter_dt *dtp)
|
||||
|
||||
data_transfer_init (dtp, 1);
|
||||
|
||||
/* Handle complications dealing with the endfile record. */
|
||||
/* Handle complications dealing with the endfile record. */
|
||||
|
||||
if (dtp->u.p.current_unit->flags.access == ACCESS_SEQUENTIAL)
|
||||
switch (dtp->u.p.current_unit->endfile)
|
||||
|
@ -1892,6 +1892,7 @@ is_seekable (stream *s)
|
||||
|
||||
/* is_special()-- Return nonzero if the stream is not a regular file. */
|
||||
|
||||
int
|
||||
is_special (stream *s)
|
||||
{
|
||||
return ((unix_stream *) s)->special_file;
|
||||
|
Loading…
Reference in New Issue
Block a user