http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30162



--- Comment #28 from Thomas Koenig <tkoenig at gcc dot gnu.org> 2012-11-24 
12:05:57 UTC ---

(In reply to comment #27)

> (In reply to comment #26)

> > Is this caused by

> > 

> > http://gcc.gnu.org/viewcvs?view=revision&revision=180701

> > 

> > ?

> > 

> > Maybe we need to remember if we have a special file after all, or just 
> > ignore

> > the error on the truncate.

> 

> IMHO the correct fix is to not seek and/or truncate the file unless the 
> Fortran

> semantics require it; that way libgfortran does not need to care whether the

> file is special or not. As explained in #c23, special files are special in

> different ways (also different on different OS'es), and trying to enumerate 
> all

> the ways in which they are special is bound to fail. 

> 

> I think Tobias comment #c24 pinpoints the place which needs to be fixed, but

> unfortunately I haven't had time to look into it.



Well, we need to make sure that the (very basic) program



      program main

      character*10 x

      open(10,file="foo.dat")

      write (10,'(A)') '1111'

      write (10,'(A)') '2222'

      close (10)

      open(10,file="foo.dat")

      write (10,'(A)') '3333'

      close (10)

      open(10,file="foo.dat")

 100  continue

        read (10,'(A)',end=200) x

        write (*,'(A)') x

      goto 100

 200  continue

      close(10,status="delete")

      end



continues to work as expected: That probably means truncating on

close and rewind.



I can see what I can do, but I have little time... (as always)

Reply via email to