X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=mts%2Fsmtp%2Fhosts.c;h=a10509cfb22c9e3ba32d3715814c7b01b876a9be;hp=daa59b6b6dc074250908bacd906350707ac0d63f;hb=5dd6771b28c257af405d7248639ed0e3bcdce38b;hpb=8563731b02ce9d750806f6b1769af8b399d964e8 diff --git a/mts/smtp/hosts.c b/mts/smtp/hosts.c index daa59b6..a10509c 100644 --- a/mts/smtp/hosts.c +++ b/mts/smtp/hosts.c @@ -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 -#include +#include #include 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(); -#ifndef BIND - 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;