Mercurial > hg > octave-lyh > gnulib-hg
changeset 11794:ad491ad80504
Define HOST_NAME_MAX also for the various Unix platforms.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sat, 08 Aug 2009 11:18:41 +0200 |
parents | d4b2d7a95227 |
children | ab844f6098c1 |
files | ChangeLog doc/posix-headers/limits.texi m4/gethostname.m4 |
diffstat | 3 files changed, 56 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-08-08 Bruno Haible <bruno@clisp.org> + + * m4/gethostname.m4 (gl_FUNC_GETHOSTNAME): Define HOST_NAME_MAX also + for the various Unix platforms. + * doc/posix-headers/limits.texi: Update platforms list regarding + HOST_NAME_MAX. + Reported by Tom G. Christensen <tgc@jupiterrise.com>. + 2009-08-07 Jim Meyering <meyering@redhat.com> selinux-at: fix typo in a comment
--- a/doc/posix-headers/limits.texi +++ b/doc/posix-headers/limits.texi @@ -8,7 +8,7 @@ Portability problems fixed by Gnulib: @itemize The @code{HOST_NAME_MAX} macro is not defined on some platforms: -mingw. +MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS. @end itemize Portability problems not fixed by Gnulib:
--- a/m4/gethostname.m4 +++ b/m4/gethostname.m4 @@ -1,4 +1,4 @@ -# gethostname.m4 serial 7 +# gethostname.m4 serial 8 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, @@ -43,12 +43,52 @@ fi dnl Also provide HOST_NAME_MAX when <limits.h> lacks it. - if test "$gl_cv_w32_gethostname" = "yes"; then - # <http://msdn.microsoft.com/en-us/library/ms738527.aspx> says: - # "if a buffer of 256 bytes is passed in the name parameter and - # the namelen parameter is set to 256, the buffer size will always - # be adequate." - AC_DEFINE([HOST_NAME_MAX], [256], + dnl - On most Unix systems, use MAXHOSTNAMELEN from <sys/param.h> instead. + dnl - On Solaris, Cygwin, BeOS, use MAXHOSTNAMELEN from <netdb.h> instead. + dnl - On mingw, use 256, because + dnl <http://msdn.microsoft.com/en-us/library/ms738527.aspx> says: + dnl "if a buffer of 256 bytes is passed in the name parameter and + dnl the namelen parameter is set to 256, the buffer size will always + dnl be adequate." + dnl With this, there is no need to use sysconf (_SC_HOST_NAME_MAX), which + dnl is not a compile-time constant. + dnl We cannot override <limits.h> using the usual technique, because + dnl gl_CHECK_NEXT_HEADERS does not work for <limits.h>. Therefore retrieve + dnl the value of HOST_NAME_MAX at configure time. + AC_CHECK_HEADERS_ONCE([sys/param.h]) + AC_CHECK_HEADERS_ONCE([sys/socket.h]) + AC_CHECK_HEADERS_ONCE([netdb.h]) + AC_CACHE_CHECK([for HOST_NAME_MAX], [gl_cv_decl_HOST_NAME_MAX], [ + gl_cv_decl_HOST_NAME_MAX= + AC_EGREP_CPP([lucky], [ +#include <limits.h> +#ifdef HOST_NAME_MAX +lucky +#endif + ], [gl_cv_decl_HOST_NAME_MAX=yes]) + if test -z "$gl_cv_decl_HOST_NAME_MAX"; then + dnl It's not defined in <limits.h>. Substitute it. + if test "$gl_cv_w32_gethostname" = yes; then + dnl mingw. + gl_cv_decl_HOST_NAME_MAX=256 + else + _AC_COMPUTE_INT([MAXHOSTNAMELEN], [gl_cv_decl_HOST_NAME_MAX], [ +#include <sys/types.h> +#if HAVE_SYS_PARAM_H +# include <sys/param.h> +#endif +#if HAVE_SYS_SOCKET_H +# include <sys/socket.h> +#endif +#if HAVE_NETDB_H +# include <netdb.h> +#endif +]) + fi + fi + ]) + if test "$gl_cv_decl_HOST_NAME_MAX" != yes; then + AC_DEFINE_UNQUOTED([HOST_NAME_MAX], [$gl_cv_decl_HOST_NAME_MAX], [Define HOST_NAME_MAX when <limits.h> does not define it.]) fi ])