From 0d5f3d84cb569cc2f8b1ece817f51fca4a48d53e Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Tue, 3 May 2005 18:37:51 +0000 Subject: [PATCH] Implement WSAStringToAddressA svn path=/trunk/; revision=14962 --- reactos/lib/ws2_32/misc/ns.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/reactos/lib/ws2_32/misc/ns.c b/reactos/lib/ws2_32/misc/ns.c index 8ad5ed1be50..2d6e3aed7a1 100644 --- a/reactos/lib/ws2_32/misc/ns.c +++ b/reactos/lib/ws2_32/misc/ns.c @@ -320,12 +320,37 @@ WSAStringToAddressA( OUT LPSOCKADDR lpAddress, IN OUT LPINT lpAddressLength) { - UNIMPLEMENTED + INT ret, len; + LPWSTR szTemp; + LPWSAPROTOCOL_INFOW lpProtoInfoW = NULL; - return 0; + len = MultiByteToWideChar( CP_ACP, 0, AddressString, -1, NULL, 0 ); + szTemp = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ); + MultiByteToWideChar( CP_ACP, 0, AddressString, -1, szTemp, len ); + + if (lpProtocolInfo) + { + len = WSAPROTOCOL_LEN+1; + lpProtoInfoW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ); + + memcpy( lpProtoInfoW, lpProtocolInfo, sizeof(LPWSAPROTOCOL_INFOA)); + + MultiByteToWideChar( CP_ACP, 0, lpProtocolInfo->szProtocol, -1, lpProtoInfoW->szProtocol, len ); + } + + ret = WSAStringToAddressW(szTemp, AddressFamily, lpProtoInfoW, lpAddress, lpAddressLength); + + HeapFree( GetProcessHeap(), 0, szTemp ); + + if (lpProtocolInfo) + HeapFree( GetProcessHeap(), 0, lpProtoInfoW ); + + WSASetLastError(ret); + return ret; } + /* * @implement */