bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: HOST_NAME_MAX


From: Simon Josefsson
Subject: Re: HOST_NAME_MAX
Date: Wed, 01 Apr 2009 13:54:04 +0200
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.90 (gnu/linux)

Bruno Haible <address@hidden> 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
address@hidden 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));




reply via email to

[Prev in Thread] Current Thread [Next in Thread]