Bruno Haible <br...@clisp.org> writes: >> One complication is that POSIX says the symbol should be defined in >> limits.h. Do we need a gnulib replacement header for limits.h to be >> able to define HOST_NAME_MAX? > > No, it is more convenient to define it in config.h, simply through > AC_DEFINE. ... > The definition can be triggered by the 'gethostname' module. I don't think > anyone will need HOST_NAME_MAX without needing the gethostname() function.
That would be fine with me. How about the patch below? This is on top of my earlier gethostname patch for mingw. /Simon diff --git a/doc/posix-headers/limits.texi b/doc/posix-headers/limits.texi index 0b5e431..d404b9c 100644 --- a/doc/posix-headers/limits.texi +++ b/doc/posix-headers/limits.texi @@ -11,4 +11,7 @@ Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: @itemize +The @code{HOST_NAME_MAX} symbol is not defined under Windows, use the +...@code{gethostname} gnulib module to get it. + @end itemize diff --git a/m4/gethostname.m4 b/m4/gethostname.m4 index 620e023..a2b8e60 100644 --- a/m4/gethostname.m4 +++ b/m4/gethostname.m4 @@ -42,7 +42,13 @@ AC_DEFUN([gl_FUNC_GETHOSTNAME], # Prerequisites of lib/gethostname.c. AC_DEFUN([gl_PREREQ_GETHOSTNAME], [ - if test "$gl_cv_w32_gethostname" != "yes"; then + 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], [Define HOST_NAME_MAX on Mingw.]) + else AC_CHECK_FUNCS([uname]) fi ]) diff --git a/modules/gethostname b/modules/gethostname index e21afe6..a50c22b 100644 --- a/modules/gethostname +++ b/modules/gethostname @@ -1,5 +1,5 @@ Description: -gethostname() function: Return machine's hostname. +Provide HOST_NAME_MAX and gethostname() function: Return machine's hostname. Files: lib/gethostname.c diff --git a/tests/test-gethostname.c b/tests/test-gethostname.c index ef50953..c1914fd 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));