From: Christopher Faylor Date: Tue, 25 Sep 2001 06:19:10 +0000 (+0000) Subject: * select.cc (fhandler_tty_common::ready_for_read): Rewrite to correctly X-Git-Tag: cygnus_cvs_20020108_pre~383 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=79776fc2cca50beff0281ccf0db942a0fb170c4a;p=newlib-cygwin.git * select.cc (fhandler_tty_common::ready_for_read): Rewrite to correctly call peek_pipe. --- diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 5c438d30e..ca76a3558 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +Tue Sep 25 02:09:42 2001 Christopher Faylor + + * select.cc (fhandler_tty_common::ready_for_read): Rewrite to correctly + call peek_pipe. + Mon Sep 24 18:46:39 2001 Christopher Faylor * select.cc (peek_pipe): Only grab mutex when we actually got something diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index 6520f4b70..bef4e8ac0 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -496,6 +496,7 @@ poll_pipe (select_record *me, fd_set *readfds, fd_set *writefds, set_bits (me, readfds, writefds, exceptfds) : 0; } + int fhandler_pipe::ready_for_read (int fd, DWORD howlong, int ignra) { @@ -745,12 +746,16 @@ fhandler_console::select_except (select_record *s) int fhandler_tty_common::ready_for_read (int fd, DWORD howlong, int ignra) { -#if 0 - if (myself->pgid && get_ttyp ()->getpgid () != myself->pgid && - myself->ctty == ttynum) // background process? - return 1; // Yes. Let read return an error -#endif - return ((fhandler_pipe*)this)->fhandler_pipe::ready_for_read (fd, howlong, ignra); + select_record me (this); + me.fd = fd; + (void) select_read (&me); + while (!peek_pipe (&me, ignra) && howlong == INFINITE) + if (fd >= 0 && cygheap->fdtab.not_open (fd)) + break; + else if (WaitForSingleObject (signal_arrived, 10) == WAIT_OBJECT_0) + break; + select_printf ("returning %d", me.read_ready); + return me.read_ready; } select_record *