Remove RCS keywords, since they no longer work after git migration.
[mmh] / mts / smtp / hosts.c
index 83727d5..a10509c 100644 (file)
@@ -2,7 +2,9 @@
 /*
  * hosts.c -- find out the official name of a host
  *
- * $Id$
+ * This code is Copyright (c) 2002, by the authors of nmh.  See the
+ * COPYRIGHT file in the root directory of the nmh distribution for
+ * complete copyright information.
  */
 
 /*
@@ -13,7 +15,7 @@
  */
 
 #include <h/mh.h>
-#include <zotnet/mts/mts.h>
+#include <h/mts.h>
 #include <netdb.h>
 
 static struct host {
@@ -32,8 +34,9 @@ static int init_hs(void);
 char *
 OfficialName (char *name)
 {
-    char *p, *q, site[BUFSIZ];
-    struct hostent *hp;
+    unsigned char *p;
+    char *q, site[BUFSIZ];
+    struct addrinfo hints, *res;
 
     static char buffer[BUFSIZ];
     char **r;
@@ -44,24 +47,26 @@ OfficialName (char *name)
     *q = '\0';
     q = site;
 
-    if (!strcasecmp (LocalName(), site))
+    if (!mh_strcasecmp (LocalName(), site))
        return LocalName();
 
-#ifdef HAVE_SETHOSTENT
-    sethostent (1);
-#endif
+    memset(&hints, 0, sizeof(hints));
+    hints.ai_flags = AI_CANONNAME;
+    hints.ai_family = PF_UNSPEC;
 
-    if ((hp = gethostbyname (q))) {
-       strncpy (buffer, hp->h_name, sizeof(buffer));
+    if (getaddrinfo(q, NULL, &hints, &res) == 0) {
+       strncpy (buffer, res->ai_canonname, sizeof(buffer));
+       buffer[sizeof(buffer) - 1] = '\0';
+       freeaddrinfo(res);
        return buffer;
     }
     if (hosts.h_name || init_hs ()) {
        for (h = hosts.h_next; h; h = h->h_next)
-           if (!strcasecmp (h->h_name, q)) {
+           if (!mh_strcasecmp (h->h_name, q)) {
                return h->h_name;
            } else {
                for (r = h->h_aliases; *r; r++)
-                   if (!strcasecmp (*r, q))
+                   if (!mh_strcasecmp (*r, q))
                        return h->h_name;
            }
     }
@@ -81,7 +86,8 @@ OfficialName (char *name)
 static int
 init_hs (void)
 {
-    char  *cp, *dp, **q, **r;
+    unsigned char  *cp;
+    char *dp, **q, **r;
     char buffer[BUFSIZ], *aliases[NALIASES];
     register struct host *h;
     register FILE  *fp;