X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/5cf527275a011bac7352394f94176fd9c3251141..7559e1ebf:/sbr/addrsbr.c diff --git a/sbr/addrsbr.c b/sbr/addrsbr.c index 929b4914..b2079bd2 100644 --- a/sbr/addrsbr.c +++ b/sbr/addrsbr.c @@ -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; } @@ -170,7 +167,7 @@ getm (char *str, char *dfhost, int dftype, int wanthost, char *eresult) mp->m_mbox = getcpy (mbox); mp->m_host = getcpy (host); mp->m_type = - mh_strcasecmp (LocalName(0), mp->m_host) ? NETHOST : LOCALHOST; + strcasecmp (LocalName(0), mp->m_host) ? NETHOST : LOCALHOST; } else { if ((pp = strchr(mbox, '!'))) { *pp++ = '\0'; @@ -242,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) @@ -271,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 @@ -332,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; } @@ -352,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 { @@ -411,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; @@ -435,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: @@ -461,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: