mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-09 20:37:45 +08:00
Don't update the position flag for non-seekable files, check for stell() error.
From-SVN: r162810
This commit is contained in:
parent
0093ddee96
commit
3571367557
@ -1,3 +1,8 @@
|
||||
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>
|
||||
|
||||
* io/unix.c (file_exists): Use access(2) instead of stat(2) to
|
||||
|
@ -714,12 +714,19 @@ close_units (void)
|
||||
void
|
||||
update_position (gfc_unit *u)
|
||||
{
|
||||
if (stell (u->s) == 0)
|
||||
u->flags.position = POSITION_REWIND;
|
||||
else if (file_length (u->s) == stell (u->s))
|
||||
u->flags.position = POSITION_APPEND;
|
||||
else
|
||||
u->flags.position = POSITION_ASIS;
|
||||
/* If unit is not seekable, this makes no sense (and the standard is
|
||||
silent on this matter), and thus we don't change the position for
|
||||
a non-seekable file. */
|
||||
if (is_seekable (u->s))
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user