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 
  */