use my usual API's for allocation/deallocation right now.
[apps/madmutt.git] / lib-mime / rfc822.c
index 0337478..674d681 100644 (file)
 
 #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)
@@ -79,19 +86,6 @@ void rfc822_dequote_comment (char *s)
   *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)
@@ -297,10 +291,10 @@ static void
 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;
   }
 
@@ -351,13 +345,13 @@ address_t *rfc822_parse_adrlist (address_t * top, const char *s)
       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;
@@ -385,7 +379,7 @@ address_t *rfc822_parse_adrlist (address_t * top, const char *s)
       }
 
       /* add group terminator */
-      cur = rfc822_new_address ();
+      cur = address_new ();
       if (last) {
         last->next = cur;
         last = cur;
@@ -398,7 +392,7 @@ address_t *rfc822_parse_adrlist (address_t * top, const char *s)
     }
     else if (*s == '<') {
       terminate_buffer (phrase, phraselen);
-      cur = rfc822_new_address ();
+      cur = address_new ();
       if (phraselen) {
         if (cur->personal)
           p_delete(&cur->personal);
@@ -409,8 +403,8 @@ address_t *rfc822_parse_adrlist (address_t * top, const char *s)
       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;
       }
 
@@ -429,7 +423,7 @@ address_t *rfc822_parse_adrlist (address_t * top, const char *s)
         phrase[phraselen++] = ' ';
       if ((ps =
            next_token (s, phrase, &phraselen, sizeof (phrase) - 1)) == NULL) {
-        rfc822_free_address (&top);
+        address_delete (&top);
         return NULL;
       }
       s = ps;
@@ -650,7 +644,7 @@ done:
 /* 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);