Use module 'EOVERFLOW' rather than defining an EOVERFLOW replacement in the C
[pspp] / lib / poll.c
index 2278aa8b31a4de43751c01f0906aca005dd579ca..b3eda5d3d445672fd690c3a9a30c7082b89c74d6 100644 (file)
@@ -1,7 +1,7 @@
 /* Emulation for poll(2)
    Contributed by Paolo Bonzini.
 
-   Copyright 2001, 2002, 2003, 2006, 2007 Free Software Foundation, Inc.
+   Copyright 2001, 2002, 2003, 2006, 2007, 2008 Free Software Foundation, Inc.
 
    This file is part of gnulib.
 
@@ -19,7 +19,7 @@
    with this program; if not, write to the Free Software Foundation,
    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 
-#include "config.h"
+#include <config.h>
 
 #include <sys/types.h>
 #include "poll.h"
@@ -43,8 +43,9 @@
 #define INFTIM (-1)
 #endif
 
-#ifndef EOVERFLOW
-#define EOVERFLOW EINVAL
+/* BeOS does not have MSG_PEEK.  */
+#ifndef MSG_PEEK
+#define MSG_PEEK 0
 #endif
 
 int
@@ -125,11 +126,16 @@ poll (pfd, nfd, timeout)
                               | POLLWRNORM | POLLWRBAND)))
        {
          maxfd = pfd[i].fd;
+
+         /* Windows use a linear array of sockets (of size FD_SETSIZE). The
+            descriptor value is not used to address the array.  */
+#if defined __CYGWIN__ || (!defined _WIN32 && !defined __WIN32__)
          if (maxfd > FD_SETSIZE)
            {
              errno = EOVERFLOW;
              return -1;
            }
+#endif
        }
     }