X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/f29bbf35b2de1893a3e383943f813cbc4f41960b..bfc6b93af:/sbr/addrsbr.c?ds=inline diff --git a/sbr/addrsbr.c b/sbr/addrsbr.c index f8b98f23..bb6c4f0b 100644 --- a/sbr/addrsbr.c +++ b/sbr/addrsbr.c @@ -76,17 +76,22 @@ static char *grp = NULL; static char *note = NULL; static char err[BUFSIZ]; static char adr[BUFSIZ]; +static int eai = 0; + +void +enable_eai() { + eai = 1; +} char * getname (const char *addrs) { struct adrx *ap; - const char *const eai = context_find ("eai"); pers = mbox = host = route = grp = note = NULL; err[0] = '\0'; - if ((ap = getadrx (addrs ? addrs : "", eai && strncasecmp (eai, "utf-8", 5) == 0)) == NULL) { + if ((ap = getadrx (addrs ? addrs : "", eai)) == NULL) { return NULL; } @@ -140,20 +145,11 @@ getm (char *str, char *dfhost, int dftype, char *eresult, size_t eresultsize) dftype = LOCALHOST; } - mp = (struct mailname *) mh_xcalloc ((size_t) 1, sizeof(*mp)); - if (mp == NULL) { - if (eresult) { - strncpy (eresult, "insufficient memory to represent address", - eresultsize); - eresult[eresultsize - 1] = '\0'; - } - return NULL; - } - + NEW0(mp); mp->m_next = NULL; mp->m_text = getcpy (str); if (pers) - mp->m_pers = getcpy (pers); + mp->m_pers = mh_xstrdup(pers); if (mbox == NULL) { mp->m_type = BADHOST; @@ -161,19 +157,19 @@ getm (char *str, char *dfhost, int dftype, char *eresult, size_t eresultsize) mp->m_ingrp = ingrp; mp->m_gname = getcpy (grp); if (note) - mp->m_note = getcpy (note); + mp->m_note = mh_xstrdup(note); return mp; } if (host) { mp->m_mbox = getcpy (mbox); - mp->m_host = getcpy (host); + mp->m_host = mh_xstrdup(host); 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_mbox = mh_xstrdup(pp); mp->m_host = getcpy (mbox); mp->m_type = UUCPHOST; } else { @@ -193,12 +189,12 @@ getm (char *str, char *dfhost, int dftype, char *eresult, size_t eresultsize) to support wild-card matching. */ if (route) - mp->m_path = getcpy (route); + mp->m_path = mh_xstrdup(route); mp->m_ingrp = ingrp; if (grp) - mp->m_gname = getcpy (grp); + mp->m_gname = mh_xstrdup(grp); if (note) - mp->m_note = getcpy (note); + mp->m_note = mh_xstrdup(note); return mp; } @@ -210,22 +206,15 @@ mnfree (struct mailname *mp) if (!mp) return; - if (mp->m_text) - free (mp->m_text); - if (mp->m_pers) - free (mp->m_pers); - if (mp->m_mbox) - free (mp->m_mbox); - if (mp->m_host) - free (mp->m_host); - if (mp->m_path) - free (mp->m_path); - if (mp->m_gname) - free (mp->m_gname); - if (mp->m_note) - free (mp->m_note); - - free ((char *) mp); + mh_xfree(mp->m_text); + mh_xfree(mp->m_pers); + mh_xfree(mp->m_mbox); + mh_xfree(mp->m_host); + mh_xfree(mp->m_path); + mh_xfree(mp->m_gname); + mh_xfree(mp->m_note); + + free(mp); } @@ -290,9 +279,9 @@ int ismymbox (struct mailname *np) { int oops; - register int len, i; - register char *cp; - register char *pp; + int len, i; + char *cp; + char *pp; char buffer[BUFSIZ]; struct mailname *mp; static char *am = NULL;