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 #if defined( __MINGW32__ ) || defined( _MSC_VER )
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 ESHUTDOWN               WSAESHUTDOWN
43 
44 #if (!defined(_MSC_VER) || (_MSC_VER < 1600))
45 #define EINPROGRESS             WSAEINPROGRESS
46 #define EALREADY                WSAEALREADY
47 #define ENOTSOCK                WSAENOTSOCK
48 #define EDESTADDRREQ            WSAEDESTADDRREQ
49 #define EMSGSIZE                WSAEMSGSIZE
50 #define EPROTOTYPE              WSAEPROTOTYPE
51 #define ENOPROTOOPT             WSAENOPROTOOPT
52 #define EPROTONOSUPPORT         WSAEPROTONOSUPPORT
53 #define ESOCKTNOSUPPORT         WSAESOCKTNOSUPPORT
54 #define EOPNOTSUPP              WSAEOPNOTSUPP
55 #define EPFNOSUPPORT            WSAEPFNOSUPPORT
56 #define EAFNOSUPPORT            WSAEAFNOSUPPORT
57 #define EADDRINUSE              WSAEADDRINUSE
58 #define EADDRNOTAVAIL           WSAEADDRNOTAVAIL
59 #define ENETDOWN                WSAENETDOWN
60 #define ENETUNREACH             WSAENETUNREACH
61 #define ENETRESET               WSAENETRESET
62 #define ECONNABORTED            WSAECONNABORTED
63 #define ECONNRESET              WSAECONNRESET
64 #define ENOBUFS                 WSAENOBUFS
65 #define EISCONN                 WSAEISCONN
66 #define ENOTCONN                WSAENOTCONN
67 #define ETOOMANYREFS            WSAETOOMANYREFS
68 #define ETIMEDOUT               WSAETIMEDOUT
69 #define ECONNREFUSED            WSAECONNREFUSED
70 #define ELOOP                   WSAELOOP
71 #define EHOSTDOWN               WSAEHOSTDOWN
72 #define EHOSTUNREACH            WSAEHOSTUNREACH
73 #define EPROCLIM                WSAEPROCLIM
74 #define EUSERS                  WSAEUSERS
75 #define EDQUOT                  WSAEDQUOT
76 #define ESTALE                  WSAESTALE
77 #define EREMOTE                 WSAEREMOTE
78 /* These cause conflicts with the codes from errno.h. Since they are
79    not used in the relevant code (nanoftp, nanohttp), we can leave
80    them disabled.
81 #define ENAMETOOLONG            WSAENAMETOOLONG
82 #define ENOTEMPTY               WSAENOTEMPTY
83 */
84 #endif /* _MSC_VER */
85 
86 #endif /* __XML_WSOCKCOMPAT_H__ */
87