#include <h/addrsbr.h>
#include <h/mf.h>
#include <h/mts.h>
+#include <h/utils.h>
/* High level parsing of addresses:
If an explicit host is not present, then MH checks for a bang to indicate
an explicit UUCP-style address. If so, this is noted. If not, the host is
- defaulted, typically to the local host. The lack of an explict host is
+ defaulted, typically to the local host. The lack of an explicit host is
also noted.
If an explicit 822-style host is present, then MH checks to see if it
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;
-
pers = mbox = host = route = grp = note = NULL;
err[0] = '\0';
- if ((ap = getadrx (addrs ? addrs : "")) == NULL)
+ if ((ap = getadrx (addrs ? addrs : "", eai)) == NULL) {
return NULL;
+ }
strncpy (adr, ap->text, sizeof(adr));
pers = ap->pers;
dftype = LOCALHOST;
}
- mp = (struct mailname *) calloc ((size_t) 1, sizeof(*mp));
+ mp = (struct mailname *) mh_xcalloc ((size_t) 1, sizeof(*mp));
if (mp == NULL) {
if (eresult) {
strncpy (eresult, "insufficient memory to represent address",
for (mp = &mq; mp->m_next;) {
mp = mp->m_next;
if (!np->m_mbox)
- continue; if ((len = strlen (cp = np->m_mbox))
+ continue;
+ if ((len = strlen (cp = np->m_mbox))
< (i = strlen (pp = mp->m_mbox)))
continue;
switch (mp->m_type & W_MBOX) {