#include "mutt_idna.h"
+void address_wipe(address_t *addr)
+{
+ address_delete(&addr->next);
+ p_delete(&addr->personal);
+ p_delete(&addr->mailbox);
+}
+
#define terminate_string(a, b, c) do { if ((b) < (c)) a[(b)] = 0; else \
a[(c)] = 0; } while (0)
*w = 0;
}
-void rfc822_free_address (address_t ** p)
-{
- address_t *t;
-
- while (*p) {
- t = *p;
- *p = (*p)->next;
- p_delete(&t->personal);
- p_delete(&t->mailbox);
- p_delete(&t);
- }
-}
-
static const char *parse_comment (const char *s,
char *comment, size_t * commentlen,
size_t commentmax)
add_addrspec (address_t ** top, address_t ** last, const char *phrase,
char *comment, size_t * commentlen, size_t commentmax)
{
- address_t *cur = rfc822_new_address ();
+ address_t *cur = address_new ();
if (parse_addr_spec (phrase, comment, commentlen, commentmax, cur) == NULL) {
- rfc822_free_address (&cur);
+ address_delete (&cur);
return;
}
if ((ps =
next_token (s, comment, &commentlen,
sizeof (comment) - 1)) == NULL) {
- rfc822_free_address (&top);
+ address_delete (&top);
return NULL;
}
s = ps;
}
else if (*s == ':') {
- cur = rfc822_new_address ();
+ cur = address_new ();
terminate_buffer (phrase, phraselen);
cur->mailbox = m_strdup(phrase);
cur->group = 1;
}
/* add group terminator */
- cur = rfc822_new_address ();
+ cur = address_new ();
if (last) {
last->next = cur;
last = cur;
}
else if (*s == '<') {
terminate_buffer (phrase, phraselen);
- cur = rfc822_new_address ();
+ cur = address_new ();
if (phraselen) {
if (cur->personal)
p_delete(&cur->personal);
if ((ps =
parse_route_addr (s + 1, comment, &commentlen,
sizeof (comment) - 1, cur)) == NULL) {
- rfc822_free_address (&top);
- rfc822_free_address (&cur);
+ address_delete (&top);
+ address_delete (&cur);
return NULL;
}
phrase[phraselen++] = ' ';
if ((ps =
next_token (s, phrase, &phraselen, sizeof (phrase) - 1)) == NULL) {
- rfc822_free_address (&top);
+ address_delete (&top);
return NULL;
}
s = ps;
/* this should be rfc822_cpy_adr */
address_t *rfc822_cpy_adr_real (address_t * addr)
{
- address_t *p = rfc822_new_address ();
+ address_t *p = address_new ();
p->personal = m_strdup(addr->personal);
p->mailbox = m_strdup(addr->mailbox);