25 #ifdef HAVE_SYS_IOCTL_H 26 #include <sys/ioctl.h> 32 #if (defined(HAVE_IOCTL_FIONBIO) && defined(NETWARE)) 33 #include <sys/filio.h> 50 #if defined(USE_BLOCKING_SOCKETS) 54 #elif defined(HAVE_FCNTL_O_NONBLOCK) 58 flags =
sfcntl(sockfd, F_GETFL, 0);
60 return sfcntl(sockfd, F_SETFL, flags | O_NONBLOCK);
61 return sfcntl(sockfd, F_SETFL, flags & (~O_NONBLOCK));
63 #elif defined(HAVE_IOCTL_FIONBIO) 66 int flags = nonblock ? 1 : 0;
67 return ioctl(sockfd, FIONBIO, &flags);
69 #elif defined(HAVE_IOCTLSOCKET_FIONBIO) 72 unsigned long flags = nonblock ? 1UL : 0UL;
73 return ioctlsocket(sockfd, FIONBIO, &flags);
75 #elif defined(HAVE_IOCTLSOCKET_CAMEL_FIONBIO) 78 long flags = nonblock ? 1L : 0L;
79 return IoctlSocket(sockfd, FIONBIO, (
char *)&flags);
81 #elif defined(HAVE_SETSOCKOPT_SO_NONBLOCK) 84 long b = nonblock ? 1L : 0L;
85 return setsockopt(sockfd, SOL_SOCKET, SO_NONBLOCK, &b,
sizeof(b));
88 # error "no non-blocking method was found/used/set" int curlx_nonblock(curl_socket_t sockfd, int nonblock)