15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* include/wsockcompat.h
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Windows -> Berkeley Sockets compatibility things.
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined __XML_WSOCKCOMPAT_H__
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define __XML_WSOCKCOMPAT_H__
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _WIN32_WCE
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <winsock.h>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_ERRNO_H
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <winsock2.h>
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* the following is a workaround a problem for 'inline' keyword in said
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   header when compiled with Borland C++ 6 */
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__BORLANDC__) && !defined(__cplusplus)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define inline __inline
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _inline __inline
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <ws2tcpip.h>
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Check if ws2tcpip.h is a recent version which provides getaddrinfo() */
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(GetAddrInfo)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <wspiapi.h>
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_GETADDRINFO
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __MINGW32__
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Include <errno.h> here to ensure that it doesn't get included later
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * (e.g. by iconv.h) and overwrites the definition of EWOULDBLOCK. */
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <errno.h>
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef EWOULDBLOCK
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined SOCKLEN_T
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SOCKLEN_T int
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EWOULDBLOCK             WSAEWOULDBLOCK
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EINPROGRESS             WSAEINPROGRESS
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EALREADY                WSAEALREADY
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ENOTSOCK                WSAENOTSOCK
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EDESTADDRREQ            WSAEDESTADDRREQ
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EMSGSIZE                WSAEMSGSIZE
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EPROTOTYPE              WSAEPROTOTYPE
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ENOPROTOOPT             WSAENOPROTOOPT
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EPROTONOSUPPORT         WSAEPROTONOSUPPORT
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ESOCKTNOSUPPORT         WSAESOCKTNOSUPPORT
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EOPNOTSUPP              WSAEOPNOTSUPP
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EPFNOSUPPORT            WSAEPFNOSUPPORT
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EAFNOSUPPORT            WSAEAFNOSUPPORT
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EADDRINUSE              WSAEADDRINUSE
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EADDRNOTAVAIL           WSAEADDRNOTAVAIL
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ENETDOWN                WSAENETDOWN
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ENETUNREACH             WSAENETUNREACH
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ENETRESET               WSAENETRESET
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ECONNABORTED            WSAECONNABORTED
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ECONNRESET              WSAECONNRESET
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ENOBUFS                 WSAENOBUFS
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EISCONN                 WSAEISCONN
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ENOTCONN                WSAENOTCONN
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ESHUTDOWN               WSAESHUTDOWN
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ETOOMANYREFS            WSAETOOMANYREFS
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ETIMEDOUT               WSAETIMEDOUT
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ECONNREFUSED            WSAECONNREFUSED
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ELOOP                   WSAELOOP
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EHOSTDOWN               WSAEHOSTDOWN
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EHOSTUNREACH            WSAEHOSTUNREACH
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EPROCLIM                WSAEPROCLIM
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EUSERS                  WSAEUSERS
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EDQUOT                  WSAEDQUOT
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ESTALE                  WSAESTALE
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EREMOTE                 WSAEREMOTE
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* These cause conflicts with the codes from errno.h. Since they are
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   not used in the relevant code (nanoftp, nanohttp), we can leave
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   them disabled.
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ENAMETOOLONG            WSAENAMETOOLONG
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ENOTEMPTY               WSAENOTEMPTY
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* __XML_WSOCKCOMPAT_H__ */
84