From 15a54e002bf361cdb04666522be52b444cec7a3a Mon Sep 17 00:00:00 2001 From: leitner Date: Thu, 20 Nov 2003 23:49:38 +0000 Subject: [PATCH] More Windoze crap --- socket/init.c | 16 ++++++++++++++++ unix/winsock2errno.c | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 socket/init.c create mode 100644 unix/winsock2errno.c diff --git a/socket/init.c b/socket/init.c new file mode 100644 index 0000000..e4d9569 --- /dev/null +++ b/socket/init.c @@ -0,0 +1,16 @@ +#ifdef __MINGW32__ +#include "socket.h" +#include "windoze.h" + +void __winsock_init(void) { + static int inited; + if (!inited) { + WSADATA wsaData; + if (WSAStartup( MAKEWORD(2,2), &wsaData ) || + LOBYTE( wsaData.wVersion ) != 2 || + HIBYTE( wsaData.wVersion ) != 2) + exit(111); + inited=1; + } +} +#endif diff --git a/unix/winsock2errno.c b/unix/winsock2errno.c new file mode 100644 index 0000000..3444fc7 --- /dev/null +++ b/unix/winsock2errno.c @@ -0,0 +1,39 @@ +#ifdef __MINGW32__ +#include +#include +#include +#include "socket.h" + +int winsock2errno(long l) { + long x; + if (l==-1) + switch ((x=WSAGetLastError())) { + case WSANOTINITIALISED: + printf("WSANOTINITIALISED!\n"); + exit(111); + case WSAENETDOWN: + printf("WSAENETDOWN!\n"); + exit(111); + case WSAEINTR: + errno=EINTR; break; + case WSAEBADF: + errno=EBADF; break; + case WSAEACCES: + errno=EACCES; break; + case WSAEFAULT: + errno=EFAULT; break; + case WSAEINVAL: + errno=EINVAL; break; + case WSAEMFILE: + errno=EMFILE; break; + case WSAENAMETOOLONG: + errno=ENAMETOOLONG; break; + case WSAENOTEMPTY: + errno=ENOTEMPTY; break; + default: + errno=x; + break; + } + return l; +} +#endif