[PATCH 1/6] ws2_32: Move gethostname() to the Unix library.
Zebediah Figura
zfigura at codeweavers.com
Wed Aug 4 21:20:43 CDT 2021
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
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;
--
2.32.0
More information about the wine-devel
mailing list