]> sourceware.org Git - newlib-cygwin.git/commitdiff
* select.cc (fhandler_tty_common::ready_for_read): Rewrite to correctly
authorChristopher Faylor <me@cgf.cx>
Tue, 25 Sep 2001 06:19:10 +0000 (06:19 +0000)
committerChristopher Faylor <me@cgf.cx>
Tue, 25 Sep 2001 06:19:10 +0000 (06:19 +0000)
call peek_pipe.

winsup/cygwin/ChangeLog
winsup/cygwin/select.cc

index 5c438d30e770384d18d11ec12c5657e2e86b7a31..ca76a3558e09c1c6b77e89ed0b59cfa687865564 100644 (file)
@@ -1,3 +1,8 @@
+Tue Sep 25 02:09:42 2001  Christopher Faylor <cgf@redhat.com>
+
+       * select.cc (fhandler_tty_common::ready_for_read): Rewrite to correctly
+       call peek_pipe.
+
 Mon Sep 24 18:46:39 2001  Christopher Faylor <cgf@cygnus.com>
 
        * select.cc (peek_pipe): Only grab mutex when we actually got something
index 6520f4b705d8185c3e381742d498e5a8876e7008..bef4e8ac00d776d1852e50b5b566e580c80b70a9 100644 (file)
@@ -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 *
This page took 0.035106 seconds and 5 git commands to generate.