]> diplodocus.org Git - nmh/blobdiff - sbr/addrsbr.c
Document changes to mhbuild.
[nmh] / sbr / addrsbr.c
index 6c9fe0e32e7aff323b5bb465217e5cc513c14759..b2079bd288e4f7aa28f0ab4de481bf9829d0fb2d 100644 (file)
@@ -78,7 +78,7 @@ static char adr[BUFSIZ];
 
 
 char *
-getname (char *addrs)
+getname (const char *addrs)
 {
     struct adrx *ap;
 
@@ -104,35 +104,32 @@ getname (char *addrs)
 
 
 struct mailname *
-getm (char *str, char *dfhost, int dftype, int wanthost, char *eresult)
+getm (char *str, char *dfhost, int dftype, char *eresult, size_t eresultsize)
 {
     char *pp;
     struct mailname *mp;
 
     if (err[0]) {
-       if (eresult)
-           strcpy (eresult, err);
-       else
-           if (wanthost == AD_HOST)
-               admonish (NULL, "bad address '%s' - %s", str, err);
+       if (eresult) {
+           strncpy (eresult, err, eresultsize);
+           eresult[eresultsize - 1] = '\0';
+       }
        return NULL;
     }
     if (pers == NULL
            && mbox == NULL && host == NULL && route == NULL
            && grp == NULL) {
-       if (eresult)
-           strcpy (eresult, "null address");
-       else
-           if (wanthost == AD_HOST)
-               admonish (NULL, "null address '%s'", str);
+       if (eresult) {
+           strncpy (eresult, "null address", eresultsize);
+           eresult[eresultsize - 1] = '\0';
+       }
        return NULL;
     }
     if (mbox == NULL && grp == NULL) {
-       if (eresult)
-           strcpy (eresult, "no mailbox in address");
-       else
-           if (wanthost == AD_HOST)
-               admonish (NULL, "no mailbox in address '%s'", str);
+       if (eresult) {
+           strncpy (eresult, "no mailbox in address", eresultsize);
+           eresult[eresultsize - 1] = '\0';
+       }
        return NULL;
     }
 
@@ -143,11 +140,11 @@ getm (char *str, char *dfhost, int dftype, int wanthost, char *eresult)
 
     mp = (struct mailname *) calloc ((size_t) 1, sizeof(*mp));
     if (mp == NULL) {
-       if (eresult)
-          strcpy (eresult, "insufficient memory to represent address");
-       else
-           if (wanthost == AD_HOST)
-               adios (NULL, "insufficient memory to represent address");
+       if (eresult) {
+           strncpy (eresult, "insufficient memory to represent address",
+                    eresultsize);
+           eresult[eresultsize - 1] = '\0';
+       }
        return NULL;
     }
 
@@ -169,39 +166,30 @@ getm (char *str, char *dfhost, int dftype, int wanthost, char *eresult)
     if (host) {
        mp->m_mbox = getcpy (mbox);
        mp->m_host = getcpy (host);
-    }
-    else {
+       mp->m_type =
+           strcasecmp (LocalName(0), mp->m_host) ? NETHOST : LOCALHOST;
+    } else {
        if ((pp = strchr(mbox, '!'))) {
            *pp++ = '\0';
            mp->m_mbox = getcpy (pp);
            mp->m_host = getcpy (mbox);
            mp->m_type = UUCPHOST;
-       }
-       else {
+       } else {
            mp->m_nohost = 1;
            mp->m_mbox = getcpy (mbox);
            if (route == NULL && dftype == LOCALHOST) {
                mp->m_host = NULL;
                mp->m_type = dftype;
-           }
-           else
-           {
+           } else {
                mp->m_host = route ? NULL : getcpy (dfhost);
                mp->m_type = route ? NETHOST : dftype;
            }
        }
-       goto got_host;
     }
 
     /* For alternate mailboxes, m_type gets overwritten in ismymbox ()
        to support wild-card matching. */
-    if (wanthost == AD_NHST)
-       mp->m_type = !mh_strcasecmp (LocalName (0), mp->m_host)
-           ? LOCALHOST : NETHOST;
-    else
-       mp->m_type = mh_strcasecmp (LocalName(0), mp->m_host) ?  NETHOST : LOCALHOST;
 
-got_host: ;
     if (route)
        mp->m_path = getcpy (route);
     mp->m_ingrp = ingrp;
@@ -251,10 +239,13 @@ auxformat (struct mailname *mp, int extras)
            strncpy (addr, mp->m_mbox ? mp->m_mbox : "", sizeof(addr));
        else
 
-       if (mp->m_type != UUCPHOST)
-           snprintf (addr, sizeof(addr), mp->m_host ? "%s%s@%s" : "%s%s",
-               empty(mp->m_path), empty(mp->m_mbox), mp->m_host);
-       else
+       if (mp->m_type != UUCPHOST) {
+           if (mp->m_host)
+               snprintf (addr, sizeof(addr), "%s%s@%s", empty(mp->m_path),
+                         empty(mp->m_mbox), mp->m_host);
+           else snprintf (addr, sizeof(addr), "%s%s", empty(mp->m_path),
+                          empty(mp->m_mbox));
+       } else
            snprintf (addr, sizeof(addr), "%s!%s", mp->m_host, mp->m_mbox);
 
     if (!extras)
@@ -280,24 +271,6 @@ auxformat (struct mailname *mp, int extras)
 }
 
 
-/*
- * This used to be adrsprintf() (where it would format an address for you
- * given a username and a domain).  But somewhere we got to the point where
- * the only caller was post, and it only called it with both arguments NULL.
- * So the function was renamed with a more sensible name.
- */
-
-char *
-getlocaladdr(void)
-{
-    char        *username;
-
-    username = getusername();
-
-    return username;
-}
-
-
 #define        W_NIL   0x0000
 #define        W_MBEG  0x0001
 #define        W_MEND  0x0002
@@ -341,7 +314,7 @@ ismymbox (struct mailname *np)
                return 0;
            }
 
-           if ((mq.m_next = getm (cp, NULL, 0, AD_NAME, NULL)) == NULL) {
+           if ((mq.m_next = getm (cp, NULL, 0, NULL, 0)) == NULL) {
                admonish (NULL, "invalid entry in local-mailbox: %s", cp);
                return 0;
            }
@@ -361,7 +334,7 @@ ismymbox (struct mailname *np)
            mp = mq.m_next ? mq.m_next : &mq;
            oops = 0;
            while ((cp = getname (am))) {
-               if ((mp->m_next = getm (cp, NULL, 0, AD_NAME, NULL)) == NULL) {
+               if ((mp->m_next = getm (cp, NULL, 0, NULL, 0)) == NULL) {
                    admonish (NULL, "illegal address: %s", cp);
                    oops++;
                } else {
@@ -420,11 +393,11 @@ ismymbox (struct mailname *np)
                goto local_test;
 
            case UUCPHOST:
-               if (mh_strcasecmp (np->m_host, SystemName()))
+               if (strcasecmp (np->m_host, SystemName()))
                    break;              /* fall */
            case LOCALHOST:
 local_test: ;
-               if (!mh_strcasecmp (np->m_mbox, mq.m_mbox))
+               if (!strcasecmp (np->m_mbox, mq.m_mbox))
                    return 1;
                break;
 
@@ -444,11 +417,11 @@ local_test: ;
            continue;
        switch (mp->m_type & W_MBOX) {
            case W_NIL: 
-               if (mh_strcasecmp (cp, pp))
+               if (strcasecmp (cp, pp))
                    continue;
                break;
            case W_MBEG: 
-               if (mh_strcasecmp (cp + len - i, pp))
+               if (strcasecmp (cp + len - i, pp))
                    continue;
                break;
            case W_MEND: 
@@ -470,11 +443,11 @@ local_test: ;
            continue;
        switch (mp->m_type & W_HOST) {
            case W_NIL: 
-               if (mh_strcasecmp (cp, pp))
+               if (strcasecmp (cp, pp))
                    continue;
                break;
            case W_HBEG: 
-               if (mh_strcasecmp (cp + len - i, pp))
+               if (strcasecmp (cp + len - i, pp))
                    continue;
                break;
            case W_HEND: