1/* include/wsockcompat.h
2 * Windows -> Berkeley Sockets compatibility things.
3 */
4
5#if !defined __XML_WSOCKCOMPAT_H__
6#define __XML_WSOCKCOMPAT_H__
7
8#ifdef _WIN32_WCE
9#include <winsock.h>
10#else
11#undef HAVE_ERRNO_H
12#include <winsock2.h>
13
14/* the following is a workaround a problem for 'inline' keyword in said
15   header when compiled with Borland C++ 6 */
16#if defined(__BORLANDC__) && !defined(__cplusplus)
17#define inline __inline
18#define _inline __inline
19#endif
20
21#include <ws2tcpip.h>
22
23/* Check if ws2tcpip.h is a recent version which provides getaddrinfo() */
24#if defined(GetAddrInfo)
25#include <wspiapi.h>
26#define HAVE_GETADDRINFO
27#endif
28#endif
29
30#ifdef __MINGW32__
31/* Include <errno.h> here to ensure that it doesn't get included later
32 * (e.g. by iconv.h) and overwrites the definition of EWOULDBLOCK. */
33#include <errno.h>
34#undef EWOULDBLOCK
35#endif
36
37#if !defined SOCKLEN_T
38#define SOCKLEN_T int
39#endif
40
41#define EWOULDBLOCK             WSAEWOULDBLOCK
42#define EINPROGRESS             WSAEINPROGRESS
43#define EALREADY                WSAEALREADY
44#define ENOTSOCK                WSAENOTSOCK
45#define EDESTADDRREQ            WSAEDESTADDRREQ
46#define EMSGSIZE                WSAEMSGSIZE
47#define EPROTOTYPE              WSAEPROTOTYPE
48#define ENOPROTOOPT             WSAENOPROTOOPT
49#define EPROTONOSUPPORT         WSAEPROTONOSUPPORT
50#define ESOCKTNOSUPPORT         WSAESOCKTNOSUPPORT
51#define EOPNOTSUPP              WSAEOPNOTSUPP
52#define EPFNOSUPPORT            WSAEPFNOSUPPORT
53#define EAFNOSUPPORT            WSAEAFNOSUPPORT
54#define EADDRINUSE              WSAEADDRINUSE
55#define EADDRNOTAVAIL           WSAEADDRNOTAVAIL
56#define ENETDOWN                WSAENETDOWN
57#define ENETUNREACH             WSAENETUNREACH
58#define ENETRESET               WSAENETRESET
59#define ECONNABORTED            WSAECONNABORTED
60#define ECONNRESET              WSAECONNRESET
61#define ENOBUFS                 WSAENOBUFS
62#define EISCONN                 WSAEISCONN
63#define ENOTCONN                WSAENOTCONN
64#define ESHUTDOWN               WSAESHUTDOWN
65#define ETOOMANYREFS            WSAETOOMANYREFS
66#define ETIMEDOUT               WSAETIMEDOUT
67#define ECONNREFUSED            WSAECONNREFUSED
68#define ELOOP                   WSAELOOP
69#define EHOSTDOWN               WSAEHOSTDOWN
70#define EHOSTUNREACH            WSAEHOSTUNREACH
71#define EPROCLIM                WSAEPROCLIM
72#define EUSERS                  WSAEUSERS
73#define EDQUOT                  WSAEDQUOT
74#define ESTALE                  WSAESTALE
75#define EREMOTE                 WSAEREMOTE
76/* These cause conflicts with the codes from errno.h. Since they are
77   not used in the relevant code (nanoftp, nanohttp), we can leave
78   them disabled.
79#define ENAMETOOLONG            WSAENAMETOOLONG
80#define ENOTEMPTY               WSAENOTEMPTY
81*/
82
83#endif /* __XML_WSOCKCOMPAT_H__ */
84