[2/3] ws2_32: Implement InetPtonW function.
Sebastian Lackner
sebastian at fds-team.de
Sun Oct 4 21:57:53 CDT 2015
From: Michael Müller <michael at fds-team.de>
Signed-off-by: Michael Müller <michael at fds-team.de>
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
---
dlls/ws2_32/socket.c | 30 ++++++++++++++++++++++++++++++
dlls/ws2_32/ws2_32.spec | 1 +
2 files changed, 31 insertions(+)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 535cf57..5098f85 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -7456,6 +7456,36 @@ INT WINAPI WS_inet_pton( INT family, PCSTR addr, PVOID buffer)
#endif
}
+/***********************************************************************
+* InetPtonW (WS2_32.@)
+*/
+INT WINAPI InetPtonW(INT family, PCWSTR addr, PVOID buffer)
+{
+ char *addrA;
+ int len;
+ INT ret;
+
+ TRACE("family %d, addr %s, buffer (%p)\n", family, debugstr_w(addr), buffer);
+
+ if (!addr)
+ {
+ SetLastError(WSAEFAULT);
+ return SOCKET_ERROR;
+ }
+
+ len = WideCharToMultiByte(CP_ACP, 0, addr, -1, NULL, 0, NULL, NULL);
+ if (!(addrA = HeapAlloc(GetProcessHeap(), 0, len)))
+ {
+ SetLastError(WSA_NOT_ENOUGH_MEMORY);
+ return SOCKET_ERROR;
+ }
+ WideCharToMultiByte(CP_ACP, 0, addr, -1, addrA, len, NULL, NULL);
+
+ ret = WS_inet_pton(family, addrA, buffer);
+
+ HeapFree(GetProcessHeap(), 0, addrA);
+ return ret;
+}
/***********************************************************************
* WSAStringToAddressA (WS2_32.80)
diff --git a/dlls/ws2_32/ws2_32.spec b/dlls/ws2_32/ws2_32.spec
index d08d59a..1b096b5 100644
--- a/dlls/ws2_32/ws2_32.spec
+++ b/dlls/ws2_32/ws2_32.spec
@@ -53,6 +53,7 @@
@ stdcall FreeAddrInfoW(ptr)
@ stdcall GetAddrInfoW(wstr wstr ptr ptr)
@ stdcall GetNameInfoW(ptr long ptr long ptr long long)
+@ stdcall InetPtonW(long wstr ptr)
@ stdcall WSApSetPostRoutine(ptr)
@ stdcall WPUCompleteOverlappedRequest(long ptr long long ptr)
@ stdcall WSAAccept(long ptr ptr ptr long)
--
2.6.0
More information about the wine-patches
mailing list