diff options
Diffstat (limited to 'winsup/cygwin/poll.cc')
-rw-r--r-- | winsup/cygwin/poll.cc | 88 |
1 files changed, 44 insertions, 44 deletions
diff --git a/winsup/cygwin/poll.cc b/winsup/cygwin/poll.cc index 92220f817..630560598 100644 --- a/winsup/cygwin/poll.cc +++ b/winsup/cygwin/poll.cc @@ -50,51 +50,51 @@ poll (struct pollfd *fds, unsigned int nfds, int timeout) memset (write_fds, 0, fds_size); memset (except_fds, 0, fds_size); - int invalid_fds = 0; - for (unsigned int i = 0; i < nfds; ++i) - { - fds[i].revents = 0; - if (!cygheap->fdtab.not_open(fds[i].fd)) - { - if (fds[i].events & POLLIN) - FD_SET(fds[i].fd, read_fds); - if (fds[i].events & POLLOUT) - FD_SET(fds[i].fd, write_fds); - if (fds[i].events & POLLPRI) - FD_SET(fds[i].fd, except_fds); - } - else if (fds[i].fd >= 0) - { - ++invalid_fds; - fds[i].revents = POLLNVAL; - } - } + int invalid_fds = 0; + for (unsigned int i = 0; i < nfds; ++i) + { + fds[i].revents = 0; + if (!cygheap->fdtab.not_open(fds[i].fd)) + { + if (fds[i].events & POLLIN) + FD_SET(fds[i].fd, read_fds); + if (fds[i].events & POLLOUT) + FD_SET(fds[i].fd, write_fds); + if (fds[i].events & POLLPRI) + FD_SET(fds[i].fd, except_fds); + } + else if (fds[i].fd >= 0) + { + ++invalid_fds; + fds[i].revents = POLLNVAL; + } + } - if (invalid_fds) - return invalid_fds; + if (invalid_fds) + return invalid_fds; - int ret = cygwin_select (max_fd + 1, read_fds, write_fds, except_fds, timeout < 0 ? NULL : &tv); + int ret = cygwin_select (max_fd + 1, read_fds, write_fds, except_fds, timeout < 0 ? NULL : &tv); - if (ret > 0) - for (unsigned int i = 0; i < nfds; ++i) - { - if (fds[i].fd >= 0) - { - if (cygheap->fdtab.not_open(fds[i].fd)) - fds[i].revents = POLLHUP; - else - { - if (FD_ISSET(fds[i].fd, read_fds)) - fds[i].revents |= POLLIN; - if (FD_ISSET(fds[i].fd, write_fds)) - fds[i].revents |= POLLOUT; - if (FD_ISSET(fds[i].fd, read_fds) && FD_ISSET(fds[i].fd, write_fds)) - fds[i].revents |= POLLERR; - if (FD_ISSET(fds[i].fd, except_fds)) - fds[i].revents |= POLLPRI; - } - } - } + if (ret > 0) + for (unsigned int i = 0; i < nfds; ++i) + { + if (fds[i].fd >= 0) + { + if (cygheap->fdtab.not_open(fds[i].fd)) + fds[i].revents = POLLHUP; + else + { + if (FD_ISSET(fds[i].fd, read_fds)) + fds[i].revents |= POLLIN; + if (FD_ISSET(fds[i].fd, write_fds)) + fds[i].revents |= POLLOUT; + if (FD_ISSET(fds[i].fd, read_fds) && FD_ISSET(fds[i].fd, write_fds)) + fds[i].revents |= POLLERR; + if (FD_ISSET(fds[i].fd, except_fds)) + fds[i].revents |= POLLPRI; + } + } + } - return ret; -} + return ret; +} |