X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Faddrsbr.c;h=79d7afe4c467dd1e075934d4c1a256f70e31a5a6;hb=e87123959d15f3b190494dffdd8bce335c137874;hp=09e4c6c569a61c9419a81f72a076cf9c33745d1d;hpb=3adc6332ad97bf689bcfb8ab5fd45c86a6051a77;p=mmh diff --git a/sbr/addrsbr.c b/sbr/addrsbr.c index 09e4c6c..79d7afe 100644 --- a/sbr/addrsbr.c +++ b/sbr/addrsbr.c @@ -2,8 +2,6 @@ /* * addrsbr.c -- parse addresses 822-style * - * $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. @@ -528,3 +526,51 @@ local_test: ; return 0; } + + +/* + * Moved from hosts.c -- find out the official name of a host + */ + +/* + * In the SendMail world, we really don't know what the valid + * hosts are. We could poke around in the sendmail.cf file, but + * that still isn't a guarantee. As a result, we'll say that + * everything is a valid host, and let SendMail worry about it. + */ + +#include +#include + + +char * +OfficialName (char *name) +{ + unsigned char *p; + char *q, site[BUFSIZ]; + struct addrinfo hints, *res; + + static char buffer[BUFSIZ]; + + for (p = name, q = site; *p && (q - site < sizeof(site) - 1); p++, q++) + *q = isupper (*p) ? tolower (*p) : *p; + *q = '\0'; + q = site; + + if (!mh_strcasecmp (LocalName(), site)) + return LocalName(); + + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_CANONNAME; + hints.ai_family = PF_UNSPEC; + + if (getaddrinfo(q, NULL, &hints, &res) == 0) { + strncpy (buffer, res->ai_canonname, sizeof(buffer)); + buffer[sizeof(buffer) - 1] = '\0'; + freeaddrinfo(res); + return buffer; + } + + strncpy (buffer, site, sizeof(buffer)); + return buffer; +}