Commit | Line | Data |
---|---|---|
b65d8176 | 1 | /* Copyright (C) 1995, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. |
41eca17b AI |
2 | |
3 | This file is part of GNU Emacs. | |
4 | ||
5 | GNU Emacs is free software; you can redistribute it and/or modify | |
6 | it under the terms of the GNU General Public License as published by | |
7 | the Free Software Foundation; either version 2, or (at your option) | |
8 | any later version. | |
9 | ||
10 | GNU Emacs is distributed in the hope that it will be useful, | |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | GNU General Public License for more details. | |
14 | ||
15 | You should have received a copy of the GNU General Public License | |
16 | along with GNU Emacs; see the file COPYING. If not, write to | |
364c38d3 LK |
17 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
18 | Boston, MA 02110-1301, USA. */ | |
41eca17b AI |
19 | |
20 | ||
c911543b GV |
21 | /* Workable version of <sys/socket.h> based on winsock.h */ |
22 | ||
23 | #ifndef _SOCKET_H_ | |
24 | #define _SOCKET_H_ | |
25 | ||
26 | /* defeat the multiple include protection */ | |
27 | #ifdef _WINSOCKAPI_ | |
28 | #undef _WINSOCKAPI_ | |
29 | #endif | |
00a08ac7 AI |
30 | #ifdef _WINSOCK_H |
31 | #undef _WINSOCK_H | |
32 | #endif | |
c911543b GV |
33 | |
34 | /* avoid confusion with our version of select */ | |
35 | #ifdef select | |
36 | #undef select | |
37 | #define MUST_REDEF_SELECT | |
38 | #endif | |
39 | ||
40 | /* avoid clashing with our version of FD_SET if already defined */ | |
41 | #ifdef FD_SET | |
42 | #undef FD_SET | |
43 | #undef FD_CLR | |
44 | #undef FD_ISSET | |
45 | #undef FD_ZERO | |
46 | #endif | |
47 | ||
c911543b GV |
48 | /* avoid duplicate definition of timeval */ |
49 | #ifdef HAVE_TIMEVAL | |
50 | #define timeval ws_timeval | |
51 | #endif | |
52 | ||
53 | #include <winsock.h> | |
54 | ||
55 | /* redefine select to reference our version */ | |
56 | #ifdef MUST_REDEF_SELECT | |
57 | #define select sys_select | |
58 | #undef MUST_REDEF_SELECT | |
59 | #endif | |
60 | ||
61 | /* revert to our version of FD_SET */ | |
62 | #undef FD_SET | |
63 | #undef FD_CLR | |
64 | #undef FD_ISSET | |
65 | #undef FD_ZERO | |
00a08ac7 AI |
66 | |
67 | /* allow us to provide our own version of fd_set */ | |
68 | #define fd_set ws_fd_set | |
6219f8bf | 69 | #include "w32.h" |
c911543b GV |
70 | |
71 | #ifdef HAVE_TIMEVAL | |
72 | #undef timeval | |
73 | #endif | |
74 | ||
75 | /* shadow functions where we provide our own wrapper */ | |
76 | #define socket sys_socket | |
77 | #define bind sys_bind | |
78 | #define connect sys_connect | |
79 | #define htons sys_htons | |
80 | #define ntohs sys_ntohs | |
81 | #define inet_addr sys_inet_addr | |
82 | #define gethostname sys_gethostname | |
83 | #define gethostbyname sys_gethostbyname | |
6b99b0a8 | 84 | #define getpeername sys_getpeername |
c911543b | 85 | #define getservbyname sys_getservbyname |
86b9a6a9 | 86 | #define shutdown sys_shutdown |
ef2cd596 JR |
87 | #define setsockopt sys_setsockopt |
88 | #define listen sys_listen | |
89 | #define getsockname sys_getsockname | |
90 | #define accept sys_accept | |
91 | #define recvfrom sys_recvfrom | |
92 | #define sendto sys_sendto | |
c911543b GV |
93 | |
94 | int sys_socket(int af, int type, int protocol); | |
95 | int sys_bind (int s, const struct sockaddr *addr, int namelen); | |
96 | int sys_connect (int s, const struct sockaddr *addr, int namelen); | |
97 | u_short sys_htons (u_short hostshort); | |
98 | u_short sys_ntohs (u_short netshort); | |
99 | unsigned long sys_inet_addr (const char * cp); | |
100 | int sys_gethostname (char * name, int namelen); | |
6b99b0a8 JR |
101 | struct hostent * sys_gethostbyname (const char * name); |
102 | struct servent * sys_getservbyname (const char * name, const char * proto); | |
103 | int sys_getpeername (int s, struct sockaddr *addr, int * namelen); | |
86b9a6a9 | 104 | int sys_shutdown (int socket, int how); |
727dcb1c | 105 | int sys_setsockopt (int s, int level, int oname, const void * oval, int olen); |
ef2cd596 JR |
106 | int sys_listen (int s, int backlog); |
107 | int sys_getsockname (int s, struct sockaddr * name, int * namelen); | |
108 | int sys_accept (int s, struct sockaddr *addr, int *addrlen); | |
109 | int sys_recvfrom (int s, char *buf, int len, int flags, | |
110 | struct sockaddr *from, int * fromlen); | |
111 | int sys_sendto (int s, const char * buf, int len, int flags, | |
112 | const struct sockaddr *to, int tolen); | |
c911543b | 113 | |
6b99b0a8 JR |
114 | /* In addition to wrappers for the winsock functions, we also provide |
115 | an fcntl function, for setting sockets to non-blocking mode. */ | |
116 | int fcntl (int s, int cmd, int options); | |
117 | #define F_SETFL 4 | |
118 | #define O_NDELAY 04000 | |
119 | ||
c911543b GV |
120 | /* we are providing a real h_errno variable */ |
121 | #undef h_errno | |
122 | extern int h_errno; | |
123 | ||
124 | /* map winsock error codes to standard names */ | |
125 | #define EWOULDBLOCK WSAEWOULDBLOCK | |
126 | #define EINPROGRESS WSAEINPROGRESS | |
127 | #define EALREADY WSAEALREADY | |
128 | #define ENOTSOCK WSAENOTSOCK | |
129 | #define EDESTADDRREQ WSAEDESTADDRREQ | |
130 | #define EMSGSIZE WSAEMSGSIZE | |
131 | #define EPROTOTYPE WSAEPROTOTYPE | |
132 | #define ENOPROTOOPT WSAENOPROTOOPT | |
133 | #define EPROTONOSUPPORT WSAEPROTONOSUPPORT | |
134 | #define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT | |
135 | #define EOPNOTSUPP WSAEOPNOTSUPP | |
136 | #define EPFNOSUPPORT WSAEPFNOSUPPORT | |
137 | #define EAFNOSUPPORT WSAEAFNOSUPPORT | |
138 | #define EADDRINUSE WSAEADDRINUSE | |
139 | #define EADDRNOTAVAIL WSAEADDRNOTAVAIL | |
140 | #define ENETDOWN WSAENETDOWN | |
141 | #define ENETUNREACH WSAENETUNREACH | |
142 | #define ENETRESET WSAENETRESET | |
143 | #define ECONNABORTED WSAECONNABORTED | |
144 | #define ECONNRESET WSAECONNRESET | |
145 | #define ENOBUFS WSAENOBUFS | |
146 | #define EISCONN WSAEISCONN | |
147 | #define ENOTCONN WSAENOTCONN | |
148 | #define ESHUTDOWN WSAESHUTDOWN | |
149 | #define ETOOMANYREFS WSAETOOMANYREFS | |
150 | #define ETIMEDOUT WSAETIMEDOUT | |
151 | #define ECONNREFUSED WSAECONNREFUSED | |
152 | #define ELOOP WSAELOOP | |
153 | /* #define ENAMETOOLONG WSAENAMETOOLONG */ | |
154 | #define EHOSTDOWN WSAEHOSTDOWN | |
155 | #define EHOSTUNREACH WSAEHOSTUNREACH | |
156 | /* #define ENOTEMPTY WSAENOTEMPTY */ | |
157 | #define EPROCLIM WSAEPROCLIM | |
158 | #define EUSERS WSAEUSERS | |
159 | #define EDQUOT WSAEDQUOT | |
160 | #define ESTALE WSAESTALE | |
161 | #define EREMOTE WSAEREMOTE | |
162 | ||
163 | #endif /* _SOCKET_H_ */ | |
164 | ||
165 | /* end of socket.h */ | |
ab5796a9 MB |
166 | |
167 | /* arch-tag: e3b8b91c-aaa0-4bc4-be57-a85a1dd247b4 | |
168 | (do not change this comment) */ |