sync with trunk r46493
[reactos.git] / dll / win32 / ws2_32 / misc / stubs.c
index 9418b53..10dd98e 100644 (file)
@@ -11,7 +11,6 @@
 #include <catalog.h>
 #include <handle.h>
 
-
 /*
  * @implemented
  */
@@ -31,7 +30,7 @@ getpeername(IN     SOCKET s,
         return SOCKET_ERROR;
     }
 
-    if (!ReferenceProviderByHandle((HANDLE)s, &Provider))
+    if (!ReferenceProviderByHandle((HANDLE)(ULONG_PTR)(s), &Provider))
     {
         WSASetLastError(WSAENOTSOCK);
         return SOCKET_ERROR;
@@ -163,6 +162,12 @@ setsockopt(IN  SOCKET s,
         return SOCKET_ERROR;
     }
 
+    if(IS_INTRESOURCE(optval))
+    {
+        SetLastError(WSAEFAULT);
+        return SOCKET_ERROR;
+    }
+
     if (!ReferenceProviderByHandle((HANDLE)s, &Provider))
     {
         WSASetLastError(WSAENOTSOCK);
@@ -504,10 +509,33 @@ WSAHtons(IN  SOCKET s,
          IN  USHORT hostshort,
          OUT USHORT FAR* lpnetshort)
 {
-    UNIMPLEMENTED
+    PCATALOG_ENTRY provider;
+    if (!WSAINITIALIZED)
+    {
+        WSASetLastError(WSANOTINITIALISED);
+        return SOCKET_ERROR;
+    }
 
-    WSASetLastError(WSASYSCALLFAILURE);
-    return SOCKET_ERROR;
+    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;
 }
 
 
@@ -570,10 +598,33 @@ WSANtohs(IN  SOCKET s,
          IN  USHORT netshort,
          OUT USHORT FAR* lphostshort)
 {
-    UNIMPLEMENTED
+    PCATALOG_ENTRY provider;
+    if (!WSAINITIALIZED)
+    {
+        WSASetLastError(WSANOTINITIALISED);
+        return SOCKET_ERROR;
+    }
 
-    WSASetLastError(WSASYSCALLFAILURE);
-    return SOCKET_ERROR;
+    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;
 }
 
 
@@ -652,23 +703,6 @@ WPUCompleteOverlappedRequest(IN  SOCKET s,
 }
 
 
-/*
- * @unimplemented
- */
-INT
-EXPORT
-WSPStartup(IN  WORD wVersionRequested,
-           OUT LPWSPDATA lpWSPData,
-           IN  LPWSAPROTOCOL_INFOW lpProtocolInfo,
-           IN  WSPUPCALLTABLE UpcallTable,
-           OUT LPWSPPROC_TABLE lpProcTable)
-{
-    UNIMPLEMENTED
-
-    return WSASYSCALLFAILURE;
-}
-
-
 /*
  * @unimplemented
  */
@@ -723,8 +757,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)
@@ -884,4 +918,21 @@ BOOL EXPORT WSApSetPostRoutine(PVOID Routine)
     return FALSE;
 }
 
+/*
+ * @unimplemented
+ */
+INT
+EXPORT
+GetAddrInfoW(IN PCWSTR pszNodeName,
+             IN PCWSTR pszServiceName,
+             IN const ADDRINFOW *ptHints,
+             OUT PADDRINFOW *pptResult)
+{
+    UNIMPLEMENTED
+
+    WSASetLastError(EAI_FAIL);
+    return EAI_FAIL;
+}
+
+
 /* EOF */