static struct adrx adrxs2;
+/* eai = Email Address Internationalization */
struct adrx *
-getadrx (const char *addrs)
+getadrx (const char *addrs, int eai)
{
- register char *bp;
- register struct adrx *adrxp = &adrxs2;
+ char *bp;
+ struct adrx *adrxp = &adrxs2;
if (pers)
free (pers);
break;
}
- /*
- * Reject the address if key fields contain 8bit characters
- */
+ if (! eai) {
+ /*
+ * Reject the address if key fields contain 8bit characters
+ */
- if (contains8bit(mbox, NULL) || contains8bit(host, NULL) ||
- contains8bit(path, NULL) || contains8bit(grp, NULL)) {
- strcpy(err, "Address contains 8-bit characters");
+ if (contains8bit(mbox, NULL) || contains8bit(host, NULL) ||
+ contains8bit(path, NULL) || contains8bit(grp, NULL)) {
+ strcpy(err, "Address contains 8-bit characters");
+ }
}
if (err[0])
while (isspace ((unsigned char) *ap))
ap++;
if (cp)
- sprintf (adr, "%.*s", (int)(cp - ap), ap);
+ snprintf(adr, sizeof adr, "%.*s", (int)(cp - ap), ap);
else
strcpy (adr, ap);
bp = adr + strlen (adr) - 1;
return OK; /* why be choosy? */
default:
- sprintf (err, "illegal address construct (%s)", buffer);
+ snprintf(err, sizeof err, "illegal address construct (%s)", buffer);
return NOTOK;
}
return NOTOK;
if (last_lex == LX_RBRK)
return OK;
- sprintf (err, "missing right-bracket (%s)", buffer);
+ snprintf(err, sizeof err, "missing right-bracket (%s)", buffer);
return NOTOK;
case LX_COLN:
get_group: ;
if (glevel++ > 0) {
- sprintf (err, "nested groups not allowed (%s)", pers);
+ snprintf(err, sizeof err, "nested groups not allowed (%s)", pers);
return NOTOK;
}
grp = add (": ", pers);
goto more_phrase;
default:
- sprintf (err, "no mailbox in address, only a phrase (%s%s)",
+ snprintf(err, sizeof err, "no mailbox in address, only a phrase (%s%s)",
pers, buffer);
return NOTOK;
}
return OK;
default:
- sprintf (err, "junk after local@domain (%s)", buffer);
+ snprintf(err, sizeof err, "junk after local@domain (%s)", buffer);
return NOTOK;
}
return OK;
default:
- sprintf (err, "missing mailbox (%s)", buffer);
+ snprintf(err, sizeof err, "missing mailbox (%s)", buffer);
return NOTOK;
}
}
static int
route_addr (char *buffer)
{
- register char *pp = cp;
+ char *pp = cp;
if (my_lex (buffer) == LX_AT) {
if (route (buffer) == NOTOK)
return OK;
default:
- sprintf (err, "no at-sign after local-part (%s)", buffer);
+ snprintf(err, sizeof err, "no at-sign after local-part (%s)", buffer);
return NOTOK;
}
}
break;
default:
- sprintf (err, "no mailbox in local-part (%s)", buffer);
+ snprintf(err, sizeof err, "no mailbox in local-part (%s)", buffer);
return NOTOK;
}
break;
default:
- sprintf (err, "no sub-domain in domain-part of address (%s)", buffer);
+ snprintf(err, sizeof err, "no sub-domain in domain-part of address (%s)", buffer);
return NOTOK;
}
break;
default:
- sprintf (err, "no sub-domain in domain-part of address (%s)", buffer);
+ snprintf(err, sizeof err, "no sub-domain in domain-part of address (%s)", buffer);
return NOTOK;
}
switch (my_lex (buffer)) {
break;
default:
- sprintf (err, "no at-sign found for next domain in route (%s)",
+ snprintf(err, sizeof err, "no at-sign found for next domain in route (%s)",
buffer);
}
break;
return OK;
default:
- sprintf (err, "no colon found to terminate route (%s)", buffer);
+ snprintf(err, sizeof err, "no colon found to terminate route (%s)", buffer);
return NOTOK;
}
}
legal_person (const char *p)
{
int i;
- register const char *cp;
+ const char *cp;
static char buffer[BUFSIZ];
if (*p == '"')
for (cp = p; *cp; cp++)
for (i = 0; special[i].lx_chr; i++)
if (*cp == special[i].lx_chr) {
- sprintf (buffer, "\"%s\"", p);
+ snprintf(buffer, sizeof buffer, "\"%s\"", p);
return buffer;
}
mfgets (FILE *in, char **bp)
{
int i;
- register char *cp, *dp, *ep;
+ char *cp, *dp, *ep;
static int len = 0;
static char *pp = NULL;