Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2001-08-29 00:38:07 +0400
committerChristopher Faylor <me@cgf.cx>2001-08-29 00:38:07 +0400
commitffe94510f526c1f0115f5bb2c5e206303e45b216 (patch)
tree094315c720596c94d497445d582376b62b4b934d /winsup/cygwin/select.cc
parent34971f0f8cff99825a130a47a329d96d67095edd (diff)
* dir.cc (rmdir): Report ENOENT when file doesn't exist rather than ENOTDIR.
Diffstat (limited to 'winsup/cygwin/select.cc')
-rw-r--r--winsup/cygwin/select.cc21
1 files changed, 14 insertions, 7 deletions
diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc
index 42762baa5..6914cd236 100644
--- a/winsup/cygwin/select.cc
+++ b/winsup/cygwin/select.cc
@@ -168,7 +168,8 @@ cygwin_select (int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
/* Degenerate case. No fds to wait for. Just wait. */
if (sel.start.next == NULL)
{
- if (WaitForSingleObject (signal_arrived, ms) == WAIT_OBJECT_0)
+ if (readfds != dummy_readfds && writefds != dummy_writefds && exceptfds != dummy_exceptfds &&
+ WaitForSingleObject (signal_arrived, ms) == WAIT_OBJECT_0)
{
select_printf ("signal received");
set_sig_errno (EINTR);
@@ -480,9 +481,12 @@ static int
poll_pipe (select_record *me, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds)
{
- return peek_pipe (me, 0) ?
- set_bits (me, readfds, writefds, exceptfds) :
- 0;
+ int doit = me->read_ready || me->write_ready || me->except_ready;
+
+ if (!doit)
+ peek_pipe (me, 0);
+
+ return doit ? set_bits (me, readfds, writefds, exceptfds) : 0;
}
MAKEready(pipe)
@@ -1188,9 +1192,12 @@ static int
poll_socket (select_record *me, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds)
{
- return peek_socket (me, 0) ?
- set_bits (me, readfds, writefds, exceptfds) :
- 0;
+ int doit = me->read_ready || me->write_ready || me->except_ready;
+
+ if (!doit)
+ peek_socket (me, 0);
+
+ return doit ? set_bits (me, readfds, writefds, exceptfds) : 0;
}
MAKEready (socket)