diff options
author | Christopher Faylor <me@cgf.cx> | 2002-12-14 19:40:41 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-12-14 19:40:41 +0000 |
commit | bd2001aec07451e28c3ea5370af7b3caa867461a (patch) | |
tree | 13c6de8ddf5a524c5e98908987ee336071c8bc66 | |
parent | 373c3857c2e62f045fe70eee97fd9035b03cabd7 (diff) | |
download | newlib-bd2001aec07451e28c3ea5370af7b3caa867461a.zip newlib-bd2001aec07451e28c3ea5370af7b3caa867461a.tar.gz newlib-bd2001aec07451e28c3ea5370af7b3caa867461a.tar.bz2 |
* fhandler_termios.cc (fhandler_termios::line_edit): Call accept_input() in
character processing loop. Set return value independently of input_done.
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_termios.cc | 18 |
2 files changed, 16 insertions, 8 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index d932e9c..c19dfdb 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2002-12-14 Steve Osborn <bub@io.com> + + * fhandler_termios.cc (fhandler_termios::line_edit): Call + accept_input() in character processing loop. Set return value + independently of input_done. + 2002-12-14 Christopher Faylor <cgf@redhat.com> * fhandler.cc (fhandler_base::read): Signal event, if necessary, and diff --git a/winsup/cygwin/fhandler_termios.cc b/winsup/cygwin/fhandler_termios.cc index 6fa5cf9..16a826b 100644 --- a/winsup/cygwin/fhandler_termios.cc +++ b/winsup/cygwin/fhandler_termios.cc @@ -308,7 +308,8 @@ fhandler_termios::line_edit (const char *rptr, int nread, int always_accept) else if (CCEQ (tc->ti.c_cc[VEOF], c)) { termios_printf ("EOF"); - input_done = 1; + (void) accept_input(); + ret = line_edit_input_done; continue; } else if (CCEQ (tc->ti.c_cc[VEOL], c) || @@ -323,20 +324,21 @@ fhandler_termios::line_edit (const char *rptr, int nread, int always_accept) c = cyg_tolower (c); put_readahead (c); + if (!iscanon || always_accept || input_done) + { + (void) accept_input(); + ret = line_edit_input_done; + input_done = 0; + } if (tc->ti.c_lflag & ECHO) doecho (&c, 1); } - if (!iscanon || always_accept) - set_input_done (ralen > 0); + if ((!iscanon || always_accept) && ralen > 0) + ret = line_edit_input_done; if (sawsig) ret = line_edit_signalled; - else if (input_done) - { - ret = line_edit_input_done; - (void) accept_input (); - } return ret; } |