]> Savannah Git Hosting - gnulib.git/commitdiff
xgetdomainname: Ensure .c file starts with '#include <config.h>'.
authorBruno Haible <bruno@clisp.org>
Sat, 7 Aug 2021 21:30:53 +0000 (23:30 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 7 Aug 2021 21:30:53 +0000 (23:30 +0200)
* lib/xgetaname-impl.h: New file, based on lib/xgethostname.c.
* lib/xgethostname.c: Move implementation to lib/xgetaname-impl.h.
* lib/xgetdomainname.c: Include <config.h>. Include xgetaname-impl.h
instead of xgethostname.c.
* modules/xgethostname (Files): Add lib/xgetaname-impl.h.
* modules/xgetdomainname (Files): Likewise.
(Depends-on): Remove xgethostname. Add free-posix, xalloc.

ChangeLog
lib/xgetaname-impl.h [new file with mode: 0644]
lib/xgetdomainname.c
lib/xgethostname.c
modules/xgetdomainname
modules/xgethostname

index 8e3707f0462826fa8d2352bb1eda08d9979f81a5..9073c377f29553c17032f3bbd82421b24c5e04e1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2021-08-07  Bruno Haible  <bruno@clisp.org>
+
+       xgetdomainname: Ensure .c file starts with '#include <config.h>'.
+       * lib/xgetaname-impl.h: New file, based on lib/xgethostname.c.
+       * lib/xgethostname.c: Move implementation to lib/xgetaname-impl.h.
+       * lib/xgetdomainname.c: Include <config.h>. Include xgetaname-impl.h
+       instead of xgethostname.c.
+       * modules/xgethostname (Files): Add lib/xgetaname-impl.h.
+       * modules/xgetdomainname (Files): Likewise.
+       (Depends-on): Remove xgethostname. Add free-posix, xalloc.
+
 2021-08-07  Bruno Haible  <bruno@clisp.org>
 
        xstrndup: Improve GCC 11 allocation-deallocation checking.
diff --git a/lib/xgetaname-impl.h b/lib/xgetaname-impl.h
new file mode 100644 (file)
index 0000000..ce62000
--- /dev/null
@@ -0,0 +1,63 @@
+/* xgetaname-impl.c -- common implementation of xgethostname and xgetdomainname
+
+   Copyright (C) 1992, 1996, 2000-2001, 2003-2006, 2009-2021 Free Software
+   Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+/* written by Jim Meyering and Paul Eggert */
+
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "xalloc.h"
+
+/* Return the current host or domain name in malloc'd storage.
+   If malloc fails, exit.
+   Upon any other failure, return NULL and set errno.  */
+char *
+XGETANAME (void)
+{
+  char buf[100];
+  idx_t size = sizeof buf;
+  char *name = buf;
+  char *alloc = NULL;
+
+  while (1)
+    {
+      /* Use SIZE_1 here rather than SIZE to work around the bug in
+         SunOS 5.5's gethostname whereby it NUL-terminates HOSTNAME
+         even when the name is as long as the supplied buffer.  */
+      idx_t size_1 = size - 1;
+      name[size_1] = '\0';
+      errno = 0;
+      if (GETANAME (name, size_1) == 0)
+        {
+          /* Check whether the name was possibly truncated; POSIX does not
+             specify whether a truncated name is null-terminated.  */
+          idx_t actual_size = strlen (name) + 1;
+          if (actual_size < size_1)
+            return alloc ? alloc : ximemdup (name, actual_size);
+          errno = 0;
+        }
+      free (alloc);
+      if (errno != 0 && errno != ENAMETOOLONG && errno != EINVAL
+          /* macOS/Darwin does this when SIZE_1 is too small.  */
+          && errno != ENOMEM)
+        return NULL;
+      name = alloc = xpalloc (NULL, &size, 1, -1, 1);
+    }
+}
index c854dd384079e62cb676b9dc4e642c500870358a..08ba7fadc7ec99d05bba45ea2192fefe47977f35 100644 (file)
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
+#include <config.h>
+
+/* Specification.  */
 #include "xgetdomainname.h"
 
 #define GETANAME getdomainname
 #define XGETANAME xgetdomainname
-#include "xgethostname.c"
+#include "xgetaname-impl.h"
index 84c2f279bbf22dfe2e884f9746e521f47b171e5c..69dd857a9c2211c542006253af59b27c60a18acb 100644 (file)
 
 #include <config.h>
 
-#ifndef GETANAME
 /* Specification.  */
-# include "xgethostname.h"
-# define GETANAME gethostname
-# define XGETANAME xgethostname
-#endif
+#include "xgethostname.h"
 
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "xalloc.h"
-
-/* Return the current host or domain name in malloc'd storage.
-   If malloc fails, exit.
-   Upon any other failure, return NULL and set errno.  */
-char *
-XGETANAME (void)
-{
-  char buf[100];
-  idx_t size = sizeof buf;
-  char *name = buf;
-  char *alloc = NULL;
-
-  while (1)
-    {
-      /* Use SIZE_1 here rather than SIZE to work around the bug in
-         SunOS 5.5's gethostname whereby it NUL-terminates HOSTNAME
-         even when the name is as long as the supplied buffer.  */
-      idx_t size_1 = size - 1;
-      name[size_1] = '\0';
-      errno = 0;
-      if (GETANAME (name, size_1) == 0)
-        {
-          /* Check whether the name was possibly truncated; POSIX does not
-             specify whether a truncated name is null-terminated.  */
-          idx_t actual_size = strlen (name) + 1;
-          if (actual_size < size_1)
-            return alloc ? alloc : ximemdup (name, actual_size);
-          errno = 0;
-        }
-      free (alloc);
-      if (errno != 0 && errno != ENAMETOOLONG && errno != EINVAL
-          /* macOS/Darwin does this when SIZE_1 is too small.  */
-          && errno != ENOMEM)
-        return NULL;
-      name = alloc = xpalloc (NULL, &size, 1, -1, 1);
-    }
-}
+#define GETANAME gethostname
+#define XGETANAME xgethostname
+#include "xgetaname-impl.h"
index c1417c8ef6fc97fc4b75ae28490bcc6ff232873a..ec68362089b496e9854ac3e1cf366f014fbb225f 100644 (file)
@@ -4,10 +4,12 @@ Return machine's domainname, without size limitations.
 Files:
 lib/xgetdomainname.h
 lib/xgetdomainname.c
+lib/xgetaname-impl.h
 
 Depends-on:
+free-posix
 getdomainname
-xgethostname
+xalloc
 
 configure.ac:
 
index 846df1c00477d49782e49ed79594c553ae279ad2..ec25db0291d954fcb8cc980f39b433296a514694 100644 (file)
@@ -4,6 +4,7 @@ Return machine's hostname, without size limitations.
 Files:
 lib/xgethostname.h
 lib/xgethostname.c
+lib/xgetaname-impl.h
 
 Depends-on:
 free-posix