* fhandler.h (fhandler_tty_slave): Declare new methods.

* select.cc (fhandler_tty_slave::select_read): New method.
* select.cc (fhandler_tty_slave::ready_for_read): Ditto.
* select.cc (verify_tty_slave): New function.
* fhandler_termios.cc (fhandler_termios::line_edit): Empty input
buffer on signal.
* fhandler_tty.cc (fhandler_tty_slave::read): Check for input data
after reading from pipe. Reset event if input pipe is empty.
* tty.h (class tty): Allow creating events with manual reset.
* tty.cc (tty::get_event): Use manual_reset flag.
* tty.cc (tty::common_init): Create input_available_event with
manual reset.
This commit is contained in:
Egor Duda
2001-03-18 18:05:01 +00:00
parent ca1cea7ed3
commit 5e8e21d938
7 changed files with 83 additions and 7 deletions

View File

@@ -325,13 +325,13 @@ tty::init (void)
}
HANDLE
tty::get_event (const char *fmt, BOOL inherit)
tty::get_event (const char *fmt, BOOL inherit, BOOL manual_reset)
{
HANDLE hev;
char buf[40];
__small_sprintf (buf, fmt, ntty);
if (!(hev = CreateEvent (inherit ? &sec_all : &sec_all_nih, FALSE, FALSE, buf)))
if (!(hev = CreateEvent (inherit ? &sec_all : &sec_all_nih, manual_reset, FALSE, buf)))
{
termios_printf ("couldn't create %s", buf);
set_errno (ENOENT); /* FIXME this can't be the right errno */
@@ -408,7 +408,7 @@ tty::common_init (fhandler_pty_master *ptym)
return FALSE;
}
if (!(ptym->input_available_event = get_event (INPUT_AVAILABLE_EVENT, FALSE)))
if (!(ptym->input_available_event = get_event (INPUT_AVAILABLE_EVENT, FALSE, TRUE)))
return FALSE;
char buf[40];