diff options
author | Christopher Faylor <me@cgf.cx> | 2002-12-27 03:50:29 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-12-27 03:50:29 +0000 |
commit | 46b73ef192bc8e1ef3db88d1da99dfbe28bb371b (patch) | |
tree | 0df82ef446efc511b01e4cae86426ef1050f7115 /winsup/cygwin/fhandler_tty.cc | |
parent | 4a5c645e6280415fc3fab8d0ae8d1b2da129ee6c (diff) | |
download | cygnal-46b73ef192bc8e1ef3db88d1da99dfbe28bb371b.tar.gz cygnal-46b73ef192bc8e1ef3db88d1da99dfbe28bb371b.tar.bz2 cygnal-46b73ef192bc8e1ef3db88d1da99dfbe28bb371b.zip |
* fhandler.h (fhandler_termios::line_edit): Replace third argument with
passed-in termios struct.
* fhandler_console.cc (fhandler_console::read): Prior to loop, make a copy of
current termios for passing to line_edit prior so that all characters are
processed consistently.
* fhandler_tty.cc (fhandler_pty_master::write): Ditto.
(process_input): Make a copy of curent termios prior to read for use in
subsequent line_edit.
* fhandler_termios.cc (fhandler_termios::line_edit): Replace third parameter
with passed-in termios struct and use it throughout rather than the data from
the current fhandler_termios class.
Diffstat (limited to 'winsup/cygwin/fhandler_tty.cc')
-rw-r--r-- | winsup/cygwin/fhandler_tty.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index ef15f9f40..45afbcab1 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -198,8 +198,9 @@ process_input (void *) while (1) { size_t nraw = INP_BUFFER_SIZE; + termios ti = tty_master->get_ttyp ()->ti; tty_master->console->read ((void *) rawbuf, nraw); - (void) tty_master->line_edit (rawbuf, nraw); + (void) tty_master->line_edit (rawbuf, nraw, ti); } } @@ -1080,9 +1081,11 @@ fhandler_pty_master::write (const void *ptr, size_t len) { int i; char *p = (char *) ptr; - for (i=0; i < (int) len; i++) + termios ti = tc->ti; + + for (i = 0; i < (int) len; i++) { - line_edit_status status = line_edit (p++, 1); + line_edit_status status = line_edit (p++, 1, ti); if (status > line_edit_signalled) { if (status != line_edit_pipe_full) |