Commit 35713675 by Janne Blomqvist

Don't update the position flag for non-seekable files, check for stell() error.

From-SVN: r162810
parent 0093ddee
2010-08-02 Janne Blomqvist <jb@gcc.gnu.org>
* io/unit.c (update_position): Don't update the position flag for
non-seekable files, check for stell() error.
2010-08-01 Janne Blomqvist <jb@gcc.gnu.org> 2010-08-01 Janne Blomqvist <jb@gcc.gnu.org>
* io/unix.c (file_exists): Use access(2) instead of stat(2) to * io/unix.c (file_exists): Use access(2) instead of stat(2) to
......
...@@ -714,12 +714,19 @@ close_units (void) ...@@ -714,12 +714,19 @@ close_units (void)
void void
update_position (gfc_unit *u) update_position (gfc_unit *u)
{ {
if (stell (u->s) == 0) /* If unit is not seekable, this makes no sense (and the standard is
u->flags.position = POSITION_REWIND; silent on this matter), and thus we don't change the position for
else if (file_length (u->s) == stell (u->s)) a non-seekable file. */
u->flags.position = POSITION_APPEND; if (is_seekable (u->s))
else {
u->flags.position = POSITION_ASIS; gfc_offset cur = stell (u->s);
if (cur == 0)
u->flags.position = POSITION_REWIND;
else if (cur != -1 && (file_length (u->s) == cur))
u->flags.position = POSITION_APPEND;
else
u->flags.position = POSITION_ASIS;
}
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment