[patch, libgfortran] PR46800 Handle CTRL-D correctly with STDIN

Jerry DeLisle jvdelisle@charter.net
Sun Mar 16 22:51:00 GMT 2014


Hi all.

The problem here was that when reading a value from STDIN and the user just
entered an empty entry (LF),
we would end up getting nested into a second read (via next_char) and the user
would have to press CTRL-D twice to get out of the read. (The correct behavior
is to only hit CTRL-D once which sends us the EOF.

This was caused by a call to eat_separator right after we did the initial read.
 The eat_separator function then tries to read again and we get a condition of
waiting for user input on that read.  The patch eliminates this call to
eat_separator. This requires explicitly checking for the comma and end-of-line
conditions which are also done in eat_separator.

Regression tested on x86-64-gnu.  No test case can be done since it require
terminal input to read.

OK for trunk?

Regards,

Jerry

2014-03-16  Jerry DeLisle  <jvdelisle@gcc.gnu>

	PR libfortran/58324
	* io/list_read.c (list_formatted_read_scalar): Do not use
	eat_separator. Explicitly set the comma and end-of-line flags.
	Check for END condition from finish_separator.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pr46800_B.diff
Type: text/x-patch
Size: 1246 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20140316/a3260c36/attachment.bin>


More information about the Fortran mailing list