projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
md5, sha1, sha256, sha512: add gl_SET_CRYPTO_CHECK_DEFAULT
[gnulib.git]
/
lib
/
poll.c
diff --git
a/lib/poll.c
b/lib/poll.c
index
780a6d6
..
2cf6829
100644
(file)
--- a/
lib/poll.c
+++ b/
lib/poll.c
@@
-1,7
+1,7
@@
/* Emulation for poll(2)
Contributed by Paolo Bonzini.
/* Emulation for poll(2)
Contributed by Paolo Bonzini.
- Copyright 2001-2003, 2006-201
2
Free Software Foundation, Inc.
+ Copyright 2001-2003, 2006-201
3
Free Software Foundation, Inc.
This file is part of gnulib.
This file is part of gnulib.
@@
-16,8
+16,7
@@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
/* Tell gcc not to warn about the (nfd < 0) tests, below. */
#if (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) || 4 < __GNUC__
/* Tell gcc not to warn about the (nfd < 0) tests, below. */
#if (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) || 4 < __GNUC__
@@
-73,7
+72,7
@@
/* Optimized test whether a HANDLE refers to a console.
See <http://lists.gnu.org/archive/html/bug-gnulib/2009-08/msg00065.html>. */
/* Optimized test whether a HANDLE refers to a console.
See <http://lists.gnu.org/archive/html/bug-gnulib/2009-08/msg00065.html>. */
-#define IsConsoleHandle(h) (((
long
) (h) & 3) == 3)
+#define IsConsoleHandle(h) (((
intptr_t
) (h) & 3) == 3)
static BOOL
IsSocketHandle (HANDLE h)
static BOOL
IsSocketHandle (HANDLE h)
@@
-304,6
+303,10
@@
compute_revents (int fd, int sought, fd_set *rfds, fd_set *wfds, fd_set *efds)
|| socket_errno == ECONNABORTED || socket_errno == ENETRESET)
happened |= POLLHUP;
|| socket_errno == ECONNABORTED || socket_errno == ENETRESET)
happened |= POLLHUP;
+ /* some systems can't use recv() on non-socket, including HP NonStop */
+ else if (socket_errno == ENOTSOCK)
+ happened |= (POLLIN | POLLRDNORM) & sought;
+
else
happened |= POLLERR;
}
else
happened |= POLLERR;
}
@@
-351,7
+354,7
@@
poll (struct pollfd *pfd, nfds_t nfd, int timeout)
/* EFAULT is not necessary to implement, but let's do it in the
simplest case. */
/* EFAULT is not necessary to implement, but let's do it in the
simplest case. */
- if (!pfd)
+ if (!pfd
&& nfd
)
{
errno = EFAULT;
return -1;
{
errno = EFAULT;
return -1;
@@
-599,7
+602,7
@@
restart:
if (!rc && timeout == INFTIM)
{
if (!rc && timeout == INFTIM)
{
- S
witchToThread(
);
+ S
leepEx (1, TRUE
);
goto restart;
}
goto restart;
}