X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Faddrsbr.c;h=79d7afe4c467dd1e075934d4c1a256f70e31a5a6;hb=e87123959d15f3b190494dffdd8bce335c137874;hp=fa45e31a51812d16679b511a575b1bcd4a62d9bc;hpb=d2f12554a254e814dcdafb3828fc0d9936154eef;p=mmh diff --git a/sbr/addrsbr.c b/sbr/addrsbr.c index fa45e31..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. @@ -119,7 +117,7 @@ getm (char *str, char *dfhost, int dftype, int wanthost, char *eresult) char *dp; #endif /* not DUMB */ - if (err && err[0]) { + if (err[0]) { if (eresult) strcpy (eresult, err); else @@ -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; +}