X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=mts%2Fsendmail%2Fhosts.c;fp=mts%2Fsendmail%2Fhosts.c;h=0000000000000000000000000000000000000000;hb=b779fc0797de650993f5f8ec15c23ca9a7b3c9e2;hp=40697ce90b4501c7810bc870fe8a576a9167e92d;hpb=51d3c1179979615d85205399a392fcc3ef1c4384;p=mmh diff --git a/mts/sendmail/hosts.c b/mts/sendmail/hosts.c deleted file mode 100644 index 40697ce..0000000 --- a/mts/sendmail/hosts.c +++ /dev/null @@ -1,137 +0,0 @@ - -/* - * hosts.c -- find out the official name of a host - * - * $Id$ - */ - -/* - * 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 -#include - -static struct host { - char *h_name; - char **h_aliases; - struct host *h_next; -} hosts; - - -/* - * static prototypes - */ -static int init_hs(void); - - -char * -OfficialName (char *name) -{ - char *p, *q, site[BUFSIZ]; - struct hostent *hp; - - static char buffer[BUFSIZ]; - char **r; - struct host *h; - - for (p = name, q = site; *p && (q - site < sizeof(site) - 1); p++, q++) - *q = isupper (*p) ? tolower (*p) : *p; - *q = '\0'; - q = site; - - if (!strcasecmp (LocalName(), site)) - return LocalName(); - -#ifdef HAVE_SETHOSTENT - sethostent (1); -#endif - - if ((hp = gethostbyname (q))) { - strncpy (buffer, hp->h_name, sizeof(buffer)); - return buffer; - } - if (hosts.h_name || init_hs ()) { - for (h = hosts.h_next; h; h = h->h_next) - if (!strcasecmp (h->h_name, q)) { - return h->h_name; - } else { - for (r = h->h_aliases; *r; r++) - if (!strcasecmp (*r, q)) - return h->h_name; - } - } - - strncpy (buffer, site, sizeof(buffer)); - return buffer; -} - -/* - * Use hostable as an exception file for those hosts that aren't - * on the Internet (listed in /etc/hosts). These are usually - * PhoneNet and UUCP sites. - */ - -#define NALIASES 50 - -static int -init_hs (void) -{ - char *cp, *dp, **q, **r; - char buffer[BUFSIZ], *aliases[NALIASES]; - register struct host *h; - register FILE *fp; - - if ((fp = fopen (hostable, "r")) == NULL) - return 0; - - h = &hosts; - while (fgets (buffer, sizeof(buffer), fp) != NULL) { - if ((cp = strchr(buffer, '#'))) - *cp = 0; - if ((cp = strchr(buffer, '\n'))) - *cp = 0; - for (cp = buffer; *cp; cp++) - if (isspace (*cp)) - *cp = ' '; - for (cp = buffer; isspace (*cp); cp++) - continue; - if (*cp == 0) - continue; - - q = aliases; - if ((cp = strchr(dp = cp, ' '))) { - *cp = 0; - for (cp++; *cp; cp++) { - while (isspace (*cp)) - cp++; - if (*cp == 0) - break; - if ((cp = strchr(*q++ = cp, ' '))) - *cp = 0; - else - break; - if (q >= aliases + NALIASES) - break; - } - } - - *q = 0; - - h->h_next = (struct host *) calloc (1, sizeof(*h)); - h = h->h_next; - h->h_name = getcpy (dp); - r = h->h_aliases = - (char **) calloc ((size_t) (q - aliases + 1), sizeof(*q)); - for (q = aliases; *q; q++) - *r++ = getcpy (*q); - *r = 0; - } - - fclose (fp); - return 1; -}