summaryrefslogtreecommitdiffstats
path: root/contrib/idn/idnkit-1.0-src/wsock/wsock20
diff options
context:
space:
mode:
authorMartin Nagy <mnagy@redhat.com>2009-02-11 20:37:59 +0100
committerMartin Nagy <mnagy@redhat.com>2009-02-11 20:37:59 +0100
commitf50ae72ec3417cae55dd4e085991c01af9fdc5f1 (patch)
tree0e36c9a3320f6d068df93d3ff6d84b821d23db40 /contrib/idn/idnkit-1.0-src/wsock/wsock20
downloadbind_dynamic-f50ae72ec3417cae55dd4e085991c01af9fdc5f1.tar.gz
bind_dynamic-f50ae72ec3417cae55dd4e085991c01af9fdc5f1.tar.xz
bind_dynamic-f50ae72ec3417cae55dd4e085991c01af9fdc5f1.zip
Initial commitstart
Diffstat (limited to 'contrib/idn/idnkit-1.0-src/wsock/wsock20')
-rw-r--r--contrib/idn/idnkit-1.0-src/wsock/wsock20/dlldef.h123
-rw-r--r--contrib/idn/idnkit-1.0-src/wsock/wsock20/dllfunc.c592
-rw-r--r--contrib/idn/idnkit-1.0-src/wsock/wsock20/dllload.c62
-rw-r--r--contrib/idn/idnkit-1.0-src/wsock/wsock20/dllmain.c94
-rw-r--r--contrib/idn/idnkit-1.0-src/wsock/wsock20/dllstub.c2168
-rw-r--r--contrib/idn/idnkit-1.0-src/wsock/wsock20/make.wnt97
-rw-r--r--contrib/idn/idnkit-1.0-src/wsock/wsock20/ws2_32.def120
7 files changed, 3256 insertions, 0 deletions
diff --git a/contrib/idn/idnkit-1.0-src/wsock/wsock20/dlldef.h b/contrib/idn/idnkit-1.0-src/wsock/wsock20/dlldef.h
new file mode 100644
index 0000000..52a2567
--- /dev/null
+++ b/contrib/idn/idnkit-1.0-src/wsock/wsock20/dlldef.h
@@ -0,0 +1,123 @@
+/*
+ * dlldef.h
+ */
+
+/*
+ * Copyright (c) 2000 Japan Network Information Center. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ *
+ * LICENSE TERMS AND CONDITIONS
+ *
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ *
+ * 1. Use, Modification and Redistribution (including distribution of any
+ * modified or derived work) in source and/or binary forms is permitted
+ * under this License Terms and Conditions.
+ *
+ * 2. Redistribution of source code must retain the copyright notices as they
+ * appear in each source code file, this License Terms and Conditions.
+ *
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ * this License Terms and Conditions, in the documentation and/or other
+ * materials provided with the distribution. For the purposes of binary
+ * distribution the "Copyright Notice" refers to the following language:
+ * "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved."
+ *
+ * 4. The name of JPNIC may not be used to endorse or promote products
+ * derived from this Software without specific prior written approval of
+ * JPNIC.
+ *
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#ifndef _DLLDEF_H
+#define _DLLDEF_H
+
+#include "../common/wrapcommon.h"
+
+/*
+ * Execution Tracing
+ */
+
+extern int procPid;
+
+#ifdef DEBUG
+#define TRACE idnPrintf
+#define FATAL idnPrintf
+#else
+#define TRACE
+#define FATAL idnPrintf
+#endif
+
+/*
+ * entry points to wrap
+ */
+
+extern int WSAAPI
+_org_gethostname(char FAR * name, int namelen);
+
+extern struct hostent FAR * WSAAPI
+_org_gethostbyaddr(const char FAR * addr, int len, int type);
+
+extern struct hostent FAR * WSAAPI
+_org_gethostbyname(const char FAR * name);
+
+extern HANDLE WSAAPI
+_org_WSAAsyncGetHostByName(HWND hWnd, u_int wMsg, const char FAR * name,
+ char FAR * buf,int buflen);
+
+extern HANDLE WSAAPI
+_org_WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, const char FAR * addr,
+ int len, int type, char FAR * buf, int buflen);
+
+extern INT WSAAPI
+_org_WSALookupServiceBeginA(LPWSAQUERYSETA lpqsRestrictions,
+ DWORD dwControlFlags,
+ LPHANDLE lphLookup);
+
+extern INT WSAAPI
+_org_WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions,
+ DWORD dwControlFlags,
+ LPHANDLE lphLookup);
+
+extern INT WSAAPI
+_org_WSALookupServiceNextA(HANDLE hLookup,
+ DWORD dwControlFlags,
+ LPDWORD lpdwBufferLength,
+ LPWSAQUERYSETA lpqsResults);
+
+extern INT WSAAPI
+_org_WSALookupServiceNextW(HANDLE hLookup,
+ DWORD dwControlFlags,
+ LPDWORD lpdwBufferLength,
+ LPWSAQUERYSETW lpqsResults);
+
+extern INT WSAAPI
+_org_WSALookupServiceEnd(HANDLE hLookup);
+
+extern int WSAAPI
+_org_getaddrinfo(const char *nodename, const char *servname,
+ LPVOID hints, LPVOID res);
+
+extern void WSAAPI
+_org_freeaddrinfo(LPVOID aip);
+
+extern int WSAAPI
+_org_getnameinfo(LPVOID sa, DWORD salen, char* host, DWORD hostlen,
+ char* serv, DWORD servlen, int flags);
+
+#endif /* _DLLDEF_H */
diff --git a/contrib/idn/idnkit-1.0-src/wsock/wsock20/dllfunc.c b/contrib/idn/idnkit-1.0-src/wsock/wsock20/dllfunc.c
new file mode 100644
index 0000000..cec2d06
--- /dev/null
+++ b/contrib/idn/idnkit-1.0-src/wsock/wsock20/dllfunc.c
@@ -0,0 +1,592 @@
+/*
+ * dllfunc.c - wrapper functions
+ */
+
+/*
+ * Copyright (c) 2000,2002 Japan Network Information Center.
+ * All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ *
+ * LICENSE TERMS AND CONDITIONS
+ *
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ *
+ * 1. Use, Modification and Redistribution (including distribution of any
+ * modified or derived work) in source and/or binary forms is permitted
+ * under this License Terms and Conditions.
+ *
+ * 2. Redistribution of source code must retain the copyright notices as they
+ * appear in each source code file, this License Terms and Conditions.
+ *
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ * this License Terms and Conditions, in the documentation and/or other
+ * materials provided with the distribution. For the purposes of binary
+ * distribution the "Copyright Notice" refers to the following language:
+ * "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved."
+ *
+ * 4. The name of JPNIC may not be used to endorse or promote products
+ * derived from this Software without specific prior written approval of
+ * JPNIC.
+ *
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#include <windows.h>
+#include <svcguid.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <process.h>
+
+#include "dlldef.h"
+
+#ifndef EAI_MEMORY
+#define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY
+#endif
+#ifndef EAI_FAIL
+#define EAI_FAIL WSANO_RECOVERY
+#endif
+
+static GUID guid_habn = SVCID_INET_HOSTADDRBYNAME;
+static GUID guid_habis = SVCID_INET_HOSTADDRBYINETSTRING;
+
+#define SVCID_IS_HABN(p) (memcmp(p, &guid_habn, sizeof(GUID)) == 0)
+#define SVCID_IS_HABIS(p) (memcmp(p, &guid_habis, sizeof(GUID)) == 0)
+
+/*
+ * Rename addrinfo to my_addrinfo for avoiding possible name conflict.
+ */
+struct my_addrinfo {
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ char *ai_canonname;
+ struct sockaddr *ai_addr;
+ struct my_addrinfo *ai_next;
+};
+
+typedef struct obj_lock {
+ void *key;
+ struct obj_lock *next;
+} obj_lock_t;
+
+#define OBJLOCKHASH_SIZE 127
+static obj_lock_t *obj_lock_hash[OBJLOCKHASH_SIZE];
+
+static int obj_hash(void *key);
+static int obj_islocked(void *key);
+static void obj_lock(void *key);
+static void obj_unlock(void *key);
+static char *decode_name_dynamic(const char *name, idn_resconf_t idnctx);
+static struct my_addrinfo
+ *copy_decode_addrinfo_dynamic(struct my_addrinfo *aip,
+ idn_resconf_t idnctx);
+static void free_copied_addrinfo(struct my_addrinfo *aip);
+
+WRAPPER_EXPORT int WSAAPI
+gethostname(char FAR * name, int namelen) {
+ int ret;
+
+ TRACE("ENTER gethostname\n");
+ ret = _org_gethostname(name, namelen);
+ TRACE("LEAVE gethostname %d <%-.100s>\n", ret, name);
+
+ return (ret);
+}
+
+WRAPPER_EXPORT struct hostent FAR * WSAAPI
+gethostbyname(const char FAR * name) {
+ struct hostent FAR *ret;
+ char nbuff[256];
+ char hbuff[256];
+ BOOL stat;
+ idn_resconf_t encodeCtx;
+
+ TRACE("ENTER gethostbyname <%-.100s>\n",
+ (name != NULL ? name : "NULL"));
+
+ encodeCtx = idnGetContext();
+
+ if (encodeCtx == NULL || name == NULL) {
+ ret = _org_gethostbyname(name);
+ } else {
+ stat = idnConvReq(encodeCtx, name, nbuff, sizeof(nbuff));
+ if (stat == FALSE) {
+ TRACE("idnConvReq failed\n");
+ ret = NULL;
+ } else {
+ TRACE("Converted Name <%s>\n",
+ dumpName(nbuff, hbuff, sizeof(hbuff)));
+ ret = _org_gethostbyname(nbuff);
+ }
+ }
+
+ if (ret != NULL && encodeCtx != NULL) {
+ TRACE("Resulting Name <%s>\n",
+ dumpName(ret->h_name, hbuff, sizeof(hbuff)));
+ stat = idnConvRsp(encodeCtx, ret->h_name,
+ nbuff, sizeof(nbuff));
+ if (stat == FALSE) {
+ TRACE("Decoding failed - return the name verbatim\n");
+ } else {
+ TRACE("Converted Back <%s>\n",
+ dumpName(nbuff, hbuff, sizeof(hbuff)));
+ strcpy(ret->h_name, nbuff);
+ }
+ }
+
+ if (ret == NULL) {
+ TRACE("LEAVE gethostbyname NULL\n");
+ } else {
+ TRACE("LEAVE gethostbyname <%s>\n",
+ dumpHost(ret, hbuff, sizeof(hbuff)));
+ }
+ return (ret);
+}
+
+WRAPPER_EXPORT struct hostent FAR * WSAAPI
+gethostbyaddr(const char FAR * addr, int len, int type) {
+ struct hostent FAR *ret;
+ char nbuff[256];
+ char abuff[256];
+ char hbuff[256];
+ BOOL stat;
+ idn_resconf_t encodeCtx;
+
+ TRACE("ENTER gethostbyaddr <%s>\n",
+ dumpAddr(addr, len, abuff, sizeof(abuff)));
+
+ encodeCtx = idnGetContext();
+
+ ret = _org_gethostbyaddr(addr, len, type);
+
+ if (ret != NULL && encodeCtx != NULL) {
+ TRACE("Resulting Name <%s>\n",
+ dumpName(ret->h_name, hbuff, sizeof(hbuff)));
+ stat = idnConvRsp(encodeCtx, ret->h_name,
+ nbuff, sizeof(nbuff));
+ if (stat == FALSE) {
+ TRACE("Decoding failed - return the name verbatim\n");
+ } else {
+ TRACE("Converted Back <%s>\n",
+ dumpName(nbuff, hbuff, sizeof(hbuff)));
+ strcpy(ret->h_name, nbuff);
+ }
+ }
+
+ if (ret == NULL) {
+ TRACE("LEAVE gethostbyaddr NULL\n");
+ } else {
+ TRACE("LEAVE gethostbyaddr <%s>\n",
+ dumpHost(ret, hbuff, sizeof(hbuff)));
+ }
+ return (ret);
+}
+
+WRAPPER_EXPORT HANDLE WSAAPI
+WSAAsyncGetHostByName(HWND hWnd, u_int wMsg,
+ const char FAR * name, char FAR * buf, int buflen)
+{
+ HANDLE ret;
+ char nbuff[256];
+ char hbuff[256];
+ idn_resconf_t encodeCtx;
+
+ TRACE("ENTER WSAAsyncGetHostByName <%-.100s>\n", name);
+
+ encodeCtx = idnGetContext();
+
+ if (encodeCtx == NULL || name == NULL) {
+ ret = _org_WSAAsyncGetHostByName(hWnd, wMsg,
+ name, buf, buflen);
+ } else {
+ idnHook(hWnd, wMsg, buf, encodeCtx);
+ idnConvReq(encodeCtx, name, nbuff, sizeof(nbuff));
+ TRACE("Converted Name <%s>\n",
+ dumpName(nbuff, hbuff, sizeof(hbuff)));
+ ret = _org_WSAAsyncGetHostByName(hWnd, wMsg, nbuff,
+ buf, buflen);
+ }
+
+ TRACE("LEAVE WSAAsyncGetHostByName HANDLE %08x\n", ret);
+
+ return (ret);
+}
+
+WRAPPER_EXPORT HANDLE WSAAPI
+WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, const char FAR * addr,
+ int len, int type, char FAR * buf, int buflen)
+{
+ HANDLE ret;
+ char abuff[256];
+ idn_resconf_t encodeCtx;
+
+ encodeCtx = idnGetContext();
+
+ if (encodeCtx != NULL) {
+ idnHook(hWnd, wMsg, buf, encodeCtx);
+ }
+
+ TRACE("ENTER WSAAsyncGetHostByAddr <%s>\n",
+ dumpAddr(addr, len, abuff, sizeof(abuff)));
+ ret = _org_WSAAsyncGetHostByAddr(hWnd, wMsg, addr, len, type,
+ buf, buflen);
+ TRACE("LEAVE WSAAsyncGetHostByAddr HANDLE %08x\n", ret);
+
+ return (ret);
+}
+
+WRAPPER_EXPORT INT WSAAPI
+WSALookupServiceBeginA(LPWSAQUERYSETA lpqsRestrictions,
+ DWORD dwControlFlags, LPHANDLE lphLookup)
+{
+ INT ret;
+ char nbuff[256];
+ char hbuff[256];
+ LPSTR name = lpqsRestrictions->lpszServiceInstanceName;
+ LPGUID class = lpqsRestrictions->lpServiceClassId;
+ idn_resconf_t encodeCtx;
+
+ TRACE("ENTER WSALookupServiceBeginA <%-.100s>\n",
+ name == NULL ? "<NULL>" : name);
+
+ encodeCtx = idnGetContext();
+
+ if (name != NULL && encodeCtx != NULL && SVCID_IS_HABN(class) == 0) {
+ idnConvReq(encodeCtx, name, nbuff, sizeof(nbuff));
+ TRACE("Converted Name <%s>\n",
+ dumpName(nbuff, hbuff, sizeof(hbuff)));
+ /* strcpy(lpqsRestrictions->lpszQueryString, nbuff); */
+ lpqsRestrictions->lpszServiceInstanceName = nbuff;
+ }
+ ret = _org_WSALookupServiceBeginA(lpqsRestrictions,
+ dwControlFlags, lphLookup);
+ TRACE("LEAVE WSALookupServiceBeginA %d\n", ret);
+
+ return (ret);
+}
+
+WRAPPER_EXPORT INT WSAAPI
+WSALookupServiceNextA(HANDLE hLookup, DWORD dwControlFlags,
+ LPDWORD lpdwBufferLength, LPWSAQUERYSETA lpqsResults)
+{
+ INT ret;
+ char nbuff[256];
+ char hbuff[256];
+ LPGUID class;
+ idn_resconf_t encodeCtx;
+
+ TRACE("ENTER WSALookupServiceNextA\n");
+
+ encodeCtx = idnGetContext();
+
+ ret = _org_WSALookupServiceNextA(hLookup, dwControlFlags,
+ lpdwBufferLength, lpqsResults);
+ class = lpqsResults->lpServiceClassId;
+
+ if (ret == 0 &&
+ encodeCtx != NULL &&
+ (dwControlFlags & LUP_RETURN_NAME) &&
+ (SVCID_IS_HABN(class) || SVCID_IS_HABIS(class))) {
+ TRACE("Resulting Name <%s>\n",
+ dumpName(lpqsResults->lpszServiceInstanceName,
+ hbuff, sizeof(hbuff)));
+ if (idnConvRsp(encodeCtx,
+ lpqsResults->lpszServiceInstanceName,
+ nbuff, sizeof(nbuff)) == FALSE) {
+ TRACE("Decoding failed - return the name verbatim\n");
+ } else {
+ TRACE("Converted Back <%s>\n",
+ dumpName(nbuff, hbuff, sizeof(hbuff)));
+ strcpy(lpqsResults->lpszServiceInstanceName, nbuff);
+ }
+ }
+ TRACE("LEAVE WSALookupServiceNextA %d <%s>\n", ret, nbuff);
+
+ return (ret);
+}
+
+WRAPPER_EXPORT INT WSAAPI
+WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions,
+ DWORD dwControlFlags, LPHANDLE lphLookup)
+{
+ INT ret;
+
+ TRACE("ENTER WSALookupServiceBeginW\n");
+ ret = _org_WSALookupServiceBeginW(lpqsRestrictions,
+ dwControlFlags,lphLookup);
+ TRACE("LEAVE WSALookupServiceBeginW %d\n", ret);
+
+ return (ret);
+}
+
+WRAPPER_EXPORT INT WSAAPI
+WSALookupServiceNextW(HANDLE hLookup, DWORD dwControlFlags,
+ LPDWORD lpdwBufferLength, LPWSAQUERYSETW lpqsResults)
+{
+ INT ret;
+
+ TRACE("ENTER WSALookupServiceNextW\n");
+ ret = _org_WSALookupServiceNextW(hLookup, dwControlFlags,
+ lpdwBufferLength, lpqsResults);
+ TRACE("LEAVE WSALookupServiceNextW %d\n", ret);
+
+ return (ret);
+}
+
+WRAPPER_EXPORT INT WSAAPI
+WSALookupServiceEnd(HANDLE hLookup) {
+ INT ret;
+
+ TRACE("ENTER WSALookupServiceEnd\n");
+ ret = _org_WSALookupServiceEnd(hLookup);
+ TRACE("LEAVE WSALookupServiceEnd %d\n", ret);
+
+ return (ret);
+}
+
+static int
+obj_hash(void *key) {
+ /*
+ * Hash function for obj_*.
+ * 'key' is supposed to be an address.
+ */
+ unsigned long v = (unsigned long)key;
+
+ return ((v >> 3) % OBJLOCKHASH_SIZE);
+}
+
+static int
+obj_islocked(void *key)
+{
+ /*
+ * Check if the object specified by 'key' is locked.
+ * Return 1 if so, 0 otherwise.
+ */
+ int h = obj_hash(key);
+ obj_lock_t *olp = obj_lock_hash[h];
+
+ while (olp != NULL) {
+ if (olp->key == key)
+ return (1);
+ olp = olp->next;
+ }
+ return (0);
+}
+
+static void
+obj_lock(void *key)
+{
+ /*
+ * Lock an object specified by 'key'.
+ */
+ int h = obj_hash(key);
+ obj_lock_t *olp;
+
+ olp = malloc(sizeof(obj_lock_t));
+ if (olp != NULL) {
+ olp->key = key;
+ olp->next = obj_lock_hash[h];
+ obj_lock_hash[h] = olp;
+ }
+}
+
+static void
+obj_unlock(void *key)
+{
+ /*
+ * Unlock an object specified by 'key'.
+ */
+ int h = obj_hash(key);
+ obj_lock_t *olp, *olp0;
+
+ olp = obj_lock_hash[h];
+ olp0 = NULL;
+ while (olp != NULL) {
+ if (olp->key == key) {
+ if (olp0 == NULL)
+ obj_lock_hash[h] = olp->next;
+ else
+ olp0->next = olp->next;
+ free(olp);
+ return;
+ }
+ olp0 = olp;
+ olp = olp->next;
+ }
+}
+
+static char *
+decode_name_dynamic(const char *name, idn_resconf_t idnctx) {
+ BOOL stat;
+ char buf[256], tmp[256];
+ char *s;
+
+ if (idnConvRsp(idnctx, name, buf, sizeof(buf)) == TRUE) {
+ TRACE("Converted Back <%s>\n",
+ dumpName(buf, tmp, sizeof(tmp)));
+ name = buf;
+ } else {
+ TRACE("Decoding failed - return the name verbatim\n");
+ }
+ s = malloc(strlen(name) + 1);
+ if (s == NULL)
+ return (NULL);
+ else
+ return (strcpy(s, name));
+}
+
+static struct my_addrinfo *
+copy_decode_addrinfo_dynamic(struct my_addrinfo *aip, idn_resconf_t idnctx)
+{
+ struct my_addrinfo *newaip;
+
+ if (aip == NULL)
+ return (NULL);
+
+ newaip = malloc(sizeof(struct my_addrinfo) + aip->ai_addrlen);
+ if (newaip == NULL)
+ return (NULL);
+
+ *newaip = *aip;
+ newaip->ai_addr = (struct sockaddr *)(newaip + 1);
+ memcpy(newaip->ai_addr, aip->ai_addr, aip->ai_addrlen);
+
+ if (newaip->ai_canonname != NULL)
+ newaip->ai_canonname = decode_name_dynamic(aip->ai_canonname,
+ idnctx);
+
+ newaip->ai_next = copy_decode_addrinfo_dynamic(aip->ai_next, idnctx);
+ return (newaip);
+}
+
+static void
+free_copied_addrinfo(struct my_addrinfo *aip) {
+ while (aip != NULL) {
+ struct my_addrinfo *next = aip->ai_next;
+
+ if (aip->ai_canonname != NULL)
+ free(aip->ai_canonname);
+ free(aip);
+ aip = next;
+ }
+}
+
+WRAPPER_EXPORT int WSAAPI
+getaddrinfo(const char *nodename, const char *servname,
+ const struct my_addrinfo *hints, struct my_addrinfo **res)
+{
+ char namebuf[256];
+ BOOL stat;
+ struct my_addrinfo *aip;
+ int err;
+ idn_resconf_t encodeCtx;
+
+ TRACE("ENTER getaddrinfo <%-.100s>\n", nodename ? nodename : "NULL");
+
+ encodeCtx = idnGetContext();
+
+ if (nodename == NULL || encodeCtx == NULL) {
+ TRACE("conversion unnecessary\n");
+ err = _org_getaddrinfo(nodename, servname, hints, res);
+ } else {
+ stat = idnConvReq(encodeCtx, nodename,
+ namebuf, sizeof(namebuf));
+ if (stat == TRUE) {
+ nodename = namebuf;
+ TRACE("Converted Name <%-.100s>\n", namebuf);
+ }
+
+ err = _org_getaddrinfo(nodename, servname, hints, &aip);
+ if (err == 0 && aip != NULL) {
+ *res = copy_decode_addrinfo_dynamic(aip, encodeCtx);
+ if (*res == NULL)
+ err = EAI_FAIL;
+ else
+ obj_lock(*res);
+ if (aip != NULL)
+ _org_freeaddrinfo(aip);
+ }
+ }
+
+ TRACE("LEAVE getaddrinfo %d\n", err);
+ return (err);
+}
+
+WRAPPER_EXPORT void WSAAPI
+freeaddrinfo(struct my_addrinfo *aip) {
+ TRACE("ENTER freeaddrinfo aip=%p\n", (void *)aip);
+
+ if (obj_islocked(aip)) {
+ /*
+ * We allocated the data.
+ */
+ obj_unlock(aip);
+ free_copied_addrinfo(aip);
+ } else {
+ /*
+ * It was allocated the original getaddrinfo().
+ */
+ TRACE("Not allocated by the wrapper\n");
+ _org_freeaddrinfo(aip);
+ }
+ TRACE("LEAVE freeaddrinfo\n");
+}
+
+WRAPPER_EXPORT int WSAAPI
+getnameinfo(const struct sockaddr *sa, DWORD salen,
+ char *host, DWORD hostlen, char *serv,
+ DWORD servlen, int flags)
+{
+ char name[256];
+ size_t namelen = sizeof(name);
+ int code;
+ BOOL stat;
+ idn_resconf_t encodeCtx;
+
+ TRACE("ENTER getnameinfo\n");
+
+ encodeCtx = idnGetContext();
+
+ if (host == NULL || hostlen == 0 || encodeCtx == NULL) {
+ TRACE("conversion unnecessary\n");
+ code = _org_getnameinfo(sa, salen, host, hostlen,
+ serv, servlen, flags);
+ } else {
+ code = _org_getnameinfo(sa, salen, name, namelen,
+ serv, servlen, flags);
+ if (code == 0 && name[0] != '\0') {
+ stat = idnConvRsp(encodeCtx, name, host, hostlen);
+ if (stat == FALSE) {
+ TRACE("Decoding failed - return the name verbatim\n");
+ if (strlen(name) >= hostlen) {
+ code = EAI_FAIL;
+ } else {
+ strcpy(host, name);
+ }
+ } else {
+ TRACE("Converted Back <%s>\n",
+ dumpName(host, name, sizeof(name)));
+ }
+ }
+ }
+
+ TRACE("LEAVE getnameinfo %d\n", code);
+ return (code);
+}
diff --git a/contrib/idn/idnkit-1.0-src/wsock/wsock20/dllload.c b/contrib/idn/idnkit-1.0-src/wsock/wsock20/dllload.c
new file mode 100644
index 0000000..0f1257e
--- /dev/null
+++ b/contrib/idn/idnkit-1.0-src/wsock/wsock20/dllload.c
@@ -0,0 +1,62 @@
+/*
+ * dllload.c - load original entries
+ */
+
+/*
+ * Copyright (c) 2000 Japan Network Information Center. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ *
+ * LICENSE TERMS AND CONDITIONS
+ *
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ *
+ * 1. Use, Modification and Redistribution (including distribution of any
+ * modified or derived work) in source and/or binary forms is permitted
+ * under this License Terms and Conditions.
+ *
+ * 2. Redistribution of source code must retain the copyright notices as they
+ * appear in each source code file, this License Terms and Conditions.
+ *
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ * this License Terms and Conditions, in the documentation and/or other
+ * materials provided with the distribution. For the purposes of binary
+ * distribution the "Copyright Notice" refers to the following language:
+ * "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved."
+ *
+ * 4. The name of JPNIC may not be used to endorse or promote products
+ * derived from this Software without specific prior written approval of
+ * JPNIC.
+ *
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#include <windows.h>
+#include <winsock2.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <process.h>
+
+#include "dlldef.h"
+
+/*
+ * Manages original DLL
+ */
+
+#define DLLHANDLE idnWinsockHandle()
+
+#include "dllstub.c"
diff --git a/contrib/idn/idnkit-1.0-src/wsock/wsock20/dllmain.c b/contrib/idn/idnkit-1.0-src/wsock/wsock20/dllmain.c
new file mode 100644
index 0000000..c6609bc
--- /dev/null
+++ b/contrib/idn/idnkit-1.0-src/wsock/wsock20/dllmain.c
@@ -0,0 +1,94 @@
+/*
+ * dllmain.c - entry for DLL
+ */
+
+/*
+ * Copyright (c) 2000 Japan Network Information Center. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ *
+ * LICENSE TERMS AND CONDITIONS
+ *
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ *
+ * 1. Use, Modification and Redistribution (including distribution of any
+ * modified or derived work) in source and/or binary forms is permitted
+ * under this License Terms and Conditions.
+ *
+ * 2. Redistribution of source code must retain the copyright notices as they
+ * appear in each source code file, this License Terms and Conditions.
+ *
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ * this License Terms and Conditions, in the documentation and/or other
+ * materials provided with the distribution. For the purposes of binary
+ * distribution the "Copyright Notice" refers to the following language:
+ * "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved."
+ *
+ * 4. The name of JPNIC may not be used to endorse or promote products
+ * derived from this Software without specific prior written approval of
+ * JPNIC.
+ *
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#include <windows.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <process.h>
+
+#include "dlldef.h"
+
+/*
+ * Control Variables
+ */
+
+int procPid = 0;
+
+static char procExe[256];
+
+/*
+ * DLL Entry
+ */
+
+BOOL APIENTRY
+DllMain(HMODULE hmod, DWORD reason, LPVOID *resv) {
+ switch (reason) {
+ case DLL_PROCESS_ATTACH:
+ procPid = getpid();
+ GetModuleFileName(NULL, procExe, 256);
+
+ idnLogInit("ws20");
+ idnHookInit();
+
+ TRACE("Attached to Process <%s>\n", procExe);
+ return (idnWinsockVersion("2.0"));
+
+ case DLL_PROCESS_DETACH:
+ idnConvDone(idnGetContext());
+ idnHookDone();
+ TRACE("Detached from Process\n");
+ idnLogFinish();
+ break;
+
+ case DLL_THREAD_ATTACH:
+ break;
+ case DLL_THREAD_DETACH:
+ break;
+ }
+
+ return (TRUE);
+}
diff --git a/contrib/idn/idnkit-1.0-src/wsock/wsock20/dllstub.c b/contrib/idn/idnkit-1.0-src/wsock/wsock20/dllstub.c
new file mode 100644
index 0000000..afc4537
--- /dev/null
+++ b/contrib/idn/idnkit-1.0-src/wsock/wsock20/dllstub.c
@@ -0,0 +1,2168 @@
+/* $Id: dllstub.c,v 1.1.1.1 2003/06/04 00:27:51 marka Exp $ */
+
+SOCKET PASCAL
+accept(SOCKET a0, struct sockaddr* a1, int* a2)
+{
+ static SOCKET (PASCAL *fp)(SOCKET a0, struct sockaddr* a1, int* a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub accept() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "accept")) == NULL) {
+ FATAL("cannot find entry accept (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int PASCAL
+bind(SOCKET a0, const struct sockaddr* a1, int a2)
+{
+ static int (PASCAL *fp)(SOCKET a0, const struct sockaddr* a1, int a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub bind() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "bind")) == NULL) {
+ FATAL("cannot find entry bind (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int PASCAL
+closesocket(SOCKET a0)
+{
+ static int (PASCAL *fp)(SOCKET a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub closesocket() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "closesocket")) == NULL) {
+ FATAL("cannot find entry closesocket (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+int PASCAL
+connect(SOCKET a0, const struct sockaddr* a1, int a2)
+{
+ static int (PASCAL *fp)(SOCKET a0, const struct sockaddr* a1, int a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub connect() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "connect")) == NULL) {
+ FATAL("cannot find entry connect (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int PASCAL
+getpeername(SOCKET a0, struct sockaddr* a1, int* a2)
+{
+ static int (PASCAL *fp)(SOCKET a0, struct sockaddr* a1, int* a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub getpeername() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "getpeername")) == NULL) {
+ FATAL("cannot find entry getpeername (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int PASCAL
+getsockname(SOCKET a0, struct sockaddr* a1, int* a2)
+{
+ static int (PASCAL *fp)(SOCKET a0, struct sockaddr* a1, int* a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub getsockname() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "getsockname")) == NULL) {
+ FATAL("cannot find entry getsockname (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int PASCAL
+getsockopt(SOCKET a0, int a1, int a2, char* a3, int* a4)
+{
+ static int (PASCAL *fp)(SOCKET a0, int a1, int a2, char* a3, int* a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub getsockopt() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "getsockopt")) == NULL) {
+ FATAL("cannot find entry getsockopt (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+u_long PASCAL
+htonl(u_long a0)
+{
+ static u_long (PASCAL *fp)(u_long a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub htonl() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "htonl")) == NULL) {
+ FATAL("cannot find entry htonl (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+u_short PASCAL
+htons(u_short a0)
+{
+ static u_short (PASCAL *fp)(u_short a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub htons() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "htons")) == NULL) {
+ FATAL("cannot find entry htons (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+int PASCAL
+ioctlsocket(SOCKET a0, long a1, u_long * a2)
+{
+ static int (PASCAL *fp)(SOCKET a0, long a1, u_long * a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub ioctlsocket() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "ioctlsocket")) == NULL) {
+ FATAL("cannot find entry ioctlsocket (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+unsigned long PASCAL
+inet_addr(const char* a0)
+{
+ static unsigned long (PASCAL *fp)(const char* a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub inet_addr() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "inet_addr")) == NULL) {
+ FATAL("cannot find entry inet_addr (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+ char * PASCAL
+inet_ntoa(struct in_addr a0)
+{
+ static char * (PASCAL *fp)(struct in_addr a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub inet_ntoa() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "inet_ntoa")) == NULL) {
+ FATAL("cannot find entry inet_ntoa (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+int PASCAL
+listen(SOCKET a0, int a1)
+{
+ static int (PASCAL *fp)(SOCKET a0, int a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub listen() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "listen")) == NULL) {
+ FATAL("cannot find entry listen (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+u_long PASCAL
+ntohl(u_long a0)
+{
+ static u_long (PASCAL *fp)(u_long a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub ntohl() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "ntohl")) == NULL) {
+ FATAL("cannot find entry ntohl (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+u_short PASCAL
+ntohs(u_short a0)
+{
+ static u_short (PASCAL *fp)(u_short a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub ntohs() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "ntohs")) == NULL) {
+ FATAL("cannot find entry ntohs (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+int PASCAL
+recv(SOCKET a0, char* a1, int a2, int a3)
+{
+ static int (PASCAL *fp)(SOCKET a0, char* a1, int a2, int a3);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub recv() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "recv")) == NULL) {
+ FATAL("cannot find entry recv (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3);
+}
+
+int PASCAL
+recvfrom(SOCKET a0, char* a1, int a2, int a3, struct sockaddr* a4, int* a5)
+{
+ static int (PASCAL *fp)(SOCKET a0, char* a1, int a2, int a3, struct sockaddr* a4, int* a5);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub recvfrom() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "recvfrom")) == NULL) {
+ FATAL("cannot find entry recvfrom (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5);
+}
+
+int PASCAL
+select(int a0, fd_set* a1, fd_set* a2, fd_set* a3, const struct timeval* a4)
+{
+ static int (PASCAL *fp)(int a0, fd_set* a1, fd_set* a2, fd_set* a3, const struct timeval* a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub select() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "select")) == NULL) {
+ FATAL("cannot find entry select (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+int PASCAL
+send(SOCKET a0, const char* a1, int a2, int a3)
+{
+ static int (PASCAL *fp)(SOCKET a0, const char* a1, int a2, int a3);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub send() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "send")) == NULL) {
+ FATAL("cannot find entry send (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3);
+}
+
+int PASCAL
+sendto(SOCKET a0, const char* a1, int a2, int a3, const struct sockaddr* a4, int a5)
+{
+ static int (PASCAL *fp)(SOCKET a0, const char* a1, int a2, int a3, const struct sockaddr* a4, int a5);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub sendto() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "sendto")) == NULL) {
+ FATAL("cannot find entry sendto (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5);
+}
+
+int PASCAL
+setsockopt(SOCKET a0, int a1, int a2, const char* a3, int a4)
+{
+ static int (PASCAL *fp)(SOCKET a0, int a1, int a2, const char* a3, int a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub setsockopt() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "setsockopt")) == NULL) {
+ FATAL("cannot find entry setsockopt (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+int PASCAL
+shutdown(SOCKET a0, int a1)
+{
+ static int (PASCAL *fp)(SOCKET a0, int a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub shutdown() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "shutdown")) == NULL) {
+ FATAL("cannot find entry shutdown (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+SOCKET PASCAL
+socket(int a0, int a1, int a2)
+{
+ static SOCKET (PASCAL *fp)(int a0, int a1, int a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub socket() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "socket")) == NULL) {
+ FATAL("cannot find entry socket (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int PASCAL
+WSApSetPostRoutine(int a0)
+{
+ static int (PASCAL *fp)(int a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSApSetPostRoutine() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSApSetPostRoutine")) == NULL) {
+ FATAL("cannot find entry WSApSetPostRoutine (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+WSAEVENT WSAAPI
+WPUCompleteOverlappedRequest(SOCKET a0, LPWSAOVERLAPPED a1, DWORD a2, DWORD a3, LPINT a4)
+{
+ static WSAEVENT (WSAAPI *fp)(SOCKET a0, LPWSAOVERLAPPED a1, DWORD a2, DWORD a3, LPINT a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WPUCompleteOverlappedRequest() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WPUCompleteOverlappedRequest")) == NULL) {
+ FATAL("cannot find entry WPUCompleteOverlappedRequest (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+SOCKET WINAPI
+WSAAccept(SOCKET a0, struct sockaddr * a1, LPINT a2, LPCONDITIONPROC a3, DWORD a4)
+{
+ static SOCKET (WINAPI *fp)(SOCKET a0, struct sockaddr * a1, LPINT a2, LPCONDITIONPROC a3, DWORD a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAAccept() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAAccept")) == NULL) {
+ FATAL("cannot find entry WSAAccept (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+INT WINAPI
+WSAAddressToStringA(LPSOCKADDR a0, DWORD a1, LPWSAPROTOCOL_INFOA a2, LPSTR a3, LPDWORD a4)
+{
+ static INT (WINAPI *fp)(LPSOCKADDR a0, DWORD a1, LPWSAPROTOCOL_INFOA a2, LPSTR a3, LPDWORD a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAAddressToStringA() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAAddressToStringA")) == NULL) {
+ FATAL("cannot find entry WSAAddressToStringA (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+INT WINAPI
+WSAAddressToStringW(LPSOCKADDR a0, DWORD a1, LPWSAPROTOCOL_INFOW a2, LPWSTR a3, LPDWORD a4)
+{
+ static INT (WINAPI *fp)(LPSOCKADDR a0, DWORD a1, LPWSAPROTOCOL_INFOW a2, LPWSTR a3, LPDWORD a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAAddressToStringW() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAAddressToStringW")) == NULL) {
+ FATAL("cannot find entry WSAAddressToStringW (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+BOOL WINAPI
+WSACloseEvent(WSAEVENT a0)
+{
+ static BOOL (WINAPI *fp)(WSAEVENT a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSACloseEvent() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSACloseEvent")) == NULL) {
+ FATAL("cannot find entry WSACloseEvent (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+int WINAPI
+WSAConnect(SOCKET a0, const struct sockaddr * a1, int a2, LPWSABUF a3, LPWSABUF a4, LPQOS a5, LPQOS a6)
+{
+ static int (WINAPI *fp)(SOCKET a0, const struct sockaddr * a1, int a2, LPWSABUF a3, LPWSABUF a4, LPQOS a5, LPQOS a6);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAConnect() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAConnect")) == NULL) {
+ FATAL("cannot find entry WSAConnect (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5, a6);
+}
+
+WSAEVENT WINAPI
+WSACreateEvent(void)
+{
+ static WSAEVENT (WINAPI *fp)(void);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSACreateEvent() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSACreateEvent")) == NULL) {
+ FATAL("cannot find entry WSACreateEvent (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)();
+}
+
+int WINAPI
+WSADuplicateSocketA(SOCKET a0, DWORD a1, LPWSAPROTOCOL_INFOA a2)
+{
+ static int (WINAPI *fp)(SOCKET a0, DWORD a1, LPWSAPROTOCOL_INFOA a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSADuplicateSocketA() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSADuplicateSocketA")) == NULL) {
+ FATAL("cannot find entry WSADuplicateSocketA (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int WINAPI
+WSADuplicateSocketW(SOCKET a0, DWORD a1, LPWSAPROTOCOL_INFOW a2)
+{
+ static int (WINAPI *fp)(SOCKET a0, DWORD a1, LPWSAPROTOCOL_INFOW a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSADuplicateSocketW() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSADuplicateSocketW")) == NULL) {
+ FATAL("cannot find entry WSADuplicateSocketW (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+INT WINAPI
+WSAEnumNameSpaceProvidersA(LPDWORD a0, LPWSANAMESPACE_INFOA a1)
+{
+ static INT (WINAPI *fp)(LPDWORD a0, LPWSANAMESPACE_INFOA a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAEnumNameSpaceProvidersA() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAEnumNameSpaceProvidersA")) == NULL) {
+ FATAL("cannot find entry WSAEnumNameSpaceProvidersA (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+INT WINAPI
+WSAEnumNameSpaceProvidersW(LPDWORD a0, LPWSANAMESPACE_INFOW a1)
+{
+ static INT (WINAPI *fp)(LPDWORD a0, LPWSANAMESPACE_INFOW a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAEnumNameSpaceProvidersW() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAEnumNameSpaceProvidersW")) == NULL) {
+ FATAL("cannot find entry WSAEnumNameSpaceProvidersW (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+int WINAPI
+WSAEnumNetworkEvents(SOCKET a0, WSAEVENT a1, LPWSANETWORKEVENTS a2)
+{
+ static int (WINAPI *fp)(SOCKET a0, WSAEVENT a1, LPWSANETWORKEVENTS a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAEnumNetworkEvents() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAEnumNetworkEvents")) == NULL) {
+ FATAL("cannot find entry WSAEnumNetworkEvents (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int WINAPI
+WSAEnumProtocolsA(LPINT a0, LPWSAPROTOCOL_INFOA a1, LPDWORD a2)
+{
+ static int (WINAPI *fp)(LPINT a0, LPWSAPROTOCOL_INFOA a1, LPDWORD a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAEnumProtocolsA() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAEnumProtocolsA")) == NULL) {
+ FATAL("cannot find entry WSAEnumProtocolsA (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int WINAPI
+WSAEnumProtocolsW(LPINT a0, LPWSAPROTOCOL_INFOW a1, LPDWORD a2)
+{
+ static int (WINAPI *fp)(LPINT a0, LPWSAPROTOCOL_INFOW a1, LPDWORD a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAEnumProtocolsW() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAEnumProtocolsW")) == NULL) {
+ FATAL("cannot find entry WSAEnumProtocolsW (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int WINAPI
+WSAEventSelect(SOCKET a0, WSAEVENT a1, long a2)
+{
+ static int (WINAPI *fp)(SOCKET a0, WSAEVENT a1, long a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAEventSelect() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAEventSelect")) == NULL) {
+ FATAL("cannot find entry WSAEventSelect (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+BOOL WINAPI
+WSAGetOverlappedResult(SOCKET a0, LPWSAOVERLAPPED a1, LPDWORD a2, BOOL a3, LPDWORD a4)
+{
+ static BOOL (WINAPI *fp)(SOCKET a0, LPWSAOVERLAPPED a1, LPDWORD a2, BOOL a3, LPDWORD a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAGetOverlappedResult() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAGetOverlappedResult")) == NULL) {
+ FATAL("cannot find entry WSAGetOverlappedResult (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+BOOL WINAPI
+WSAGetQOSByName(SOCKET a0, LPWSABUF a1, LPQOS a2)
+{
+ static BOOL (WINAPI *fp)(SOCKET a0, LPWSABUF a1, LPQOS a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAGetQOSByName() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAGetQOSByName")) == NULL) {
+ FATAL("cannot find entry WSAGetQOSByName (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+INT WINAPI
+WSAGetServiceClassInfoA(LPGUID a0, LPGUID a1, LPDWORD a2, LPWSASERVICECLASSINFOA a3)
+{
+ static INT (WINAPI *fp)(LPGUID a0, LPGUID a1, LPDWORD a2, LPWSASERVICECLASSINFOA a3);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAGetServiceClassInfoA() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAGetServiceClassInfoA")) == NULL) {
+ FATAL("cannot find entry WSAGetServiceClassInfoA (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3);
+}
+
+INT WINAPI
+WSAGetServiceClassInfoW(LPGUID a0, LPGUID a1, LPDWORD a2, LPWSASERVICECLASSINFOW a3)
+{
+ static INT (WINAPI *fp)(LPGUID a0, LPGUID a1, LPDWORD a2, LPWSASERVICECLASSINFOW a3);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAGetServiceClassInfoW() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAGetServiceClassInfoW")) == NULL) {
+ FATAL("cannot find entry WSAGetServiceClassInfoW (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3);
+}
+
+INT WINAPI
+WSAGetServiceClassNameByClassIdA(LPGUID a0, LPSTR a1, LPDWORD a2)
+{
+ static INT (WINAPI *fp)(LPGUID a0, LPSTR a1, LPDWORD a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAGetServiceClassNameByClassIdA() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAGetServiceClassNameByClassIdA")) == NULL) {
+ FATAL("cannot find entry WSAGetServiceClassNameByClassIdA (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+INT WINAPI
+WSAGetServiceClassNameByClassIdW(LPGUID a0, LPWSTR a1, LPDWORD a2)
+{
+ static INT (WINAPI *fp)(LPGUID a0, LPWSTR a1, LPDWORD a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAGetServiceClassNameByClassIdW() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAGetServiceClassNameByClassIdW")) == NULL) {
+ FATAL("cannot find entry WSAGetServiceClassNameByClassIdW (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int WINAPI
+WSAHtonl(SOCKET a0, unsigned long a1, unsigned long * a2)
+{
+ static int (WINAPI *fp)(SOCKET a0, unsigned long a1, unsigned long * a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAHtonl() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAHtonl")) == NULL) {
+ FATAL("cannot find entry WSAHtonl (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int WINAPI
+WSAHtons(SOCKET a0, unsigned short a1, unsigned short * a2)
+{
+ static int (WINAPI *fp)(SOCKET a0, unsigned short a1, unsigned short * a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAHtons() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAHtons")) == NULL) {
+ FATAL("cannot find entry WSAHtons (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+INT WINAPI
+WSAInstallServiceClassA(LPWSASERVICECLASSINFOA a0)
+{
+ static INT (WINAPI *fp)(LPWSASERVICECLASSINFOA a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAInstallServiceClassA() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAInstallServiceClassA")) == NULL) {
+ FATAL("cannot find entry WSAInstallServiceClassA (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+INT WINAPI
+WSAInstallServiceClassW(LPWSASERVICECLASSINFOW a0)
+{
+ static INT (WINAPI *fp)(LPWSASERVICECLASSINFOW a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAInstallServiceClassW() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAInstallServiceClassW")) == NULL) {
+ FATAL("cannot find entry WSAInstallServiceClassW (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+int WINAPI
+WSAIoctl(SOCKET a0, DWORD a1, LPVOID a2, DWORD a3, LPVOID a4, DWORD a5, LPDWORD a6, LPWSAOVERLAPPED a7, LPWSAOVERLAPPED_COMPLETION_ROUTINE a8)
+{
+ static int (WINAPI *fp)(SOCKET a0, DWORD a1, LPVOID a2, DWORD a3, LPVOID a4, DWORD a5, LPDWORD a6, LPWSAOVERLAPPED a7, LPWSAOVERLAPPED_COMPLETION_ROUTINE a8);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAIoctl() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAIoctl")) == NULL) {
+ FATAL("cannot find entry WSAIoctl (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7, a8);
+}
+
+ struct hostent * PASCAL
+_org_gethostbyaddr(const char* a0, int a1, int a2)
+{
+ static struct hostent * (PASCAL *fp)(const char* a0, int a1, int a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_gethostbyaddr() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "gethostbyaddr")) == NULL) {
+ FATAL("cannot find entry gethostbyaddr (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+ struct hostent * PASCAL
+_org_gethostbyname(const char* a0)
+{
+ static struct hostent * (PASCAL *fp)(const char* a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_gethostbyname() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "gethostbyname")) == NULL) {
+ FATAL("cannot find entry gethostbyname (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+ struct protoent * PASCAL
+getprotobyname(const char* a0)
+{
+ static struct protoent * (PASCAL *fp)(const char* a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub getprotobyname() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "getprotobyname")) == NULL) {
+ FATAL("cannot find entry getprotobyname (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+ struct protoent * PASCAL
+getprotobynumber(int a0)
+{
+ static struct protoent * (PASCAL *fp)(int a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub getprotobynumber() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "getprotobynumber")) == NULL) {
+ FATAL("cannot find entry getprotobynumber (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+ struct servent * PASCAL
+getservbyname(const char* a0, const char* a1)
+{
+ static struct servent * (PASCAL *fp)(const char* a0, const char* a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub getservbyname() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "getservbyname")) == NULL) {
+ FATAL("cannot find entry getservbyname (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+ struct servent * PASCAL
+getservbyport(int a0, const char* a1)
+{
+ static struct servent * (PASCAL *fp)(int a0, const char* a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub getservbyport() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "getservbyport")) == NULL) {
+ FATAL("cannot find entry getservbyport (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+int PASCAL
+_org_gethostname(char* a0, int a1)
+{
+ static int (PASCAL *fp)(char* a0, int a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_gethostname() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "gethostname")) == NULL) {
+ FATAL("cannot find entry gethostname (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+SOCKET WINAPI
+WSAJoinLeaf(SOCKET a0, const struct sockaddr * a1, int a2, LPWSABUF a3, LPWSABUF a4, LPQOS a5, LPQOS a6, DWORD a7)
+{
+ static SOCKET (WINAPI *fp)(SOCKET a0, const struct sockaddr * a1, int a2, LPWSABUF a3, LPWSABUF a4, LPQOS a5, LPQOS a6, DWORD a7);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAJoinLeaf() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAJoinLeaf")) == NULL) {
+ FATAL("cannot find entry WSAJoinLeaf (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7);
+}
+
+INT WINAPI
+_org_WSALookupServiceBeginA(LPWSAQUERYSETA a0, DWORD a1, LPHANDLE a2)
+{
+ static INT (WINAPI *fp)(LPWSAQUERYSETA a0, DWORD a1, LPHANDLE a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_WSALookupServiceBeginA() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSALookupServiceBeginA")) == NULL) {
+ FATAL("cannot find entry WSALookupServiceBeginA (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+INT WINAPI
+_org_WSALookupServiceBeginW(LPWSAQUERYSETW a0, DWORD a1, LPHANDLE a2)
+{
+ static INT (WINAPI *fp)(LPWSAQUERYSETW a0, DWORD a1, LPHANDLE a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_WSALookupServiceBeginW() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSALookupServiceBeginW")) == NULL) {
+ FATAL("cannot find entry WSALookupServiceBeginW (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+INT WINAPI
+_org_WSALookupServiceEnd(HANDLE a0)
+{
+ static INT (WINAPI *fp)(HANDLE a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_WSALookupServiceEnd() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSALookupServiceEnd")) == NULL) {
+ FATAL("cannot find entry WSALookupServiceEnd (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+INT WINAPI
+_org_WSALookupServiceNextA(HANDLE a0, DWORD a1, LPDWORD a2, LPWSAQUERYSETA a3)
+{
+ static INT (WINAPI *fp)(HANDLE a0, DWORD a1, LPDWORD a2, LPWSAQUERYSETA a3);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_WSALookupServiceNextA() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSALookupServiceNextA")) == NULL) {
+ FATAL("cannot find entry WSALookupServiceNextA (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3);
+}
+
+INT WINAPI
+_org_WSALookupServiceNextW(HANDLE a0, DWORD a1, LPDWORD a2, LPWSAQUERYSETW a3)
+{
+ static INT (WINAPI *fp)(HANDLE a0, DWORD a1, LPDWORD a2, LPWSAQUERYSETW a3);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_WSALookupServiceNextW() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSALookupServiceNextW")) == NULL) {
+ FATAL("cannot find entry WSALookupServiceNextW (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3);
+}
+
+int WINAPI
+WSANtohl(SOCKET a0, unsigned long a1, unsigned long * a2)
+{
+ static int (WINAPI *fp)(SOCKET a0, unsigned long a1, unsigned long * a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSANtohl() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSANtohl")) == NULL) {
+ FATAL("cannot find entry WSANtohl (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int WINAPI
+WSANtohs(SOCKET a0, unsigned short a1, unsigned short * a2)
+{
+ static int (WINAPI *fp)(SOCKET a0, unsigned short a1, unsigned short * a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSANtohs() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSANtohs")) == NULL) {
+ FATAL("cannot find entry WSANtohs (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int WSAAPI
+WSAProviderConfigChange(LPHANDLE a0, LPWSAOVERLAPPED a1, LPWSAOVERLAPPED_COMPLETION_ROUTINE a2)
+{
+ static int (WSAAPI *fp)(LPHANDLE a0, LPWSAOVERLAPPED a1, LPWSAOVERLAPPED_COMPLETION_ROUTINE a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAProviderConfigChange() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAProviderConfigChange")) == NULL) {
+ FATAL("cannot find entry WSAProviderConfigChange (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+int WINAPI
+WSARecv(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, LPDWORD a4, LPWSAOVERLAPPED a5, LPWSAOVERLAPPED_COMPLETION_ROUTINE a6)
+{
+ static int (WINAPI *fp)(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, LPDWORD a4, LPWSAOVERLAPPED a5, LPWSAOVERLAPPED_COMPLETION_ROUTINE a6);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSARecv() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSARecv")) == NULL) {
+ FATAL("cannot find entry WSARecv (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5, a6);
+}
+
+int WINAPI
+WSARecvDisconnect(SOCKET a0, LPWSABUF a1)
+{
+ static int (WINAPI *fp)(SOCKET a0, LPWSABUF a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSARecvDisconnect() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSARecvDisconnect")) == NULL) {
+ FATAL("cannot find entry WSARecvDisconnect (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+int WINAPI
+WSARecvFrom(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, LPDWORD a4, struct sockaddr * a5, LPINT a6, LPWSAOVERLAPPED a7, LPWSAOVERLAPPED_COMPLETION_ROUTINE a8)
+{
+ static int (WINAPI *fp)(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, LPDWORD a4, struct sockaddr * a5, LPINT a6, LPWSAOVERLAPPED a7, LPWSAOVERLAPPED_COMPLETION_ROUTINE a8);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSARecvFrom() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSARecvFrom")) == NULL) {
+ FATAL("cannot find entry WSARecvFrom (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7, a8);
+}
+
+INT WINAPI
+WSARemoveServiceClass(LPGUID a0)
+{
+ static INT (WINAPI *fp)(LPGUID a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSARemoveServiceClass() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSARemoveServiceClass")) == NULL) {
+ FATAL("cannot find entry WSARemoveServiceClass (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+BOOL WINAPI
+WSAResetEvent(WSAEVENT a0)
+{
+ static BOOL (WINAPI *fp)(WSAEVENT a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAResetEvent() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAResetEvent")) == NULL) {
+ FATAL("cannot find entry WSAResetEvent (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+int WINAPI
+WSASend(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, DWORD a4, LPWSAOVERLAPPED a5, LPWSAOVERLAPPED_COMPLETION_ROUTINE a6)
+{
+ static int (WINAPI *fp)(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, DWORD a4, LPWSAOVERLAPPED a5, LPWSAOVERLAPPED_COMPLETION_ROUTINE a6);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSASend() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSASend")) == NULL) {
+ FATAL("cannot find entry WSASend (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5, a6);
+}
+
+int WINAPI
+WSASendDisconnect(SOCKET a0, LPWSABUF a1)
+{
+ static int (WINAPI *fp)(SOCKET a0, LPWSABUF a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSASendDisconnect() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSASendDisconnect")) == NULL) {
+ FATAL("cannot find entry WSASendDisconnect (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+int WINAPI
+WSASendTo(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, DWORD a4, const struct sockaddr * a5, int a6, LPWSAOVERLAPPED a7, LPWSAOVERLAPPED_COMPLETION_ROUTINE a8)
+{
+ static int (WINAPI *fp)(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, DWORD a4, const struct sockaddr * a5, int a6, LPWSAOVERLAPPED a7, LPWSAOVERLAPPED_COMPLETION_ROUTINE a8);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSASendTo() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSASendTo")) == NULL) {
+ FATAL("cannot find entry WSASendTo (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7, a8);
+}
+
+BOOL WINAPI
+WSASetEvent(WSAEVENT a0)
+{
+ static BOOL (WINAPI *fp)(WSAEVENT a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSASetEvent() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSASetEvent")) == NULL) {
+ FATAL("cannot find entry WSASetEvent (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+INT WSAAPI
+WSASetServiceA(LPWSAQUERYSETA a0, WSAESETSERVICEOP a1, DWORD a2)
+{
+ static INT (WSAAPI *fp)(LPWSAQUERYSETA a0, WSAESETSERVICEOP a1, DWORD a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSASetServiceA() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSASetServiceA")) == NULL) {
+ FATAL("cannot find entry WSASetServiceA (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+INT WINAPI
+WSASetServiceW(LPWSAQUERYSETW a0, WSAESETSERVICEOP a1, DWORD a2)
+{
+ static INT (WINAPI *fp)(LPWSAQUERYSETW a0, WSAESETSERVICEOP a1, DWORD a2);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSASetServiceW() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSASetServiceW")) == NULL) {
+ FATAL("cannot find entry WSASetServiceW (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2);
+}
+
+SOCKET WINAPI
+WSASocketA(int a0, int a1, int a2, LPWSAPROTOCOL_INFOA a3, GROUP a4, DWORD a5)
+{
+ static SOCKET (WINAPI *fp)(int a0, int a1, int a2, LPWSAPROTOCOL_INFOA a3, GROUP a4, DWORD a5);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSASocketA() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSASocketA")) == NULL) {
+ FATAL("cannot find entry WSASocketA (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5);
+}
+
+SOCKET WINAPI
+WSASocketW(int a0, int a1, int a2, LPWSAPROTOCOL_INFOW a3, GROUP a4, DWORD a5)
+{
+ static SOCKET (WINAPI *fp)(int a0, int a1, int a2, LPWSAPROTOCOL_INFOW a3, GROUP a4, DWORD a5);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSASocketW() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSASocketW")) == NULL) {
+ FATAL("cannot find entry WSASocketW (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5);
+}
+
+INT WINAPI
+WSAStringToAddressA(LPSTR a0, INT a1, LPWSAPROTOCOL_INFOA a2, LPSOCKADDR a3, LPINT a4)
+{
+ static INT (WINAPI *fp)(LPSTR a0, INT a1, LPWSAPROTOCOL_INFOA a2, LPSOCKADDR a3, LPINT a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAStringToAddressA() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAStringToAddressA")) == NULL) {
+ FATAL("cannot find entry WSAStringToAddressA (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+INT WINAPI
+WSAStringToAddressW(LPWSTR a0, INT a1, LPWSAPROTOCOL_INFOW a2, LPSOCKADDR a3, LPINT a4)
+{
+ static INT (WINAPI *fp)(LPWSTR a0, INT a1, LPWSAPROTOCOL_INFOW a2, LPSOCKADDR a3, LPINT a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAStringToAddressW() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAStringToAddressW")) == NULL) {
+ FATAL("cannot find entry WSAStringToAddressW (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+DWORD WINAPI
+WSAWaitForMultipleEvents(DWORD a0, const WSAEVENT * a1, BOOL a2, DWORD a3, BOOL a4)
+{
+ static DWORD (WINAPI *fp)(DWORD a0, const WSAEVENT * a1, BOOL a2, DWORD a3, BOOL a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAWaitForMultipleEvents() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAWaitForMultipleEvents")) == NULL) {
+ FATAL("cannot find entry WSAWaitForMultipleEvents (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+int WINAPI
+WSCDeinstallProvider(LPGUID a0, LPINT a1)
+{
+ static int (WINAPI *fp)(LPGUID a0, LPINT a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSCDeinstallProvider() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSCDeinstallProvider")) == NULL) {
+ FATAL("cannot find entry WSCDeinstallProvider (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+int WINAPI
+WSCEnableNSProvider(LPGUID a0, BOOL a1)
+{
+ static int (WINAPI *fp)(LPGUID a0, BOOL a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSCEnableNSProvider() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSCEnableNSProvider")) == NULL) {
+ FATAL("cannot find entry WSCEnableNSProvider (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+int WINAPI
+WSCEnumProtocols(LPINT a0, LPWSAPROTOCOL_INFOW a1, LPDWORD a2, LPINT a3)
+{
+ static int (WINAPI *fp)(LPINT a0, LPWSAPROTOCOL_INFOW a1, LPDWORD a2, LPINT a3);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSCEnumProtocols() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSCEnumProtocols")) == NULL) {
+ FATAL("cannot find entry WSCEnumProtocols (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3);
+}
+
+int WINAPI
+WSCGetProviderPath(LPGUID a0, LPWSTR a1, LPINT a2, LPINT a3)
+{
+ static int (WINAPI *fp)(LPGUID a0, LPWSTR a1, LPINT a2, LPINT a3);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSCGetProviderPath() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSCGetProviderPath")) == NULL) {
+ FATAL("cannot find entry WSCGetProviderPath (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3);
+}
+
+int WINAPI
+WSCInstallNameSpace(LPWSTR a0, LPWSTR a1, DWORD a2, DWORD a3, LPGUID a4)
+{
+ static int (WINAPI *fp)(LPWSTR a0, LPWSTR a1, DWORD a2, DWORD a3, LPGUID a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSCInstallNameSpace() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSCInstallNameSpace")) == NULL) {
+ FATAL("cannot find entry WSCInstallNameSpace (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+int WINAPI
+WSCInstallProvider(const LPGUID a0, const LPWSTR a1, const LPWSAPROTOCOL_INFOW a2, DWORD a3, LPINT a4)
+{
+ static int (WINAPI *fp)(const LPGUID a0, const LPWSTR a1, const LPWSAPROTOCOL_INFOW a2, DWORD a3, LPINT a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSCInstallProvider() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSCInstallProvider")) == NULL) {
+ FATAL("cannot find entry WSCInstallProvider (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+int WINAPI
+WSCUnInstallNameSpace(LPGUID a0)
+{
+ static int (WINAPI *fp)(LPGUID a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSCUnInstallNameSpace() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSCUnInstallNameSpace")) == NULL) {
+ FATAL("cannot find entry WSCUnInstallNameSpace (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+int PASCAL
+WSAAsyncSelect(SOCKET a0, HWND a1, u_int a2, long a3)
+{
+ static int (PASCAL *fp)(SOCKET a0, HWND a1, u_int a2, long a3);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAAsyncSelect() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncSelect")) == NULL) {
+ FATAL("cannot find entry WSAAsyncSelect (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3);
+}
+
+HANDLE PASCAL
+_org_WSAAsyncGetHostByAddr(HWND a0, u_int a1, const char* a2, int a3, int a4, char* a5, int a6)
+{
+ static HANDLE (PASCAL *fp)(HWND a0, u_int a1, const char* a2, int a3, int a4, char* a5, int a6);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_WSAAsyncGetHostByAddr() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetHostByAddr")) == NULL) {
+ FATAL("cannot find entry WSAAsyncGetHostByAddr (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5, a6);
+}
+
+HANDLE PASCAL
+_org_WSAAsyncGetHostByName(HWND a0, u_int a1, const char* a2, char* a3, int a4)
+{
+ static HANDLE (PASCAL *fp)(HWND a0, u_int a1, const char* a2, char* a3, int a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_WSAAsyncGetHostByName() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetHostByName")) == NULL) {
+ FATAL("cannot find entry WSAAsyncGetHostByName (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+HANDLE PASCAL
+WSAAsyncGetProtoByNumber(HWND a0, u_int a1, int a2, char* a3, int a4)
+{
+ static HANDLE (PASCAL *fp)(HWND a0, u_int a1, int a2, char* a3, int a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAAsyncGetProtoByNumber() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetProtoByNumber")) == NULL) {
+ FATAL("cannot find entry WSAAsyncGetProtoByNumber (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+HANDLE PASCAL
+WSAAsyncGetProtoByName(HWND a0, u_int a1, const char* a2, char* a3, int a4)
+{
+ static HANDLE (PASCAL *fp)(HWND a0, u_int a1, const char* a2, char* a3, int a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAAsyncGetProtoByName() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetProtoByName")) == NULL) {
+ FATAL("cannot find entry WSAAsyncGetProtoByName (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+HANDLE PASCAL
+WSAAsyncGetServByPort(HWND a0, u_int a1, int a2, const char* a3, char* a4, int a5)
+{
+ static HANDLE (PASCAL *fp)(HWND a0, u_int a1, int a2, const char* a3, char* a4, int a5);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAAsyncGetServByPort() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetServByPort")) == NULL) {
+ FATAL("cannot find entry WSAAsyncGetServByPort (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5);
+}
+
+HANDLE PASCAL
+WSAAsyncGetServByName(HWND a0, u_int a1, const char* a2, const char* a3, char* a4, int a5)
+{
+ static HANDLE (PASCAL *fp)(HWND a0, u_int a1, const char* a2, const char* a3, char* a4, int a5);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAAsyncGetServByName() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetServByName")) == NULL) {
+ FATAL("cannot find entry WSAAsyncGetServByName (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5);
+}
+
+int PASCAL
+WSACancelAsyncRequest(HANDLE a0)
+{
+ static int (PASCAL *fp)(HANDLE a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSACancelAsyncRequest() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSACancelAsyncRequest")) == NULL) {
+ FATAL("cannot find entry WSACancelAsyncRequest (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+FARPROC PASCAL
+WSASetBlockingHook(FARPROC a0)
+{
+ static FARPROC (PASCAL *fp)(FARPROC a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSASetBlockingHook() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSASetBlockingHook")) == NULL) {
+ FATAL("cannot find entry WSASetBlockingHook (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0);
+}
+
+int PASCAL
+WSAUnhookBlockingHook(void)
+{
+ static int (PASCAL *fp)(void);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAUnhookBlockingHook() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAUnhookBlockingHook")) == NULL) {
+ FATAL("cannot find entry WSAUnhookBlockingHook (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)();
+}
+
+int PASCAL
+WSAGetLastError(void)
+{
+ static int (PASCAL *fp)(void);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAGetLastError() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAGetLastError")) == NULL) {
+ FATAL("cannot find entry WSAGetLastError (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)();
+}
+
+void PASCAL
+WSASetLastError(int a0)
+{
+ static void (PASCAL *fp)(int a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSASetLastError() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSASetLastError")) == NULL) {
+ FATAL("cannot find entry WSASetLastError (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ (*fp)(a0);
+}
+
+int PASCAL
+WSACancelBlockingCall(void)
+{
+ static int (PASCAL *fp)(void);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSACancelBlockingCall() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSACancelBlockingCall")) == NULL) {
+ FATAL("cannot find entry WSACancelBlockingCall (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)();
+}
+
+BOOL PASCAL
+WSAIsBlocking(void)
+{
+ static BOOL (PASCAL *fp)(void);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAIsBlocking() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAIsBlocking")) == NULL) {
+ FATAL("cannot find entry WSAIsBlocking (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)();
+}
+
+int PASCAL
+WSAStartup(WORD a0, LPWSADATA a1)
+{
+ static int (PASCAL *fp)(WORD a0, LPWSADATA a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSAStartup() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSAStartup")) == NULL) {
+ FATAL("cannot find entry WSAStartup (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+int PASCAL
+WSACleanup(void)
+{
+ static int (PASCAL *fp)(void);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSACleanup() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSACleanup")) == NULL) {
+ FATAL("cannot find entry WSACleanup (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)();
+}
+
+int PASCAL
+__WSAFDIsSet(SOCKET a0, fd_set* a1)
+{
+ static int (PASCAL *fp)(SOCKET a0, fd_set* a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub __WSAFDIsSet() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "__WSAFDIsSet")) == NULL) {
+ FATAL("cannot find entry __WSAFDIsSet (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+int PASCAL
+WEP(void)
+{
+ static int (PASCAL *fp)(void);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WEP() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WEP")) == NULL) {
+ FATAL("cannot find entry WEP (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)();
+}
+
+int PASCAL
+WSCWriteNameSpaceOrder(int a0, int a1)
+{
+ static int (PASCAL *fp)(int a0, int a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSCWriteNameSpaceOrder() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSCWriteNameSpaceOrder")) == NULL) {
+ FATAL("cannot find entry WSCWriteNameSpaceOrder (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+int PASCAL
+WSCWriteProviderOrder(LPDWORD a0, DWORD a1)
+{
+ static int (PASCAL *fp)(LPDWORD a0, DWORD a1);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSCWriteProviderOrder() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSCWriteProviderOrder")) == NULL) {
+ FATAL("cannot find entry WSCWriteProviderOrder (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1);
+}
+
+int PASCAL
+WSANSPIoctl(HANDLE a0, DWORD a1, LPVOID a2, DWORD a3, LPVOID a4, DWORD a5, LPDWORD a6, LPVOID a7)
+{
+ static int (PASCAL *fp)(HANDLE a0, DWORD a1, LPVOID a2, DWORD a3, LPVOID a4, DWORD a5, LPDWORD a6, LPVOID a7);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSANSPIoctl() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSANSPIoctl")) == NULL) {
+ FATAL("cannot find entry WSANSPIoctl (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7);
+}
+
+int PASCAL
+WSCUpdateProvider(LPGUID a0, const WCHAR FAR* a1, const LPVOID a2, DWORD a3, LPINT a4)
+{
+ static int (PASCAL *fp)(LPGUID a0, const WCHAR FAR* a1, const LPVOID a2, DWORD a3, LPINT a4);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub WSCUpdateProvider() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "WSCUpdateProvider")) == NULL) {
+ FATAL("cannot find entry WSCUpdateProvider (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4);
+}
+
+int PASCAL
+_org_getaddrinfo(const char* a0, const char* a1, LPVOID a2, LPVOID a3)
+{
+ static int (PASCAL *fp)(const char* a0, const char* a1, LPVOID a2, LPVOID a3);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_getaddrinfo() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "getaddrinfo")) == NULL) {
+ FATAL("cannot find entry getaddrinfo (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3);
+}
+
+void PASCAL
+_org_freeaddrinfo(LPVOID a0)
+{
+ static void (PASCAL *fp)(LPVOID a0);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_freeaddrinfo() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "freeaddrinfo")) == NULL) {
+ FATAL("cannot find entry freeaddrinfo (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ (*fp)(a0);
+}
+
+int PASCAL
+_org_getnameinfo(LPVOID a0, DWORD a1, char* a2, DWORD a3, char* a4, DWORD a5, int a6)
+{
+ static int (PASCAL *fp)(LPVOID a0, DWORD a1, char* a2, DWORD a3, char* a4, DWORD a5, int a6);
+
+#ifdef DEBUG_STUB
+ idnLogPrintf(idn_log_level_trace, "stub _org_getnameinfo() called\n");
+#endif
+ if (fp == NULL) {
+ void *p;
+ if ((p = GetProcAddress(DLLHANDLE, "getnameinfo")) == NULL) {
+ FATAL("cannot find entry getnameinfo (%d)\n", GetLastError());
+ abort();
+ }
+ fp = p;
+ }
+ return (*fp)(a0, a1, a2, a3, a4, a5, a6);
+}
+
diff --git a/contrib/idn/idnkit-1.0-src/wsock/wsock20/make.wnt b/contrib/idn/idnkit-1.0-src/wsock/wsock20/make.wnt
new file mode 100644
index 0000000..b5283aa
--- /dev/null
+++ b/contrib/idn/idnkit-1.0-src/wsock/wsock20/make.wnt
@@ -0,0 +1,97 @@
+#
+# Makefile for WinSock Wrapper (for WinSock 2.0)
+#
+
+# Copyright (c) 2000 Japan Network Information Center. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set forth bellow.
+#
+# LICENSE TERMS AND CONDITIONS
+#
+# The following License Terms and Conditions apply, unless a different
+# license is obtained from Japan Network Information Center ("JPNIC"),
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
+#
+# 1. Use, Modification and Redistribution (including distribution of any
+# modified or derived work) in source and/or binary forms is permitted
+# under this License Terms and Conditions.
+#
+# 2. Redistribution of source code must retain the copyright notices as they
+# appear in each source code file, this License Terms and Conditions.
+#
+# 3. Redistribution in binary form must reproduce the Copyright Notice,
+# this License Terms and Conditions, in the documentation and/or other
+# materials provided with the distribution. For the purposes of binary
+# distribution the "Copyright Notice" refers to the following language:
+# "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved."
+#
+# 4. The name of JPNIC may not be used to endorse or promote products
+# derived from this Software without specific prior written approval of
+# JPNIC.
+#
+# 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+!include <win32.mak>
+
+SYSLIBS = $(libcdll) kernel32.lib advapi32.lib user32.lib
+
+#
+# Files to use
+#
+
+HDRS = dlldef.h ..\common\wrapcommon.h
+SRCS = dllmain.c dllload.obj dllfunc.c dllstub.c
+OBJS = dllmain.obj dllload.obj dllfunc.obj
+LIBS = ..\common\wrapcommon.lib ..\..\lib\idnkit.lib ..\..\win\iconv.lib
+
+cflags = $(cflags) -I..\..\include
+
+#
+# Targets to Build
+#
+
+TARGETS = ws2_32.dll
+
+all : $(TARGETS)
+
+ws2_32.dll : ws2_32.def $(OBJS) $(LIBS)
+ $(link) $(dlllflags) /OUT:ws2_32.dll /DEF:ws2_32.def $(OBJS) $(LIBS) $(SYSLIBS)
+
+install : $(TARGETS)
+ copy ws2_32.dll ..\bin
+
+clean : force
+ -del *.obj
+ -del *.lib
+ -del *.dll
+ -del *.exp
+
+#
+# Dependencies
+#
+
+dllmain.obj : dllmain.c $(HDRS)
+ $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
+
+dllload.obj : dllload.c $(HDRS)
+ $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
+
+dllfunc.obj : dllfunc.c dllstub.c $(HDRS)
+ $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
+
+ws2_32o.lib : ws2_32o.def
+ LIB /DEF:ws2_32o.def /MACHINE:IX86
+
+force:
+
diff --git a/contrib/idn/idnkit-1.0-src/wsock/wsock20/ws2_32.def b/contrib/idn/idnkit-1.0-src/wsock/wsock20/ws2_32.def
new file mode 100644
index 0000000..ba9a44c
--- /dev/null
+++ b/contrib/idn/idnkit-1.0-src/wsock/wsock20/ws2_32.def
@@ -0,0 +1,120 @@
+;
+; Library Defition for idn wrapper's wrapper DLL
+;
+LIBRARY ws2_32
+DESCRIPTION "JPNIC idn warpper DLL for WS2_32"
+EXPORTS
+ accept @1
+ bind @2
+ closesocket @3
+ connect @4
+ getpeername @5
+ getsockname @6
+ getsockopt @7
+ htonl @8
+ htons @9
+ ioctlsocket @10
+ inet_addr @11
+ inet_ntoa @12
+ listen @13
+ ntohl @14
+ ntohs @15
+ recv @16
+ recvfrom @17
+ select @18
+ send @19
+ sendto @20
+ setsockopt @21
+ shutdown @22
+ socket @23
+ WSApSetPostRoutine @24
+ WPUCompleteOverlappedRequest @25
+ WSAAccept @26
+ WSAAddressToStringA @27
+ WSAAddressToStringW @28
+ WSACloseEvent @29
+ WSAConnect @30
+ WSACreateEvent @31
+ WSADuplicateSocketA @32
+ WSADuplicateSocketW @33
+ WSAEnumNameSpaceProvidersA @34
+ WSAEnumNameSpaceProvidersW @35
+ WSAEnumNetworkEvents @36
+ WSAEnumProtocolsA @37
+ WSAEnumProtocolsW @38
+ WSAEventSelect @39
+ WSAGetOverlappedResult @40
+ WSAGetQOSByName @41
+ WSAGetServiceClassInfoA @42
+ WSAGetServiceClassInfoW @43
+ WSAGetServiceClassNameByClassIdA @44
+ WSAGetServiceClassNameByClassIdW @45
+ WSAHtonl @46
+ WSAHtons @47
+ WSAInstallServiceClassA @48
+ WSAInstallServiceClassW @49
+ WSAIoctl @50
+ gethostbyaddr @51
+ gethostbyname @52
+ getprotobyname @53
+ getprotobynumber @54
+ getservbyname @55
+ getservbyport @56
+ gethostname @57
+ WSAJoinLeaf @58
+ WSALookupServiceBeginA @59
+ WSALookupServiceBeginW @60
+ WSALookupServiceEnd @61
+ WSALookupServiceNextA @62
+ WSALookupServiceNextW @63
+ WSANtohl @64
+ WSANtohs @65
+ WSAProviderConfigChange @66
+ WSARecv @67
+ WSARecvDisconnect @68
+ WSARecvFrom @69
+ WSARemoveServiceClass @70
+ WSAResetEvent @71
+ WSASend @72
+ WSASendDisconnect @73
+ WSASendTo @74
+ WSASetEvent @75
+ WSASetServiceA @76
+ WSASetServiceW @77
+ WSASocketA @78
+ WSASocketW @79
+ WSAStringToAddressA @80
+ WSAStringToAddressW @81
+ WSAWaitForMultipleEvents @82
+ WSCDeinstallProvider @83
+ WSCEnableNSProvider @84
+ WSCEnumProtocols @85
+ WSCGetProviderPath @86
+ WSCInstallNameSpace @87
+ WSCInstallProvider @88
+ WSCUnInstallNameSpace @89
+ WSCWriteNameSpaceOrder @90
+ WSCWriteProviderOrder @91
+ freeaddrinfo @94
+ getaddrinfo @95
+ getnameinfo @96
+ WSAAsyncSelect @101
+ WSAAsyncGetHostByAddr @102
+ WSAAsyncGetHostByName @103
+ WSAAsyncGetProtoByNumber @104
+ WSAAsyncGetProtoByName @105
+ WSAAsyncGetServByPort @106
+ WSAAsyncGetServByName @107
+ WSACancelAsyncRequest @108
+ WSASetBlockingHook @109
+ WSAUnhookBlockingHook @110
+ WSAGetLastError @111
+ WSASetLastError @112
+ WSACancelBlockingCall @113
+ WSAIsBlocking @114
+ WSAStartup @115
+ WSACleanup @116
+ __WSAFDIsSet @151
+ WEP @500
+ WSANSPIoctl @600
+ WSCUpdateProvider @601