* fhandler.cc (fhandler_base::get_readahead_into_buffer): New function.
* fhandler.h: Declare new function. Add extra argument to process_slave_output. * fhandler_console.cc (fhandler_console::read): Move read ahead code to new function. * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Move common code here. (fhandler_tty_slave::read): Understand readahead. (fhandler_pty_master::read): Move code to process_slave_output. * select.cc (peek_pipe): Avoid performing certain checks when non-read and on inappropriate fh types.
This commit is contained in:
@@ -409,20 +409,24 @@ peek_pipe (select_record *s, int ignra)
|
||||
if (!s->read_selected && !s->except_selected)
|
||||
goto out;
|
||||
|
||||
if (s->read_selected && fh->bg_check (SIGTTIN) <= 0)
|
||||
if (s->read_selected)
|
||||
{
|
||||
gotone = s->read_ready = 1;
|
||||
goto out;
|
||||
if (fh->bg_check (SIGTTIN) <= 0)
|
||||
{
|
||||
gotone = s->read_ready = 1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!ignra && fh->get_device () != FH_PTYM && fh->get_device () != FH_TTYM &&
|
||||
fh->get_readahead_valid ())
|
||||
{
|
||||
select_printf ("readahead");
|
||||
gotone = s->read_ready = 1;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
if (!ignra && fh->get_readahead_valid ())
|
||||
{
|
||||
select_printf ("readahead");
|
||||
gotone = s->read_ready = 1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
else if (!PeekNamedPipe (h, NULL, 0, NULL, (DWORD *) &n, NULL))
|
||||
if (!PeekNamedPipe (h, NULL, 0, NULL, (DWORD *) &n, NULL))
|
||||
{
|
||||
select_printf ("%s, PeekNamedPipe failed, %E", fh->get_name ());
|
||||
n = -1;
|
||||
|
Reference in New Issue
Block a user