re PR fortran/44697 (I/O testsuite failures: \r\n vs \n - gfortran.dg/ftell_3.f90)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Wed, 21 Jul 2010 04:20:58 +0000 (04:20 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Wed, 21 Jul 2010 04:20:58 +0000 (04:20 +0000)
2010-07-20  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libfortran/44697
* gfortran.dg/ftell_3.f90: Take care of cr-lf record endings.

From-SVN: r162362

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/ftell_3.f90

index d5e1802..64bb994 100644 (file)
@@ -1,3 +1,8 @@
+2010-07-20  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libfortran/44697
+       * gfortran.dg/ftell_3.f90: Take care of cr-lf record endings.
+
 2010-07-20  Jeffrey Yasskin  <jyasskin@google.com>
 
        * lib/scanasm.exp (dg-function-on-line): Test that a function is
index c16afe8..16875d8 100644 (file)
@@ -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 @@ program ftell_3
   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()
-  end if
+  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
+  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