token[*tokenlen] = 0;
terminate_string (token, *tokenlen, tokenmax);
parse_address (const char *s,               char *token, size_t *tokenlen, size_t tokenmax,	       char *comment, size_t *commentlen, size_t commentmax,	       ADDRESS *addr){  s = parse_mailboxdomain (s, ".\"(\\",			   token, tokenlen, tokenmax,			   comment, commentlen, commentmax);  if (!s)    return NULL;  if (*s == '@')  {    if (*tokenlen < tokenmax)      token[(*tokenlen)++] = '@';    s = parse_mailboxdomain (s + 1, ".([]\\",			     token, tokenlen, tokenmax,			     comment, commentlen, commentmax);    if (!s)      return NULL;  }  token[*tokenlen] = 0;  addr->mailbox = safe_strdup (token);  if (*commentlen && !addr->personal)  {    comment[*commentlen] = 0;    addr->personal = safe_strdup (comment);  }  return s;}