#include <stdlib.h>
+#include <lib-lib/mem.h>
+#include <lib-lib/list.h>
+
/* Content-Type */
enum {
TYPEOTHER,
struct address_t *next;
} address_t;
-void rfc822_free_address(address_t **);
+DO_INIT(address_t, address);
+void address_wipe(address_t *);
+
+DO_NEW(address_t, address);
+DO_DELETE(address_t, address);
+DO_SLIST(address_t, address);
+
+address_t *address_dup(address_t *addr);
+address_t *address_list_dup(address_t *addr);
+
void rfc822_qualify(address_t *, const char *);
+
address_t *rfc822_parse_adrlist(address_t *, const char *s);
-address_t *rfc822_cpy_adr(address_t * addr);
-address_t *rfc822_cpy_adr_real(address_t * addr);
-address_t *rfc822_append(address_t ** a, address_t * b);
void rfc822_write_address(char *, size_t, address_t *, int);
void rfc822_write_address_single(char *, size_t, address_t *, int);
void rfc822_cat(char *, size_t, const char *, const char *);
extern const char RFC822Specials[];
#define rfc822_error(x) RFC822Errors[x]
-#define rfc822_new_address() calloc(1,sizeof(address_t))
/****************************************************************************/
/* RFC 2231 */