Sync to trunk head (r42241)
[reactos.git] / reactos / dll / win32 / ws2_32 / misc / stubs.c
index 2402ae5..c8c3b08 100644 (file)
@@ -510,10 +510,33 @@ WSAHtons(IN  SOCKET s,
          IN  USHORT hostshort,
          OUT USHORT FAR* lpnetshort)
 {
-    UNIMPLEMENTED
+    if (!WSAINITIALIZED)
+    {
+        WSASetLastError(WSANOTINITIALISED);
+        return SOCKET_ERROR;
+    }
 
-    WSASetLastError(WSASYSCALLFAILURE);
-    return SOCKET_ERROR;
+    PCATALOG_ENTRY provider;
+    if (!ReferenceProviderByHandle((HANDLE)s, &provider))
+    {
+        WSASetLastError(WSAENOTSOCK);
+        return SOCKET_ERROR;
+    }
+
+    switch (provider->ProtocolInfo.iNetworkByteOrder)
+    {
+    case BIGENDIAN:
+        *lpnetshort = htons(hostshort);
+        break;
+    case LITTLEENDIAN:
+#ifdef LE
+        *lpnetshort = hostshort;
+#else
+        *lpnetshort = (((hostshort & 0xFF00) >> 8) | ((hostshort & 0x00FF) << 8));
+#endif
+        break;
+    }
+    return 0;
 }
 
 
@@ -576,10 +599,33 @@ WSANtohs(IN  SOCKET s,
          IN  USHORT netshort,
          OUT USHORT FAR* lphostshort)
 {
-    UNIMPLEMENTED
+    if (!WSAINITIALIZED)
+    {
+        WSASetLastError(WSANOTINITIALISED);
+        return SOCKET_ERROR;
+    }
 
-    WSASetLastError(WSASYSCALLFAILURE);
-    return SOCKET_ERROR;
+    PCATALOG_ENTRY provider;
+    if (!ReferenceProviderByHandle((HANDLE)s, &provider))
+    {
+        WSASetLastError(WSAENOTSOCK);
+        return SOCKET_ERROR;
+    }
+
+    switch (provider->ProtocolInfo.iNetworkByteOrder)
+    {
+    case BIGENDIAN:
+        *lphostshort = ntohs(netshort);
+        break;
+    case LITTLEENDIAN:
+#ifdef LE
+        *lphostshort = netshort;
+#else
+        *lphostshort = (((netshort & 0xFF00) >> 8) | ((netshort & 0x00FF) << 8));
+#endif
+        break;
+    }
+    return 0;
 }
 
 
@@ -729,8 +775,8 @@ WSCGetProviderPath(IN      LPGUID lpProviderId,
  */
 INT
 EXPORT
-WSCInstallProvider(IN  CONST LPGUID lpProviderId,
-                   IN  CONST LPWSTR lpszProviderDllPath,
+WSCInstallProvider(IN  LPGUID lpProviderId,
+                   IN  CONST WCHAR* lpszProviderDllPath,
                    IN  CONST LPWSAPROTOCOL_INFOW lpProtocolInfoList,
                    IN  DWORD dwNumberOfEntries,
                    OUT LPINT lpErrno)