Commit da32fddc by Francois-Xavier Coudert Committed by François-Xavier Coudert

re PR libfortran/21471 ('POSITION = "APPEND"' doesn't seem to work)

	PR libfortran/21471
	* open.c (new_unit): Take care of the case where POSITION_APPEND
	is specified (sseek to the end, and set u>-endfile).
	* gfortran.dg/append-1.f90: New test.

From-SVN: r99560
parent 939176ab
2005-05-10 Francois-Xavier Coudert <coudert@clipper.ens.fr>
PR libfortran/21471
* gfortran.dg/append-1.f90: New test.
2005-05-10 Diego Novillo <dnovillo@redhat.com>
* gcc.dg/pr18501.c: XFAIL.
......
! PR libfortran/21471
! Testing POSITION="APPEND"
!
! { dg-do run }
subroutine failed
close (10,status='delete')
call abort
end subroutine failed
integer,parameter :: n = 13
integer :: i, j, error
open (10, file='foo')
close (10)
do i = 1, n
open (10, file='foo',position='append')
write (10,*) i
close (10)
end do
open (10,file='foo',status='old')
error = 0
i = -1
do while (error == 0)
i = i + 1
read (10,*,iostat=error) j
if (error == 0) then
if (i + 1 /= j) call failed
end if
if (i > n + 1) call failed
end do
if (i /= n) call failed
close (10,status='delete')
end
2005-05-10 Francois-Xavier Coudert <coudert@clipper.ens.fr>
PR libfortran/21471
* open.c (new_unit): Take care of the case where POSITION_APPEND
is specified (sseek to the end, and set u>-endfile).
2005-05-10 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/20178
......
......@@ -356,6 +356,13 @@ new_unit (unit_flags * flags)
u->s = s;
u->flags = *flags;
if (flags->position == POSITION_APPEND)
{
if (sseek (u->s, file_length (u->s)) == FAILURE)
generate_error (ERROR_OS, NULL);
u->endfile = AT_ENDFILE;
}
/* Unspecified recl ends up with a processor dependent value. */
u->recl = (ioparm.recl_in != 0) ? ioparm.recl_in : g.max_offset;
......
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