From: Bruno Haible Date: Sun, 2 Aug 2009 10:24:14 +0000 (+0200) Subject: Ensure HOST_NAME_MAX as part of the gethostname module. X-Git-Tag: v0.1~5734 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;h=4f2b5393249dec26fe8c47085642a317367202a3;p=gnulib.git Ensure HOST_NAME_MAX as part of the gethostname module. --- diff --git a/ChangeLog b/ChangeLog index 7bab96028..ee140460f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-08-02 Simon Josefsson + Bruno Haible + + Ensure HOST_NAME_MAX as part of the gethostname module. + * m4/gethostname.m4 (gl_FUNC_GETHOSTNAME): On native Windows platforms, + define also HOST_NAME_MAX. + * tests/test-gethostname.c (main): Check also HOST_NAME_MAX. + * doc/posix-headers/limits.texi: Document the mingw problem. + 2009-08-02 Bruno Haible * lib/gethostname.c (gethostname): Fix handling of large len argument. diff --git a/doc/posix-headers/limits.texi b/doc/posix-headers/limits.texi index 0b5e43189..fa5c1eb31 100644 --- a/doc/posix-headers/limits.texi +++ b/doc/posix-headers/limits.texi @@ -3,10 +3,12 @@ POSIX specification: @url{http://www.opengroup.org/susv3xbd/limits.h.html} -Gnulib module: --- +Gnulib module: gethostname Portability problems fixed by Gnulib: @itemize +The @code{HOST_NAME_MAX} macro is not defined on some platforms: +mingw. @end itemize Portability problems not fixed by Gnulib: diff --git a/m4/gethostname.m4 b/m4/gethostname.m4 index 620e023c8..8af4aa049 100644 --- a/m4/gethostname.m4 +++ b/m4/gethostname.m4 @@ -1,9 +1,12 @@ -# gethostname.m4 serial 6 +# gethostname.m4 serial 7 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, dnl with or without modifications, as long as this notice is preserved. +# Ensure +# - the gethostname() function, +# - the HOST_NAME_MAX macro in . AC_DEFUN([gl_FUNC_GETHOSTNAME], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) @@ -38,6 +41,16 @@ AC_DEFUN([gl_FUNC_GETHOSTNAME], HAVE_GETHOSTNAME=0 gl_PREREQ_GETHOSTNAME fi + + dnl Also provide HOST_NAME_MAX when lacks it. + if test "$gl_cv_w32_gethostname" = "yes"; then + # 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], + [Define HOST_NAME_MAX when does not define it.]) + fi ]) # Prerequisites of lib/gethostname.c. diff --git a/tests/test-gethostname.c b/tests/test-gethostname.c index ef509530b..c1914fd91 100644 --- a/tests/test-gethostname.c +++ b/tests/test-gethostname.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 Free Software Foundation + * Copyright (C) 2008, 2009 Free Software Foundation * Written by Simon Josefsson. * * This program is free software: you can redistribute it and/or modify @@ -28,9 +28,15 @@ int main (int argc, char *argv[]) { - char buf[2500]; + char buf[HOST_NAME_MAX]; int rc; + if (strlen (NOHOSTNAME) >= HOST_NAME_MAX) + { + printf ("HOST_NAME_MAX impossibly small?! %d\n", HOST_NAME_MAX); + return 2; + } + strcpy (buf, NOHOSTNAME); rc = gethostname (buf, sizeof (buf));