diff options
| author | Thomas Guyot-Sionnest <dermoth@aei.ca> | 2010-04-07 21:11:46 -0400 |
|---|---|---|
| committer | Thomas Guyot-Sionnest <dermoth@aei.ca> | 2010-04-12 21:26:35 -0400 |
| commit | 74da141e618ef99959d509cb2e7be35a348a39db (patch) | |
| tree | 88ebc38b381a1021fc2d74864a71e230ae591c3d /gl/m4/gethostname.m4 | |
| parent | c63a4f726a0b6ad8cf6040f947754a81fd4683bb (diff) | |
| download | monitoring-plugins-74da141e618ef99959d509cb2e7be35a348a39db.tar.gz | |
Sync with the latest Gnulib code (177f525)
Signed-off-by: Thomas Guyot-Sionnest <dermoth@aei.ca>
Diffstat (limited to 'gl/m4/gethostname.m4')
| -rw-r--r-- | gl/m4/gethostname.m4 | 90 |
1 files changed, 85 insertions, 5 deletions
diff --git a/gl/m4/gethostname.m4 b/gl/m4/gethostname.m4 index 6b6fca95..ef0b43ef 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 |
| 2 | dnl Copyright (C) 2002, 2008, 2009 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002, 2008, 2009, 2010 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| 5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl 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>. | ||
| 7 | AC_DEFUN([gl_FUNC_GETHOSTNAME], | 10 | AC_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 | ||
| 66 | lucky | ||
| 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. |
| 19 | AC_DEFUN([gl_PREREQ_GETHOSTNAME], [ | 97 | AC_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 | ]) |
