remove documentation-string reading hack
[bpt/emacs.git] / nt / inc / sys / socket.h
CommitLineData
ba318903 1/* Copyright (C) 1995, 2001-2014 Free Software Foundation, Inc.
41eca17b
AI
2
3This file is part of GNU Emacs.
4
eef0be9e 5GNU Emacs is free software: you can redistribute it and/or modify
41eca17b 6it under the terms of the GNU General Public License as published by
eef0be9e
GM
7the Free Software Foundation, either version 3 of the License, or
8(at your option) any later version.
41eca17b
AI
9
10GNU Emacs is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
eef0be9e 16along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
41eca17b
AI
17
18
c911543b
GV
19/* Workable version of <sys/socket.h> based on winsock.h */
20
21#ifndef _SOCKET_H_
22#define _SOCKET_H_
23
24/* defeat the multiple include protection */
25#ifdef _WINSOCKAPI_
26#undef _WINSOCKAPI_
27#endif
00a08ac7
AI
28#ifdef _WINSOCK_H
29#undef _WINSOCK_H
30#endif
c911543b
GV
31
32/* avoid confusion with our version of select */
33#ifdef select
34#undef select
35#define MUST_REDEF_SELECT
36#endif
37
38/* avoid clashing with our version of FD_SET if already defined */
39#ifdef FD_SET
40#undef FD_SET
41#undef FD_CLR
42#undef FD_ISSET
43#undef FD_ZERO
44#endif
45
9e821c83
EZ
46/* Avoid duplicate definition of timeval. MinGW uses _TIMEVAL_DEFINED
47 in sys/time.h to avoid that. */
48#if defined (HAVE_TIMEVAL) && defined (_MSC_VER)
c911543b
GV
49#define timeval ws_timeval
50#endif
51
a2dcccd9
JR
52#include <winsock2.h>
53#include <ws2tcpip.h>
bfbe85fc
JR
54/* process.c uses uint16_t (from C99) for IPv6, but
55 apparently it is not defined in some versions of mingw and msvc. */
56#ifndef UINT16_C
57typedef unsigned short uint16_t;
58#endif
c911543b
GV
59
60/* redefine select to reference our version */
61#ifdef MUST_REDEF_SELECT
62#define select sys_select
63#undef MUST_REDEF_SELECT
64#endif
65
9e821c83
EZ
66/* Revert to our version of FD_SET, but not when included from test
67 programs run by configure. */
68#ifdef EMACS_CONFIG_H
c911543b
GV
69#undef FD_SET
70#undef FD_CLR
71#undef FD_ISSET
72#undef FD_ZERO
00a08ac7
AI
73
74/* allow us to provide our own version of fd_set */
75#define fd_set ws_fd_set
6219f8bf 76#include "w32.h"
9e821c83 77#endif /* EMACS_CONFIG_H */
c911543b 78
9e821c83 79#if defined (HAVE_TIMEVAL) && defined (_MSC_VER)
c911543b
GV
80#undef timeval
81#endif
82
83/* shadow functions where we provide our own wrapper */
84#define socket sys_socket
85#define bind sys_bind
86#define connect sys_connect
87#define htons sys_htons
88#define ntohs sys_ntohs
89#define inet_addr sys_inet_addr
90#define gethostname sys_gethostname
91#define gethostbyname sys_gethostbyname
6b99b0a8 92#define getpeername sys_getpeername
c911543b 93#define getservbyname sys_getservbyname
86b9a6a9 94#define shutdown sys_shutdown
ef2cd596
JR
95#define setsockopt sys_setsockopt
96#define listen sys_listen
97#define getsockname sys_getsockname
98#define accept sys_accept
99#define recvfrom sys_recvfrom
100#define sendto sys_sendto
c911543b
GV
101
102int sys_socket(int af, int type, int protocol);
103int sys_bind (int s, const struct sockaddr *addr, int namelen);
104int sys_connect (int s, const struct sockaddr *addr, int namelen);
105u_short sys_htons (u_short hostshort);
106u_short sys_ntohs (u_short netshort);
107unsigned long sys_inet_addr (const char * cp);
108int sys_gethostname (char * name, int namelen);
6b99b0a8
JR
109struct hostent * sys_gethostbyname (const char * name);
110struct servent * sys_getservbyname (const char * name, const char * proto);
111int sys_getpeername (int s, struct sockaddr *addr, int * namelen);
86b9a6a9 112int sys_shutdown (int socket, int how);
727dcb1c 113int sys_setsockopt (int s, int level, int oname, const void * oval, int olen);
ef2cd596
JR
114int sys_listen (int s, int backlog);
115int sys_getsockname (int s, struct sockaddr * name, int * namelen);
116int sys_accept (int s, struct sockaddr *addr, int *addrlen);
117int sys_recvfrom (int s, char *buf, int len, int flags,
118 struct sockaddr *from, int * fromlen);
119int sys_sendto (int s, const char * buf, int len, int flags,
120 const struct sockaddr *to, int tolen);
c911543b 121
6b99b0a8
JR
122/* In addition to wrappers for the winsock functions, we also provide
123 an fcntl function, for setting sockets to non-blocking mode. */
124int fcntl (int s, int cmd, int options);
125#define F_SETFL 4
1d442672 126#define F_SETFD 2
49cdacda 127#define O_NONBLOCK 04000
1d442672
EZ
128#define O_CLOEXEC O_NOINHERIT
129#define F_DUPFD_CLOEXEC 0x40000000
130#define FD_CLOEXEC 1
6b99b0a8 131
c911543b
GV
132/* we are providing a real h_errno variable */
133#undef h_errno
134extern int h_errno;
135
136/* map winsock error codes to standard names */
62aba0d4
FP
137#if defined(EWOULDBLOCK)
138#undef EWOULDBLOCK
139#endif
c911543b 140#define EWOULDBLOCK WSAEWOULDBLOCK
62aba0d4
FP
141#if defined(EINPROGRESS)
142#undef EINPROGRESS
143#endif
c911543b 144#define EINPROGRESS WSAEINPROGRESS
62aba0d4
FP
145#if defined(EALREADY)
146#undef EALREADY
147#endif
c911543b 148#define EALREADY WSAEALREADY
62aba0d4
FP
149#if defined(ENOTSOCK)
150#undef ENOTSOCK
151#endif
c911543b 152#define ENOTSOCK WSAENOTSOCK
62aba0d4
FP
153#if defined(EDESTADDRREQ)
154#undef EDESTADDRREQ
155#endif
c911543b 156#define EDESTADDRREQ WSAEDESTADDRREQ
62aba0d4
FP
157#if defined(EMSGSIZE)
158#undef EMSGSIZE
159#endif
c911543b 160#define EMSGSIZE WSAEMSGSIZE
62aba0d4
FP
161#if defined(EPROTOTYPE)
162#undef EPROTOTYPE
163#endif
c911543b 164#define EPROTOTYPE WSAEPROTOTYPE
62aba0d4
FP
165#if defined(ENOPROTOOPT)
166#undef ENOPROTOOPT
167#endif
c911543b 168#define ENOPROTOOPT WSAENOPROTOOPT
62aba0d4
FP
169#if defined(EPROTONOSUPPORT)
170#undef EPROTONOSUPPORT
171#endif
c911543b 172#define EPROTONOSUPPORT WSAEPROTONOSUPPORT
62aba0d4
FP
173#if defined(ESOCKTNOSUPPORT)
174#undef ESOCKTNOSUPPORT
175#endif
c911543b 176#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
62aba0d4
FP
177#if defined(EOPNOTSUPP)
178#undef EOPNOTSUPP
179#endif
c911543b 180#define EOPNOTSUPP WSAEOPNOTSUPP
62aba0d4
FP
181#if defined(EPFNOSUPPORT)
182#undef EPFNOSUPPORT
183#endif
c911543b 184#define EPFNOSUPPORT WSAEPFNOSUPPORT
62aba0d4
FP
185#if defined(EAFNOSUPPORT)
186#undef EAFNOSUPPORT
187#endif
c911543b 188#define EAFNOSUPPORT WSAEAFNOSUPPORT
62aba0d4
FP
189#if defined(EADDRINUSE)
190#undef EADDRINUSE
191#endif
c911543b 192#define EADDRINUSE WSAEADDRINUSE
62aba0d4
FP
193#if defined(EADDRNOTAVAIL)
194#undef EADDRNOTAVAIL
195#endif
c911543b 196#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
62aba0d4
FP
197#if defined(ENETDOWN)
198#undef ENETDOWN
199#endif
c911543b 200#define ENETDOWN WSAENETDOWN
62aba0d4
FP
201#if defined(ENETUNREACH)
202#undef ENETUNREACH
203#endif
c911543b 204#define ENETUNREACH WSAENETUNREACH
62aba0d4
FP
205#if defined(ENETRESET)
206#undef ENETRESET
207#endif
c911543b 208#define ENETRESET WSAENETRESET
62aba0d4
FP
209#if defined(ECONNABORTED)
210#undef ECONNABORTED
211#endif
c911543b 212#define ECONNABORTED WSAECONNABORTED
62aba0d4
FP
213#if defined(ECONNRESET)
214#undef ECONNRESET
215#endif
c911543b 216#define ECONNRESET WSAECONNRESET
62aba0d4
FP
217#if defined(ENOBUFS)
218#undef ENOBUFS
219#endif
c911543b 220#define ENOBUFS WSAENOBUFS
62aba0d4
FP
221#if defined(EISCONN)
222#undef EISCONN
223#endif
c911543b 224#define EISCONN WSAEISCONN
62aba0d4
FP
225#if defined(ENOTCONN)
226#undef ENOTCONN
227#endif
c911543b 228#define ENOTCONN WSAENOTCONN
62aba0d4
FP
229#if defined(ESHUTDOWN)
230#undef ESHUTDOWN
231#endif
c911543b 232#define ESHUTDOWN WSAESHUTDOWN
62aba0d4
FP
233#if defined(ETOOMANYREFS)
234#undef ETOOMANYREFS
235#endif
c911543b 236#define ETOOMANYREFS WSAETOOMANYREFS
62aba0d4
FP
237#if defined(ETIMEDOUT)
238#undef ETIMEDOUT
239#endif
c911543b 240#define ETIMEDOUT WSAETIMEDOUT
62aba0d4
FP
241#if defined(ECONNREFUSED)
242#undef ECONNREFUSED
243#endif
c911543b 244#define ECONNREFUSED WSAECONNREFUSED
62aba0d4
FP
245#if defined(ELOOP)
246#undef ELOOP
247#endif
c911543b
GV
248#define ELOOP WSAELOOP
249/* #define ENAMETOOLONG WSAENAMETOOLONG */
62aba0d4
FP
250#if defined(EHOSTDOWN)
251#undef EHOSTDOWN
252#endif
c911543b 253#define EHOSTDOWN WSAEHOSTDOWN
62aba0d4
FP
254#if defined(EHOSTUNREACH)
255#undef EHOSTUNREACH
256#endif
c911543b
GV
257#define EHOSTUNREACH WSAEHOSTUNREACH
258/* #define ENOTEMPTY WSAENOTEMPTY */
62aba0d4
FP
259#if defined(EPROCLIM)
260#undef EPROCLIM
261#endif
c911543b 262#define EPROCLIM WSAEPROCLIM
62aba0d4
FP
263#if defined(EUSERS)
264#undef EUSERS
265#endif
c911543b 266#define EUSERS WSAEUSERS
62aba0d4
FP
267#if defined(EDQUOT)
268#undef EDQUOT
269#endif
c911543b 270#define EDQUOT WSAEDQUOT
62aba0d4
FP
271#if defined(ESTALE)
272#undef ESTALE
273#endif
c911543b 274#define ESTALE WSAESTALE
62aba0d4
FP
275#if defined(EREMOTE)
276#undef EREMOTE
277#endif
c911543b
GV
278#define EREMOTE WSAEREMOTE
279
280#endif /* _SOCKET_H_ */
281
282/* end of socket.h */