* fhandler.h (fhandler_termios::line_edit): Change return from an int to an
enum to allow the function to return an error. * fhandler_console.cc (fhandler_console::read): Update the line_edit call to use the new enum. * fhandler_termios.cc (fhandler_termios::line_edit): Change return from an int to an enum to allow the function to return an error. Put put_readahead call before doecho for future patch. * fhandler_tty.cc (fhandler_pty_master::write): Change to call line_edit one character at a time, and stop if an error occurs.
This commit is contained in:
@@ -186,9 +186,10 @@ fhandler_termios::echo_erase (int force)
|
||||
doecho ("\b \b", 3);
|
||||
}
|
||||
|
||||
int
|
||||
line_edit_status
|
||||
fhandler_termios::line_edit (const char *rptr, int nread, int always_accept)
|
||||
{
|
||||
line_edit_status ret = line_edit_ok;
|
||||
char c;
|
||||
int input_done = 0;
|
||||
bool sawsig = FALSE;
|
||||
@@ -321,20 +322,23 @@ fhandler_termios::line_edit (const char *rptr, int nread, int always_accept)
|
||||
if (tc->ti.c_iflag & IUCLC && isupper (c))
|
||||
c = cyg_tolower (c);
|
||||
|
||||
put_readahead (c);
|
||||
if (tc->ti.c_lflag & ECHO)
|
||||
doecho (&c, 1);
|
||||
put_readahead (c);
|
||||
}
|
||||
|
||||
if (!iscanon || always_accept)
|
||||
set_input_done (ralen > 0);
|
||||
|
||||
if (sawsig)
|
||||
input_done = -1;
|
||||
ret = line_edit_signalled;
|
||||
else if (input_done)
|
||||
(void) accept_input ();
|
||||
{
|
||||
ret = line_edit_input_done;
|
||||
(void) accept_input ();
|
||||
}
|
||||
|
||||
return input_done;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void
|
||||
|
Reference in New Issue
Block a user