/*
** static prototypes
*/
-static char *getcpy (char *);
-static int isat (char *);
-static int parse_address (void);
-static int phrase (char *);
-static int route_addr (char *);
-static int local_part (char *);
-static int domain (char *);
-static int route (char *);
-static int my_lex (char *);
+static char *getcpy(char *);
+static int isat(char *);
+static int parse_address(void);
+static int phrase(char *);
+static int route_addr(char *);
+static int local_part(char *);
+static int domain(char *);
+static int route(char *);
+static int my_lex(char *);
static char *
-getcpy (char *s)
+getcpy(char *s)
{
register char *p;
for(;;)
pause();
}
- p = mh_xmalloc ((size_t) (strlen (s) + 2));
- strcpy (p, s);
+ p = mh_xmalloc((size_t) (strlen(s) + 2));
+ strcpy(p, s);
return p;
}
static int
-isat (char *p)
+isat(char *p)
{
- return (strncmp (p, " AT ", 4)
- && strncmp (p, " At ", 4)
- && strncmp (p, " aT ", 4)
- && strncmp (p, " at ", 4) ? FALSE : TRUE);
+ return (strncmp(p, " AT ", 4)
+ && strncmp(p, " At ", 4)
+ && strncmp(p, " aT ", 4)
+ && strncmp(p, " at ", 4) ? FALSE : TRUE);
}
struct adrx *
-getadrx (char *addrs)
+getadrx(char *addrs)
{
register char *bp;
register struct adrx *adrxp = &adrxs2;
if (pers)
- free (pers);
+ free(pers);
if (mbox)
- free (mbox);
+ free(mbox);
if (host)
- free (host);
+ free(host);
if (path)
- free (path);
+ free(path);
if (grp)
- free (grp);
+ free(grp);
if (note)
- free (note);
+ free(note);
pers = mbox = host = path = grp = note = NULL;
err[0] = 0;
if (dp == NULL) {
- dp = cp = getcpy (addrs ? addrs : "");
+ dp = cp = getcpy(addrs ? addrs : "");
glevel = 0;
} else if (cp == NULL) {
- free (dp);
+ free(dp);
dp = NULL;
return NULL;
}
- switch (parse_address ()) {
+ switch (parse_address()) {
case DONE:
- free (dp);
+ free(dp);
dp = cp = NULL;
return NULL;
default: /* catch trailing comments */
bp = cp;
- my_lex (adr);
+ my_lex(adr);
cp = bp;
break;
}
break;
default:
- my_lex (adr);
+ my_lex(adr);
continue;
}
break;
}
- while (isspace (*ap))
+ while (isspace(*ap))
ap++;
if (cp)
- sprintf (adr, "%.*s", (int)(cp - ap), ap);
+ sprintf(adr, "%.*s", (int)(cp - ap), ap);
else
- strcpy (adr, ap);
- bp = adr + strlen (adr) - 1;
+ strcpy(adr, ap);
+ bp = adr + strlen(adr) - 1;
if (*bp == ',' || *bp == ';' || *bp == '\n')
*bp = 0;
static int
-parse_address (void)
+parse_address(void)
{
char buffer[BUFSIZ];
again: ;
ap = cp;
- switch (my_lex (buffer)) {
+ switch (my_lex(buffer)) {
case LX_ATOM:
case LX_QSTR:
- pers = getcpy (buffer);
+ pers = getcpy(buffer);
break;
case LX_SEMI:
if (glevel-- <= 0) {
- strcpy (err, "extraneous semi-colon");
+ strcpy(err, "extraneous semi-colon");
return NOTOK;
}
case LX_COMA:
if (note) {
- free (note);
+ free(note);
note = NULL;
}
goto again;
case LX_AT: /* sigh (3) */
cp = ap;
- if (route_addr (buffer) == NOTOK)
+ if (route_addr(buffer) == NOTOK)
return NOTOK;
return OK; /* why be choosy? */
default:
- sprintf (err, "illegal address construct (%s)", buffer);
+ sprintf(err, "illegal address construct (%s)", buffer);
return NOTOK;
}
- switch (my_lex (buffer)) {
+ switch (my_lex(buffer)) {
case LX_ATOM:
case LX_QSTR:
- pers = add (buffer, add (" ", pers));
+ pers = add(buffer, add(" ", pers));
more_phrase: ; /* sigh (1) */
- if (phrase (buffer) == NOTOK)
+ if (phrase(buffer) == NOTOK)
return NOTOK;
switch (last_lex) {
case LX_LBRK:
get_addr: ;
- if (route_addr (buffer) == NOTOK)
+ if (route_addr(buffer) == NOTOK)
return NOTOK;
if (last_lex == LX_RBRK)
return OK;
- sprintf (err, "missing right-bracket (%s)", buffer);
+ sprintf(err, "missing right-bracket (%s)", buffer);
return NOTOK;
case LX_COLN:
get_group: ;
if (glevel++ > 0) {
- sprintf (err, "nested groups not allowed (%s)", pers);
+ sprintf(err, "nested groups not allowed (%s)", pers);
return NOTOK;
}
- grp = add (": ", pers);
+ grp = add(": ", pers);
pers = NULL;
{
char *pp = cp;
for (;;)
- switch (my_lex (buffer)) {
+ switch (my_lex(buffer)) {
case LX_SEMI:
case LX_END: /* tsk, tsk */
glevel--;
default:
cp = pp;
- return parse_address ();
+ return parse_address();
}
}
case LX_DOT: /* sigh (1) */
- pers = add (".", pers);
+ pers = add(".", pers);
goto more_phrase;
default:
- sprintf (err, "no mailbox in address, only a phrase (%s%s)", pers, buffer);
+ sprintf(err, "no mailbox in address, only a phrase (%s%s)", pers, buffer);
return NOTOK;
}
goto get_group;
case LX_DOT:
- mbox = add (buffer, pers);
+ mbox = add(buffer, pers);
pers = NULL;
- if (route_addr (buffer) == NOTOK)
+ if (route_addr(buffer) == NOTOK)
return NOTOK;
goto check_end;
ingrp = glevel;
mbox = pers;
pers = NULL;
- if (domain (buffer) == NOTOK)
+ if (domain(buffer) == NOTOK)
return NOTOK;
check_end: ;
switch (last_lex) {
case LX_SEMI:
if (glevel-- <= 0) {
- strcpy (err, "extraneous semi-colon");
+ strcpy(err, "extraneous semi-colon");
return NOTOK;
}
case LX_COMA:
return OK;
default:
- sprintf (err, "junk after local@domain (%s)", buffer);
+ sprintf(err, "junk after local@domain (%s)", buffer);
return NOTOK;
}
case LX_END:
ingrp = glevel;
if (last_lex == LX_SEMI && glevel-- <= 0) {
- strcpy (err, "extraneous semi-colon");
+ strcpy(err, "extraneous semi-colon");
return NOTOK;
}
mbox = pers;
return OK;
default:
- sprintf (err, "missing mailbox (%s)", buffer);
+ sprintf(err, "missing mailbox (%s)", buffer);
return NOTOK;
}
}
static int
-phrase (char *buffer)
+phrase(char *buffer)
{
for (;;)
- switch (my_lex (buffer)) {
+ switch (my_lex(buffer)) {
case LX_ATOM:
case LX_QSTR:
- pers = add (buffer, add (" ", pers));
+ pers = add(buffer, add(" ", pers));
continue;
default:
static int
-route_addr (char *buffer)
+route_addr(char *buffer)
{
register char *pp = cp;
- if (my_lex (buffer) == LX_AT) {
- if (route (buffer) == NOTOK)
+ if (my_lex(buffer) == LX_AT) {
+ if (route(buffer) == NOTOK)
return NOTOK;
}
else
cp = pp;
- if (local_part (buffer) == NOTOK)
+ if (local_part(buffer) == NOTOK)
return NOTOK;
switch (last_lex) {
case LX_AT:
- return domain (buffer);
+ return domain(buffer);
case LX_SEMI: /* if in group */
case LX_RBRK: /* no host */
return OK;
default:
- sprintf (err, "no at-sign after local-part (%s)", buffer);
+ sprintf(err, "no at-sign after local-part (%s)", buffer);
return NOTOK;
}
}
static int
-local_part (char *buffer)
+local_part(char *buffer)
{
ingrp = glevel;
for (;;) {
- switch (my_lex (buffer)) {
+ switch (my_lex(buffer)) {
case LX_ATOM:
case LX_QSTR:
- mbox = add (buffer, mbox);
+ mbox = add(buffer, mbox);
break;
default:
- sprintf (err, "no mailbox in local-part (%s)",
+ sprintf(err, "no mailbox in local-part (%s)",
buffer);
return NOTOK;
}
- switch (my_lex (buffer)) {
+ switch (my_lex(buffer)) {
case LX_DOT:
- mbox = add (buffer, mbox);
+ mbox = add(buffer, mbox);
continue;
default:
static int
-domain (char *buffer)
+domain(char *buffer)
{
for (;;) {
- switch (my_lex (buffer)) {
+ switch (my_lex(buffer)) {
case LX_ATOM:
case LX_DLIT:
- host = add (buffer, host);
+ host = add(buffer, host);
break;
default:
- sprintf (err, "no sub-domain in domain-part of address (%s)", buffer);
+ sprintf(err, "no sub-domain in domain-part of address (%s)", buffer);
return NOTOK;
}
- switch (my_lex (buffer)) {
+ switch (my_lex(buffer)) {
case LX_DOT:
- host = add (buffer, host);
+ host = add(buffer, host);
continue;
case LX_AT: /* sigh (0) */
- mbox = add (host, add ("%", mbox));
- free (host);
+ mbox = add(host, add("%", mbox));
+ free(host);
host = NULL;
continue;
static int
-route (char *buffer)
+route(char *buffer)
{
- path = getcpy ("@");
+ path = getcpy("@");
for (;;) {
- switch (my_lex (buffer)) {
+ switch (my_lex(buffer)) {
case LX_ATOM:
case LX_DLIT:
- path = add (buffer, path);
+ path = add(buffer, path);
break;
default:
- sprintf (err, "no sub-domain in domain-part of address (%s)", buffer);
+ sprintf(err, "no sub-domain in domain-part of address (%s)", buffer);
return NOTOK;
}
- switch (my_lex (buffer)) {
+ switch (my_lex(buffer)) {
case LX_COMA:
- path = add (buffer, path);
+ path = add(buffer, path);
for (;;) {
- switch (my_lex (buffer)) {
+ switch (my_lex(buffer)) {
case LX_COMA:
continue;
case LX_AT:
- path = add (buffer, path);
+ path = add(buffer, path);
break;
default:
- sprintf (err, "no at-sign found for next domain in route (%s)",
+ sprintf(err, "no at-sign found for next domain in route (%s)",
buffer);
}
break;
case LX_AT: /* XXX */
case LX_DOT:
- path = add (buffer, path);
+ path = add(buffer, path);
continue;
case LX_COLN:
- path = add (buffer, path);
+ path = add(buffer, path);
return OK;
default:
- sprintf (err, "no colon found to terminate route (%s)", buffer);
+ sprintf(err, "no colon found to terminate route (%s)", buffer);
return NOTOK;
}
}
static int
-my_lex (char *buffer)
+my_lex(char *buffer)
{
/* buffer should be at least BUFSIZ bytes long */
int i, gotat = 0;
if (!cp)
return (last_lex = LX_END);
- gotat = isat (cp);
+ gotat = isat(cp);
c = *cp++;
- while (isspace (c))
+ while (isspace(c))
c = *cp++;
if (c == 0) {
cp = NULL;
ADDCHR(c);
if (--i < 0) {
*bp = 0;
- note = note ? add (buffer, add (" ", note))
- : getcpy (buffer);
- return my_lex (buffer);
+ note = note ? add(buffer, add(" ", note)) : getcpy(buffer);
+ return my_lex(buffer);
}
}
}
if (c == special[i].lx_chr)
return (last_lex = special[i].lx_val);
- if (iscntrl (c))
+ if (iscntrl(c))
return (last_lex = LX_ERR);
for (;;) {
for (i = 0; special[i].lx_chr != 0; i++)
if (c == special[i].lx_chr)
goto got_atom;
- if (iscntrl (c) || isspace (c))
+ if (iscntrl(c) || isspace(c))
break;
ADDCHR(c);
}
char *
-legal_person (char *p)
+legal_person(char *p)
{
int i;
register char *cp;
for (cp = p; *cp; cp++)
for (i = 0; special[i].lx_chr; i++)
if (*cp == special[i].lx_chr) {
- sprintf (buffer, "\"%s\"", p);
+ sprintf(buffer, "\"%s\"", p);
return buffer;
}