------- Comment #3 from jvdelisle at gcc dot gnu dot org 2010-07-20 04:35 ------- Kai, would you test this for me please.
Index: ftell_3.f90 =================================================================== --- ftell_3.f90 (revision 162291) +++ ftell_3.f90 (working copy) @@ -3,9 +3,10 @@ ! Contributed by Janne Blomqvist, Manfred Schwarb ! and Dominique d'Humieres. program ftell_3 - integer :: i + integer :: i, j + character(1) :: ch character(len=99) :: buffer - open(10, form='formatted', status='scratch', position='rewind') + open(10, form='formatted', position='rewind') write(10, '(a)') '123456' write(10, '(a)') '789' write(10, '(a)') 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC' @@ -13,16 +14,29 @@ rewind(10) read(10, '(a)') buffer call ftell(10, i) - if(i /= 7) then - call abort() +! Expected: On '\n' systems: 7, on \r\n systems: 8 + if(i /= 7 .and. i /= 8) then + call abort end if read(10,'(a)') buffer if (trim(buffer) /= "789") then call abort() end if - call ftell(10,i) - if (i /= 11) then - call abort() + call ftell(10,j) + close(10) + open(10, access="stream") +! Expected: On '\n' systems: 11, on \r\n systems: 13 + if (i == 7) then + read(10, pos=7) ch + if (ch /= char(10)) call abort + if (j /= 11) call abort end if - close(10) + if (i == 8) then + read(10, pos=7) ch + if (ch /= char(13)) call abort + read(10) ch + if (ch /= char(10)) call abort + if (j /= 13) call abort + end if + close(10, status="delete") end program ftell_3 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44697