Implement WSAStringToAddressA
Modified: trunk/reactos/lib/ws2_32/misc/ns.c
_____
Modified: trunk/reactos/lib/ws2_32/misc/ns.c
--- trunk/reactos/lib/ws2_32/misc/ns.c 2005-05-03 17:22:52 UTC (rev
14961)
+++ trunk/reactos/lib/ws2_32/misc/ns.c 2005-05-03 18:37:51 UTC (rev
14962)
@@ -320,12 +320,37 @@
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
*/