1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #ifndef _SOCKET_H_
22 #define _SOCKET_H_
23
24
25 #ifdef _WINSOCKAPI_
26 #undef _WINSOCKAPI_
27 #endif
28 #ifdef _WINSOCK_H
29 #undef _WINSOCK_H
30 #endif
31
32
33 #ifdef select
34 #undef select
35 #define MUST_REDEF_SELECT
36 #endif
37
38
39 #ifdef FD_SET
40 #undef FD_SET
41 #undef FD_CLR
42 #undef FD_ISSET
43 #undef FD_ZERO
44 #endif
45
46
47
48 #if defined (HAVE_TIMEVAL) && defined (_MSC_VER)
49 #define timeval ws_timeval
50 #endif
51
52 #if defined __MINGW32_VERSION && __MINGW32_VERSION >= 5000002L
53
54
55 # include <winerror.h>
56 #endif
57 #include <winsock2.h>
58 #include <ws2tcpip.h>
59
60
61 #include <stdint.h>
62 #ifndef UINT16_C
63 typedef unsigned short uint16_t;
64 #endif
65
66
67 #ifdef MUST_REDEF_SELECT
68 #define select sys_select
69 #undef MUST_REDEF_SELECT
70 #endif
71
72
73
74 #ifdef EMACS_CONFIG_H
75 #undef FD_SET
76 #undef FD_CLR
77 #undef FD_ISSET
78 #undef FD_ZERO
79
80
81 #define fd_set ws_fd_set
82 #include "w32.h"
83 #endif
84
85 #if defined (HAVE_TIMEVAL) && defined (_MSC_VER)
86 #undef timeval
87 #endif
88
89
90 #define socket sys_socket
91 #define bind sys_bind
92 #define connect sys_connect
93 #define htons sys_htons
94 #define ntohs sys_ntohs
95 #define htonl sys_htonl
96 #define ntohl sys_ntohl
97 #define inet_addr sys_inet_addr
98 #define gethostname sys_gethostname
99 #define gethostbyname sys_gethostbyname
100 #define getpeername sys_getpeername
101 #define getservbyname sys_getservbyname
102 #define shutdown sys_shutdown
103 #define setsockopt sys_setsockopt
104 #define listen sys_listen
105 #define getsockname sys_getsockname
106 #define accept sys_accept
107 #define recvfrom sys_recvfrom
108 #define sendto sys_sendto
109 #define getaddrinfo sys_getaddrinfo
110 #define freeaddrinfo sys_freeaddrinfo
111
112 int sys_socket(int af, int type, int protocol);
113 int sys_bind (int s, const struct sockaddr *addr, int namelen);
114 int sys_connect (int s, const struct sockaddr *addr, int namelen);
115 u_short sys_htons (u_short hostshort);
116 u_short sys_ntohs (u_short netshort);
117 u_long sys_htonl (u_long hostlong);
118 u_long sys_ntohl (u_long netlong);
119 unsigned long sys_inet_addr (const char * cp);
120 int sys_gethostname (char * name, int namelen);
121 struct hostent * sys_gethostbyname (const char * name);
122 struct servent * sys_getservbyname (const char * name, const char * proto);
123 int sys_getpeername (int s, struct sockaddr *addr, int * namelen);
124 int sys_shutdown (int socket, int how);
125 int sys_setsockopt (int s, int level, int oname, const void * oval, int olen);
126 int sys_listen (int s, int backlog);
127 int sys_getsockname (int s, struct sockaddr * name, int * namelen);
128 int sys_accept (int s, struct sockaddr *addr, int *addrlen);
129 int sys_recvfrom (int s, char *buf, int len, int flags,
130 struct sockaddr *from, int * fromlen);
131 int sys_sendto (int s, const char * buf, int len, int flags,
132 const struct sockaddr *to, int tolen);
133 int sys_getaddrinfo (const char * node, const char * service,
134 const struct addrinfo * hints, struct addrinfo ** res);
135 void sys_freeaddrinfo (struct addrinfo * ai);
136
137
138
139 int fcntl (int s, int cmd, int options);
140 #define F_SETFL 4
141 #define F_SETFD 2
142 #define O_NONBLOCK 04000
143 #define O_CLOEXEC O_NOINHERIT
144 #define F_DUPFD_CLOEXEC 0x40000000
145 #define FD_CLOEXEC 1
146
147
148 #undef h_errno
149 extern int h_errno;
150
151
152 #if defined(EWOULDBLOCK)
153 #undef EWOULDBLOCK
154 #endif
155 #define EWOULDBLOCK WSAEWOULDBLOCK
156 #if defined(EINPROGRESS)
157 #undef EINPROGRESS
158 #endif
159 #define EINPROGRESS WSAEINPROGRESS
160 #if defined(EALREADY)
161 #undef EALREADY
162 #endif
163 #define EALREADY WSAEALREADY
164 #if defined(ENOTSOCK)
165 #undef ENOTSOCK
166 #endif
167 #define ENOTSOCK WSAENOTSOCK
168 #if defined(EDESTADDRREQ)
169 #undef EDESTADDRREQ
170 #endif
171 #define EDESTADDRREQ WSAEDESTADDRREQ
172 #if defined(EMSGSIZE)
173 #undef EMSGSIZE
174 #endif
175 #define EMSGSIZE WSAEMSGSIZE
176 #if defined(EPROTOTYPE)
177 #undef EPROTOTYPE
178 #endif
179 #define EPROTOTYPE WSAEPROTOTYPE
180 #if defined(ENOPROTOOPT)
181 #undef ENOPROTOOPT
182 #endif
183 #define ENOPROTOOPT WSAENOPROTOOPT
184 #if defined(EPROTONOSUPPORT)
185 #undef EPROTONOSUPPORT
186 #endif
187 #define EPROTONOSUPPORT WSAEPROTONOSUPPORT
188 #if defined(ESOCKTNOSUPPORT)
189 #undef ESOCKTNOSUPPORT
190 #endif
191 #define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
192 #if defined(EOPNOTSUPP)
193 #undef EOPNOTSUPP
194 #endif
195 #define EOPNOTSUPP WSAEOPNOTSUPP
196 #if defined(EPFNOSUPPORT)
197 #undef EPFNOSUPPORT
198 #endif
199 #define EPFNOSUPPORT WSAEPFNOSUPPORT
200 #if defined(EAFNOSUPPORT)
201 #undef EAFNOSUPPORT
202 #endif
203 #define EAFNOSUPPORT WSAEAFNOSUPPORT
204 #if defined(EADDRINUSE)
205 #undef EADDRINUSE
206 #endif
207 #define EADDRINUSE WSAEADDRINUSE
208 #if defined(EADDRNOTAVAIL)
209 #undef EADDRNOTAVAIL
210 #endif
211 #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
212 #if defined(ENETDOWN)
213 #undef ENETDOWN
214 #endif
215 #define ENETDOWN WSAENETDOWN
216 #if defined(ENETUNREACH)
217 #undef ENETUNREACH
218 #endif
219 #define ENETUNREACH WSAENETUNREACH
220 #if defined(ENETRESET)
221 #undef ENETRESET
222 #endif
223 #define ENETRESET WSAENETRESET
224 #if defined(ECONNABORTED)
225 #undef ECONNABORTED
226 #endif
227 #define ECONNABORTED WSAECONNABORTED
228 #if defined(ECONNRESET)
229 #undef ECONNRESET
230 #endif
231 #define ECONNRESET WSAECONNRESET
232 #if defined(ENOBUFS)
233 #undef ENOBUFS
234 #endif
235 #define ENOBUFS WSAENOBUFS
236 #if defined(EISCONN)
237 #undef EISCONN
238 #endif
239 #define EISCONN WSAEISCONN
240 #if defined(ENOTCONN)
241 #undef ENOTCONN
242 #endif
243 #define ENOTCONN WSAENOTCONN
244 #if defined(ESHUTDOWN)
245 #undef ESHUTDOWN
246 #endif
247 #define ESHUTDOWN WSAESHUTDOWN
248 #if defined(ETOOMANYREFS)
249 #undef ETOOMANYREFS
250 #endif
251 #define ETOOMANYREFS WSAETOOMANYREFS
252 #if defined(ETIMEDOUT)
253 #undef ETIMEDOUT
254 #endif
255 #define ETIMEDOUT WSAETIMEDOUT
256 #if defined(ECONNREFUSED)
257 #undef ECONNREFUSED
258 #endif
259 #define ECONNREFUSED WSAECONNREFUSED
260 #if defined(ELOOP)
261 #undef ELOOP
262 #endif
263 #define ELOOP WSAELOOP
264
265 #if defined(EHOSTDOWN)
266 #undef EHOSTDOWN
267 #endif
268 #define EHOSTDOWN WSAEHOSTDOWN
269 #if defined(EHOSTUNREACH)
270 #undef EHOSTUNREACH
271 #endif
272 #define EHOSTUNREACH WSAEHOSTUNREACH
273
274 #if defined(EPROCLIM)
275 #undef EPROCLIM
276 #endif
277 #define EPROCLIM WSAEPROCLIM
278 #if defined(EUSERS)
279 #undef EUSERS
280 #endif
281 #define EUSERS WSAEUSERS
282 #if defined(EDQUOT)
283 #undef EDQUOT
284 #endif
285 #define EDQUOT WSAEDQUOT
286 #if defined(ESTALE)
287 #undef ESTALE
288 #endif
289 #define ESTALE WSAESTALE
290 #if defined(EREMOTE)
291 #undef EREMOTE
292 #endif
293 #define EREMOTE WSAEREMOTE
294
295 #endif
296
297