Zebediah Figura : ws2_32: Move gethostname() to the Unix library.

Alexandre Julliard julliard at winehq.org
Thu Aug 5 16:13:39 CDT 2021


Module: wine
Branch: master
Commit: c1c3691bed231380b3b632a038f7f3cb8d7f5929
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c1c3691bed231380b3b632a038f7f3cb8d7f5929

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Wed Aug  4 21:20:43 2021 -0500

ws2_32: Move gethostname() to the Unix library.

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ws2_32/protocol.c       | 16 +++++++++-------
 dlls/ws2_32/unixlib.c        | 10 ++++++++++
 dlls/ws2_32/ws2_32_private.h |  1 +
 3 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/dlls/ws2_32/protocol.c b/dlls/ws2_32/protocol.c
index c65e6b9674e..48e7e062d7f 100644
--- a/dlls/ws2_32/protocol.c
+++ b/dlls/ws2_32/protocol.c
@@ -913,6 +913,7 @@ struct WS_hostent * WINAPI WS_gethostbyname( const char *name )
 {
     struct WS_hostent *host = NULL;
     char hostname[100];
+    int ret;
 
     TRACE( "%s\n", debugstr_a(name) );
 
@@ -922,9 +923,9 @@ struct WS_hostent * WINAPI WS_gethostbyname( const char *name )
         return NULL;
     }
 
-    if (gethostname( hostname, 100 ) == -1)
+    if ((ret = unix_funcs->gethostname( hostname, 100 )))
     {
-        SetLastError( WSAENOBUFS );
+        SetLastError( ret );
         return NULL;
     }
 
@@ -973,7 +974,7 @@ struct WS_hostent * WINAPI WS_gethostbyname( const char *name )
 int WINAPI WS_gethostname( char *name, int namelen )
 {
     char buf[256];
-    int len;
+    int len, ret;
 
     TRACE( "name %p, len %d\n", name, namelen );
 
@@ -983,9 +984,9 @@ int WINAPI WS_gethostname( char *name, int namelen )
         return -1;
     }
 
-    if (gethostname( buf, sizeof(buf) ) != 0)
+    if ((ret = unix_funcs->gethostname( buf, sizeof(buf) )))
     {
-        SetLastError( sock_get_error( errno ) );
+        SetLastError( ret );
         return -1;
     }
 
@@ -1009,6 +1010,7 @@ int WINAPI WS_gethostname( char *name, int namelen )
 int WINAPI GetHostNameW( WCHAR *name, int namelen )
 {
     char buf[256];
+    int ret;
 
     TRACE( "name %p, len %d\n", name, namelen );
 
@@ -1018,9 +1020,9 @@ int WINAPI GetHostNameW( WCHAR *name, int namelen )
         return -1;
     }
 
-    if (gethostname( buf, sizeof(buf) ))
+    if ((ret = unix_funcs->gethostname( buf, sizeof(buf) )))
     {
-        SetLastError( sock_get_error( errno ) );
+        SetLastError( ret );
         return -1;
     }
 
diff --git a/dlls/ws2_32/unixlib.c b/dlls/ws2_32/unixlib.c
index 2a5fcd1b60d..cde73198c16 100644
--- a/dlls/ws2_32/unixlib.c
+++ b/dlls/ws2_32/unixlib.c
@@ -30,6 +30,7 @@
 #include <errno.h>
 #include <pthread.h>
 #include <stdarg.h>
+#include <unistd.h>
 #include <sys/types.h>
 #ifdef HAVE_SYS_SOCKET_H
 # include <sys/socket.h>
@@ -789,11 +790,20 @@ static int CDECL unix_gethostbyname( const char *name, struct WS_hostent *const
 #endif
 
 
+static int CDECL unix_gethostname( char *name, int len )
+{
+    if (!gethostname( name, len ))
+        return 0;
+    return errno_from_unix( errno );
+}
+
+
 static const struct unix_funcs funcs =
 {
     unix_getaddrinfo,
     unix_gethostbyaddr,
     unix_gethostbyname,
+    unix_gethostname,
 };
 
 NTSTATUS CDECL __wine_init_unix_lib( HMODULE module, DWORD reason, const void *ptr_in, void *ptr_out )
diff --git a/dlls/ws2_32/ws2_32_private.h b/dlls/ws2_32/ws2_32_private.h
index 38454e1a9ba..973f24a10a9 100644
--- a/dlls/ws2_32/ws2_32_private.h
+++ b/dlls/ws2_32/ws2_32_private.h
@@ -203,6 +203,7 @@ struct unix_funcs
     int (CDECL *gethostbyaddr)( const void *addr, int len, int family,
                                 struct WS(hostent) *host, unsigned int *size );
     int (CDECL *gethostbyname)( const char *name, struct WS(hostent) *host, unsigned int *size );
+    int (CDECL *gethostname)( char *name, int len );
 };
 
 extern const struct unix_funcs *unix_funcs;




More information about the wine-cvs mailing list