projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Note 'new' commands.
[mmh]
/
mts
/
smtp
/
hosts.c
diff --git
a/mts/smtp/hosts.c
b/mts/smtp/hosts.c
index
83727d5
..
908e619
100644
(file)
--- a/
mts/smtp/hosts.c
+++ b/
mts/smtp/hosts.c
@@
-3,6
+3,10
@@
* hosts.c -- find out the official name of a host
*
* $Id$
* 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
+17,7
@@
*/
#include <h/mh.h>
*/
#include <h/mh.h>
-#include <zotnet/mts/mts.h>
+#include <h/mts.h>
#include <netdb.h>
static struct host {
#include <netdb.h>
static struct host {
@@
-32,8
+36,9
@@
static int init_hs(void);
char *
OfficialName (char *name)
{
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;
static char buffer[BUFSIZ];
char **r;
@@
-44,24
+49,26
@@
OfficialName (char *name)
*q = '\0';
q = site;
*q = '\0';
q = site;
- if (!strcasecmp (LocalName(), site))
+ if (!mh_strcasecmp (LocalName(), site))
return LocalName();
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)
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++)
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;
}
}
return h->h_name;
}
}
@@
-81,7
+88,8
@@
OfficialName (char *name)
static int
init_hs (void)
{
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;
char buffer[BUFSIZ], *aliases[NALIASES];
register struct host *h;
register FILE *fp;