[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gethostname inadvertently replaced on W32
From: |
Martin Lambers |
Subject: |
gethostname inadvertently replaced on W32 |
Date: |
Tue, 28 Jul 2009 10:08:34 +0200 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
Hello everybody,
W32 has gethostname in ws2_32.dll. This is not detected by
gethostname.m4, and gethostname is inadvertently replaced by a function
that always returns an empty string.
The following patch fixes this for me. It works on Debian and with a
MinGW cross compiler. I tried to change gethostname.m4 to do similar
checks that e.g. hostent.m4 does, but I'm not sure if I got it right,
since M4 and autoconf macros tend to confuse me.
Regards,
Martin
diff --git a/m4/gethostname.m4 b/m4/gethostname.m4
index 6b6fca9..572a140 100644
--- a/m4/gethostname.m4
+++ b/m4/gethostname.m4
@@ -1,4 +1,4 @@
-# gethostname.m4 serial 5
+# gethostname.m4 serial 6
dnl Copyright (C) 2002, 2008, 2009 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -6,11 +6,31 @@ dnl with or without modifications, as long as this notice is
preserved.
AC_DEFUN([gl_FUNC_GETHOSTNAME],
[
+ dnl On native Windows, gethostname is in ws2_32.dll
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
gl_PREREQ_SYS_H_WINSOCK2
- AC_REPLACE_FUNCS([gethostname])
- if test $ac_cv_func_gethostname = no; then
+ GETHOSTNAME_LIB=
+ AC_CHECK_FUNCS([gethostname], , [
+ AC_CACHE_CHECK([for gethostname in winsock2.h and -lws2_32],
+ [gl_cv_w32_gethostname],
+ [gl_cv_w32_gethostname=no
+ gl_save_LIBS="$LIBS"
+ LIBS="$LIBS -lws2_32"
+ AC_TRY_LINK([
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
+#include <stddef.h>
+], [gethostname(NULL, 0);], [gl_cv_w32_gethostname=yes])
+ LIBS="$gl_save_LIBS"
+ ])
+ if test "$gl_cv_w32_gethostname" = "yes"; then
+ GETHOSTNAME_LIB="-lws2_32"
+ fi
+ ])
+ if test -z $GETHOSTNAME_LIB -a $ac_cv_func_gethostname = no; then
HAVE_GETHOSTNAME=0
+ AC_LIBOBJ([gethostname])
gl_PREREQ_GETHOSTNAME
fi
])
diff --git a/modules/gethostname b/modules/gethostname
index 796dc6f..a9a464c 100644
--- a/modules/gethostname
+++ b/modules/gethostname
@@ -18,6 +18,9 @@ Makefile.am:
Include:
<unistd.h>
+Link:
+$(GETHOSTNAME_LIB)
+
License:
LGPLv2+
- gethostname inadvertently replaced on W32,
Martin Lambers <=