10{
11#ifndef NO_SIGNALS
14
15 if (
SSetjmp(gNetTimeoutJmp) != 0) {
16 alarm(0);
20 }
21
23 alarm((unsigned int) tlen);
24
26 do {
30
31 alarm(0);
34#else
35 unsigned long opt;
39 int cErrno;
40#if defined(WIN32) || defined(_WINDOWS)
41 int wsaErrno;
42 int soerr, soerrsize;
43#else
44 int optval;
45 int optlen;
46#endif
47
49 if (tlen <= 0) {
50 do {
56 }
57
58#ifdef FIONBIO
59 opt = 1;
62 return (-1);
63 }
64#else
65 if (fcntl(sfd, F_GETFL, &opt) < 0) {
67 return (-1);
68 }
else if (fcntl(sfd, F_SETFL, opt |
O_NONBLOCK) < 0) {
70 return (-1);
71 }
72#endif
73
78 return 0;
79
81#
if defined(
WIN32) || defined(_WINDOWS)
84#else
86#endif
87 ) {
90 return (-1);
91 }
93
95#if defined(WIN32) || defined(_WINDOWS)
97#endif
101 tv.tv_sec = tlen;
102 tv.tv_usec = 0;
105
106 break;
108
111
114
116 return (-1);
117 }
118 }
119
120
121
122
123
124
125
126
128#if defined(WIN32) || defined(_WINDOWS)
130 soerr = 0;
131 soerrsize = sizeof(soerr);
133 if ((
result >= 0) && (soerr != 0)) {
135 } else {
139 }
140#else
143#endif
147 return (-1);
148 }
149
150#if defined(WIN32) || defined(_WINDOWS)
151#else
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169 optval = 0;
170 optlen = sizeof(optval);
174 return (-1);
175 }
176 }
177#endif
178
179#ifdef FIONBIO
180 opt = 0;
184 return (-1);
185 }
186#else
187 if (fcntl(sfd, F_SETFL, opt) < 0) {
190 return (-1);
191 }
192#endif
193
194 return (0);
195#endif
196}
VOID WSAAPI WSASetLastError(IN INT iError)
INT WSAAPI select(IN INT s, IN OUT LPFD_SET readfds, IN OUT LPFD_SET writefds, IN OUT LPFD_SET exceptfds, IN CONST struct timeval *timeout)
INT WSAAPI send(IN SOCKET s, IN CONST CHAR FAR *buf, IN INT len, IN INT flags)
GLenum const GLvoid * addr
#define SELECT_TYPE_ARG234
volatile sio_sigproc_t vsio_sigproc_t
void(*)(int) SSignal(int signum, void(*handler)(int))
void(* sio_sigproc_t)(int)
INT WSAAPI getsockopt(IN SOCKET s, IN INT level, IN INT optname, OUT CHAR FAR *optval, IN OUT INT FAR *optlen)
INT WSAAPI shutdown(IN SOCKET s, IN INT how)
#define FD_ISSET(fd, set)
int PASCAL FAR WSAGetLastError(void)