X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=win32%2Fwin32sck.c;h=2427cb3af4e05f7a59bfb2f29492d7de252ee78b;hb=4497a157d1131e07b218838ce27e77bd3ed118d0;hp=8656c0bd67fee1ad205cd16fad9e1e7574230168;hpb=69a143a617ef4a2e1a3b3a29a66e4b9c956cf3ca;p=p5sagit%2Fp5-mst-13.2.git diff --git a/win32/win32sck.c b/win32/win32sck.c index 8656c0b..2427cb3 100644 --- a/win32/win32sck.c +++ b/win32/win32sck.c @@ -37,22 +37,11 @@ # define TO_SOCKET(x) (x) #endif /* USE_SOCKETS_AS_HANDLES */ -#if defined(USE_ITHREADS) #define StartSockets() \ STMT_START { \ if (!wsock_started) \ start_sockets(); \ - set_socktype(); \ } STMT_END -#else -#define StartSockets() \ - STMT_START { \ - if (!wsock_started) { \ - start_sockets(); \ - set_socktype(); \ - } \ - } STMT_END -#endif #define SOCKET_TEST(x, y) \ STMT_START { \ @@ -98,12 +87,6 @@ start_sockets(void) wsock_started = 1; } -void -set_socktype(void) -{ -} - - #ifndef USE_SOCKETS_AS_HANDLES #undef fdopen FILE * @@ -276,9 +259,8 @@ win32_select(int nfds, Perl_fd_set* rd, Perl_fd_set* wr, Perl_fd_set* ex, const { int r; #ifdef USE_SOCKETS_AS_HANDLES - Perl_fd_set dummy; int i, fd, save_errno = errno; - FD_SET nrd, nwr, nex, *prd, *pwr, *pex; + FD_SET nrd, nwr, nex; /* winsock seems incapable of dealing with all three null fd_sets, * so do the (millisecond) sleep as a special case @@ -292,44 +274,31 @@ win32_select(int nfds, Perl_fd_set* rd, Perl_fd_set* wr, Perl_fd_set* ex, const return 0; } StartSockets(); - PERL_FD_ZERO(&dummy); - if (!rd) - rd = &dummy, prd = NULL; - else - prd = &nrd; - if (!wr) - wr = &dummy, pwr = NULL; - else - pwr = &nwr; - if (!ex) - ex = &dummy, pex = NULL; - else - pex = &nex; FD_ZERO(&nrd); FD_ZERO(&nwr); FD_ZERO(&nex); for (i = 0; i < nfds; i++) { fd = TO_SOCKET(i); - if (PERL_FD_ISSET(i,rd)) + if (rd && PERL_FD_ISSET(i,rd)) FD_SET((unsigned)fd, &nrd); - if (PERL_FD_ISSET(i,wr)) + if (wr && PERL_FD_ISSET(i,wr)) FD_SET((unsigned)fd, &nwr); - if (PERL_FD_ISSET(i,ex)) + if (ex && PERL_FD_ISSET(i,ex)) FD_SET((unsigned)fd, &nex); } errno = save_errno; - SOCKET_TEST_ERROR(r = select(nfds, prd, pwr, pex, timeout)); + SOCKET_TEST_ERROR(r = select(nfds, &nrd, &nwr, &nex, timeout)); save_errno = errno; for (i = 0; i < nfds; i++) { fd = TO_SOCKET(i); - if (PERL_FD_ISSET(i,rd) && !FD_ISSET(fd, &nrd)) + if (rd && PERL_FD_ISSET(i,rd) && !FD_ISSET(fd, &nrd)) PERL_FD_CLR(i,rd); - if (PERL_FD_ISSET(i,wr) && !FD_ISSET(fd, &nwr)) + if (wr && PERL_FD_ISSET(i,wr) && !FD_ISSET(fd, &nwr)) PERL_FD_CLR(i,wr); - if (PERL_FD_ISSET(i,ex) && !FD_ISSET(fd, &nex)) + if (ex && PERL_FD_ISSET(i,ex) && !FD_ISSET(fd, &nex)) PERL_FD_CLR(i,ex); } errno = save_errno;