Removed configure option --with-hash-prefix and moved backup-prefix to profile
[mmh] / sbr / addrsbr.c
index cf941dc..79d7afe 100644 (file)
@@ -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
@@ -206,18 +204,18 @@ getm (char *str, char *dfhost, int dftype, int wanthost, char *eresult)
     }
 
     if (wanthost == AD_NHST)
-       mp->m_type = !strcasecmp (LocalName (), mp->m_host)
+       mp->m_type = !mh_strcasecmp (LocalName (), mp->m_host)
            ? LOCALHOST : NETHOST;
 #ifdef DUMB
     else
-       mp->m_type = strcasecmp (LocalName(), mp->m_host) ?  NETHOST : LOCALHOST;
+       mp->m_type = mh_strcasecmp (LocalName(), mp->m_host) ?  NETHOST : LOCALHOST;
 #else /* not DUMB */
     else
        if (pp = OfficialName (mp->m_host)) {
     got_real_host: ;
            free (mp->m_host);
            mp->m_host = getcpy (pp);
-           mp->m_type = strcasecmp (LocalName(), mp->m_host) ? NETHOST : LOCALHOST;
+           mp->m_type = mh_strcasecmp (LocalName(), mp->m_host) ? NETHOST : LOCALHOST;
        }
        else {
            if (dp = strchr(mp->m_host, '.')) {
@@ -456,11 +454,11 @@ ismymbox (struct mailname *np)
            goto local_test;
 
        case UUCPHOST:
-           if (strcasecmp (np->m_host, SystemName()))
+           if (mh_strcasecmp (np->m_host, SystemName()))
                break;          /* fall */
        case LOCALHOST:
 local_test: ;
-           if (!strcasecmp (np->m_mbox, mq.m_mbox))
+           if (!mh_strcasecmp (np->m_mbox, mq.m_mbox))
                return 1;
            break;
 
@@ -481,11 +479,11 @@ local_test: ;
            continue;
        switch (mp->m_type & W_MBOX) {
            case W_NIL: 
-               if (strcasecmp (cp, pp))
+               if (mh_strcasecmp (cp, pp))
                    continue;
                break;
            case W_MBEG: 
-               if (strcasecmp (cp + len - i, pp))
+               if (mh_strcasecmp (cp + len - i, pp))
                    continue;
                break;
            case W_MEND: 
@@ -507,11 +505,11 @@ local_test: ;
            continue;
        switch (mp->m_type & W_HOST) {
            case W_NIL: 
-               if (strcasecmp (cp, pp))
+               if (mh_strcasecmp (cp, pp))
                    continue;
                break;
            case W_HBEG: 
-               if (strcasecmp (cp + len - i, pp))
+               if (mh_strcasecmp (cp + len - i, pp))
                    continue;
                break;
            case W_HEND: 
@@ -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 <h/mts.h>
+#include <netdb.h>
+
+
+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;
+}