summaryrefslogtreecommitdiffstats
path: root/gl/m4/gethostname.m4
diff options
context:
space:
mode:
Diffstat (limited to 'gl/m4/gethostname.m4')
-rw-r--r--gl/m4/gethostname.m490
1 files changed, 85 insertions, 5 deletions
diff --git a/gl/m4/gethostname.m4 b/gl/m4/gethostname.m4
index 6b6fca9..ef0b43e 100644
--- a/gl/m4/gethostname.m4
+++ b/gl/m4/gethostname.m4
@@ -1,21 +1,101 @@
1# gethostname.m4 serial 5 1# gethostname.m4 serial 9
2dnl Copyright (C) 2002, 2008, 2009 Free Software Foundation, Inc. 2dnl Copyright (C) 2002, 2008, 2009, 2010 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation 3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it, 4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved. 5dnl with or without modifications, as long as this notice is preserved.
6 6
7# Ensure
8# - the gethostname() function,
9# - the HOST_NAME_MAX macro in <limits.h>.
7AC_DEFUN([gl_FUNC_GETHOSTNAME], 10AC_DEFUN([gl_FUNC_GETHOSTNAME],
8[ 11[
9 AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) 12 AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
10 gl_PREREQ_SYS_H_WINSOCK2 13 gl_PREREQ_SYS_H_WINSOCK2
11 AC_REPLACE_FUNCS([gethostname]) 14
12 if test $ac_cv_func_gethostname = no; then 15 dnl Where is gethostname() defined?
16 dnl - On native Windows, it is in ws2_32.dll.
17 dnl - Otherwise is is in libc.
18 GETHOSTNAME_LIB=
19 AC_CHECK_FUNCS([gethostname], , [
20 AC_CACHE_CHECK([for gethostname in winsock2.h and -lws2_32],
21 [gl_cv_w32_gethostname],
22 [gl_cv_w32_gethostname=no
23 gl_save_LIBS="$LIBS"
24 LIBS="$LIBS -lws2_32"
25 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
26#ifdef HAVE_WINSOCK2_H
27#include <winsock2.h>
28#endif
29#include <stddef.h>
30]], [[gethostname(NULL, 0);]])], [gl_cv_w32_gethostname=yes])
31 LIBS="$gl_save_LIBS"
32 ])
33 if test "$gl_cv_w32_gethostname" = "yes"; then
34 GETHOSTNAME_LIB="-lws2_32"
35 fi
36 ])
37 AC_SUBST([GETHOSTNAME_LIB])
38
39 if test "$ac_cv_func_gethostname" = no; then
40 AC_LIBOBJ([gethostname])
13 HAVE_GETHOSTNAME=0 41 HAVE_GETHOSTNAME=0
14 gl_PREREQ_GETHOSTNAME 42 gl_PREREQ_GETHOSTNAME
15 fi 43 fi
44
45 dnl Also provide HOST_NAME_MAX when <limits.h> lacks it.
46 dnl - On most Unix systems, use MAXHOSTNAMELEN from <sys/param.h> instead.
47 dnl - On Solaris, Cygwin, BeOS, use MAXHOSTNAMELEN from <netdb.h> instead.
48 dnl - On mingw, use 256, because
49 dnl <http://msdn.microsoft.com/en-us/library/ms738527.aspx> says:
50 dnl "if a buffer of 256 bytes is passed in the name parameter and
51 dnl the namelen parameter is set to 256, the buffer size will always
52 dnl be adequate."
53 dnl With this, there is no need to use sysconf (_SC_HOST_NAME_MAX), which
54 dnl is not a compile-time constant.
55 dnl We cannot override <limits.h> using the usual technique, because
56 dnl gl_CHECK_NEXT_HEADERS does not work for <limits.h>. Therefore retrieve
57 dnl the value of HOST_NAME_MAX at configure time.
58 AC_CHECK_HEADERS_ONCE([sys/param.h])
59 AC_CHECK_HEADERS_ONCE([sys/socket.h])
60 AC_CHECK_HEADERS_ONCE([netdb.h])
61 AC_CACHE_CHECK([for HOST_NAME_MAX], [gl_cv_decl_HOST_NAME_MAX], [
62 gl_cv_decl_HOST_NAME_MAX=
63 AC_EGREP_CPP([lucky], [
64#include <limits.h>
65#ifdef HOST_NAME_MAX
66lucky
67#endif
68 ], [gl_cv_decl_HOST_NAME_MAX=yes])
69 if test -z "$gl_cv_decl_HOST_NAME_MAX"; then
70 dnl It's not defined in <limits.h>. Substitute it.
71 if test "$gl_cv_w32_gethostname" = yes; then
72 dnl mingw.
73 gl_cv_decl_HOST_NAME_MAX=256
74 else
75 _AC_COMPUTE_INT([MAXHOSTNAMELEN], [gl_cv_decl_HOST_NAME_MAX], [
76#include <sys/types.h>
77#if HAVE_SYS_PARAM_H
78# include <sys/param.h>
79#endif
80#if HAVE_SYS_SOCKET_H
81# include <sys/socket.h>
82#endif
83#if HAVE_NETDB_H
84# include <netdb.h>
85#endif
86])
87 fi
88 fi
89 ])
90 if test "$gl_cv_decl_HOST_NAME_MAX" != yes; then
91 AC_DEFINE_UNQUOTED([HOST_NAME_MAX], [$gl_cv_decl_HOST_NAME_MAX],
92 [Define HOST_NAME_MAX when <limits.h> does not define it.])
93 fi
16]) 94])
17 95
18# Prerequisites of lib/gethostname.c. 96# Prerequisites of lib/gethostname.c.
19AC_DEFUN([gl_PREREQ_GETHOSTNAME], [ 97AC_DEFUN([gl_PREREQ_GETHOSTNAME], [
20 AC_CHECK_FUNCS([uname]) 98 if test "$gl_cv_w32_gethostname" != "yes"; then
99 AC_CHECK_FUNCS([uname])
100 fi
21]) 101])