On all fortran compilers I could test, the following does what is expected (that is, pressing the enter key prints "well done"). gfortran waits for a non-newline character: program testRead implicit none character(1) resp write (*,'('' hit return: '',$)') read (*,'(a)') resp write (*,'('' well done.'')') end
Confirmed.
I believe this bug, PR 20092 and PR 20131 are duplicates. We will be sure when they get fixed, but I mention this here for the record. I may not have time to work on this before a few weeks, but this shouldn't be too hard to fix.
Subject: Bug 20005 CVSROOT: /cvs/gcc Module name: gcc Changes by: tkoenig@gcc.gnu.org 2005-04-10 08:35:40 Modified files: libgfortran : ChangeLog libgfortran/io : transfer.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/gfortran.dg: eor_handling_1.f90 eor_handling_2.f90 eor_handling_3.f90 eor_handling_4.f90 eor_handling_5.f90 noadv_size.f90 pad_no.f90 Log message: 2005-04-10 Thomas Koenig <Thomas.Koenig@online.de> PR libfortran/17992 PR libfortran/19568 PR libfortran/19595 PR libfortran/20005 PR libfortran/20092 PR libfortran/20131 PR libfortran/20138 PR libfortran/20661 PR libfortran/20744 * io/transfer.c (top level): eor_condition: New static variable. (read_sf): Remove unnecessary zeroing of buffer (there is enough information in its length). Return a string of length 0 (to be padded by caller) if EOR was seen previously. Remove erroneous special casing of EOR for standard input. Set eor_condition for non-advancing I/O if an end of line was detected. Increment ioparm.size if necessary. (formatted_transfer): Skip the function if there is an EOR condition. (data_transfer_init): Initialize eor_condition to zero (false). (next_record_r): Clear sf_seen_eor if a \n has been seen already. (finalize_transfer): If there is an EOR condition, raise the error. 2005-04-10 Thomas Koenig <Thomas.Koenig@online.de> * eor_handling_1.f90: New test case. * eor_handling_2.f90: New test case. * eor_handling_3.f90: New test case. * eor_handling_4.f90: New test case. * eor_handling_5.f90: New test case. * noadv_size.f90: New test case. * pad_no.f90: New test case. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/ChangeLog.diff?cvsroot=gcc&r1=1.188&r2=1.189 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/transfer.c.diff?cvsroot=gcc&r1=1.35&r2=1.36 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5320&r2=1.5321 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/eor_handling_1.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/eor_handling_2.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/eor_handling_3.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/eor_handling_4.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/eor_handling_5.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/noadv_size.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pad_no.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
Fixed in 4.1.0, waiting for 4.0 to reopen.
Subject: Bug 20005 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-4_0-branch Changes by: tkoenig@gcc.gnu.org 2005-05-03 19:39:36 Modified files: libgfortran : ChangeLog libgfortran/io : transfer.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/gfortran.dg: eor_handling_1.f90 eor_handling_2.f90 eor_handling_3.f90 eor_handling_4.f90 eor_handling_5.f90 noadv_size.f90 pad_no.f90 Log message: 2005-05-03 Thomas Koenig <Thomas.Koenig@online.de> Backport from mainline: PR libfortran/17992 PR libfortran/19568 PR libfortran/19595 PR libfortran/20005 PR libfortran/20092 PR libfortran/20131 PR libfortran/20661 PR libfortran/20744 * io/transfer.c (top level): eor_condition: New static variable. (read_sf): Remove unnecessary zeroing of buffer (there is enough information in its length). Return a string of length 0 (to be padded by caller) if EOR was seen previously. Remove erroneous special casing of EOR for standard input. Set eor_condition for non-advancing I/O if an end of line was detected. Increment ioparm.size if necessary. (formatted_transfer): Skip the function if there is an EOR condition. (data_transfer_init): Initialize eor_condition to zero (false). (next_record_r): Clear sf_seen_eor if a \n has been seen already. (finalize_transfer): If there is an EOR condition, raise the error. 2005-05-03 Thomas Koenig <Thomas.Koenig@online.de> Backport from mainline: * eor_handling_1.f90: New test case. * eor_handling_2.f90: New test case. * eor_handling_3.f90: New test case. * eor_handling_4.f90: New test case. * eor_handling_5.f90: New test case. * noadv_size.f90: New test case. * pad_no.f90: New test case. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.163.2.22&r2=1.163.2.23 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/transfer.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.32.2.2&r2=1.32.2.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5084.2.156&r2=1.5084.2.157 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/eor_handling_1.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/eor_handling_2.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/eor_handling_3.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/eor_handling_4.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/eor_handling_5.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/noadv_size.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pad_no.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1
Patch committed to 4.0.1. Fixed.