X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/cf7fe8a27ac6ee8776974a7c83e80425f2ec0ff8..b76f91fcea858b4c9ff8318bb0e9892afb37cbc8:/ext/IO/poll.c diff --git a/ext/IO/poll.c b/ext/IO/poll.c index 50a5151..9d39d57 100644 --- a/ext/IO/poll.c +++ b/ext/IO/poll.c @@ -5,13 +5,15 @@ * This program is free software; you can redistribute it and/or * modify it under the same terms as Perl itself. * - * For systems that do not have the poll() system call (for example Linux) - * try to emulate it as closely as possible using select() + * For systems that do not have the poll() system call (for example Linux + * kernels < v2.1.23) try to emulate it as closely as possible using select() * */ #include "EXTERN.h" #include "perl.h" +#include "XSUB.h" + #include "poll.h" #ifdef I_SYS_TIME # include @@ -20,12 +22,18 @@ # include #endif #include -#if defined(HAS_SOCKET) && !defined(VMS) /* VMS handles sockets via vmsish.h */ +#if defined(HAS_SOCKET) && !defined(VMS) && !defined(ultrix) /* VMS handles sockets via vmsish.h, ULTRIX dies of socket struct redefinitions */ # include #endif #include #include +#ifdef HAS_SELECT +#ifdef I_SYS_SELECT +#include +#endif +#endif + #ifdef EMULATE_POLL_WITH_SELECT # define POLL_CAN_READ (POLLIN | POLLRDNORM ) @@ -35,10 +43,7 @@ # define POLL_EVENTS_MASK (POLL_CAN_READ | POLL_CAN_WRITE | POLL_HAS_EXCP) int -poll(fds, nfds, timeout) -struct pollfd *fds; -unsigned long nfds; -int timeout; +poll(struct pollfd *fds, unsigned long nfds, int timeout) { int i,err; fd_set rfd,wfd,efd,ifd; @@ -55,7 +60,7 @@ again: FD_ZERO(&wfd); FD_ZERO(&efd); - for(i = 0 ; i < nfds ; i++) { + for(i = 0 ; i < (int)nfds ; i++) { int events = fds[i].events; int fd = fds[i].fd; @@ -102,7 +107,7 @@ again: count = 0; - for(i = 0 ; i < nfds ; i++) { + for(i = 0 ; i < (int)nfds ; i++) { int revents = (fds[i].events & POLL_EVENTS_MASK); int fd = fds[i].fd; @@ -130,3 +135,12 @@ again: } #endif /* EMULATE_POLL_WITH_SELECT */ + +/* gcc for SunOS 4 produces code from an empty (code/symbolwise) + * source code file that makes the SunOS 4.x /usr/bin/ld fail with + * ld: poll.o: premature EOF + * To avoid this, have at least something in here. */ +#if defined(__sun) && !defined(__SVR4) && defined(__GNUC__) +static int dummy; +#endif +