X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=rfc822.c;h=5dc33e2bb1b358622c2d15f61b1e1d5a3aca2ce2;hp=2732f52b0f463d00ab1867365d944d7f9d8aa23f;hb=c6b020e0fa5c38e4fd8a6ffb75e00338c0535b11;hpb=6833ce8bdca2d64e14485118f2a4417b7e1cb1b1 diff --git a/rfc822.c b/rfc822.c index 2732f52..5dc33e2 100644 --- a/rfc822.c +++ b/rfc822.c @@ -1,40 +1,28 @@ /* + * Copyright notice from original mutt: * Copyright (C) 1996-2000 Michael R. Elkins - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. - */ + * + * This file is part of mutt-ng, see http://www.muttng.org/. + * It's licensed under the GNU General Public License, + * please see the file GPL in the top level source directory. + */ + +#if HAVE_CONFIG_H +# include "config.h" +#endif #include #include #include -#ifndef TESTING #include "mutt.h" -#else -#define safe_strdup strdup -#define safe_malloc malloc -#define SKIPWS(x) while(isspace(*x))x++ -#define FREE(x) safe_free(x) -#define ISSPACE isspace -#define strfcpy(a,b,c) {if (c) {strncpy(a,b,c);a[c-1]=0;}} -#define STRING 128 -#include "rfc822.h" -#endif - +#include "ascii.h" #include "mutt_idna.h" +#include "lib/mem.h" +#include "lib/intl.h" +#include "lib/str.h" + #define terminate_string(a, b, c) do { if ((b) < (c)) a[(b)] = 0; else \ a[(c)] = 0; } while (0) @@ -42,6 +30,7 @@ const char RFC822Specials[] = "@.,:;<>[]\\\"()"; + #define is_special(x) strchr(RFC822Specials,x) int RFC822Error = 0; @@ -60,97 +49,82 @@ void rfc822_dequote_comment (char *s) { char *w = s; - for (; *s; s++) - { - if (*s == '\\') - { + for (; *s; s++) { + if (*s == '\\') { if (!*++s) - break; /* error? */ + break; /* error? */ *w++ = *s; } - else if (*s != '\"') - { + else if (*s != '\"') { if (w != s) - *w = *s; + *w = *s; w++; } } *w = 0; } -void rfc822_free_address (ADDRESS **p) +void rfc822_free_address (ADDRESS ** p) { ADDRESS *t; - while (*p) - { + while (*p) { t = *p; *p = (*p)->next; -#ifdef EXACT_ADDRESS - FREE (&t->val); -#endif - FREE (&t->personal); - FREE (&t->mailbox); - FREE (&t); + mem_free (&t->personal); + mem_free (&t->mailbox); + mem_free (&t); } } -static const char * -parse_comment (const char *s, - char *comment, size_t *commentlen, size_t commentmax) +static const char *parse_comment (const char *s, + char *comment, size_t * commentlen, + size_t commentmax) { int level = 1; - - while (*s && level) - { + + while (*s && level) { if (*s == '(') level++; - else if (*s == ')') - { - if (--level == 0) - { - s++; - break; + else if (*s == ')') { + if (--level == 0) { + s++; + break; } } - else if (*s == '\\') - { + else if (*s == '\\') { if (!*++s) - break; + break; } if (*commentlen < commentmax) comment[(*commentlen)++] = *s; s++; } - if (level) - { + if (level) { RFC822Error = ERR_MISMATCH_PAREN; return NULL; } return s; } -static const char * -parse_quote (const char *s, char *token, size_t *tokenlen, size_t tokenmax) +static const char *parse_quote (const char *s, char *token, size_t * tokenlen, + size_t tokenmax) { if (*tokenlen < tokenmax) token[(*tokenlen)++] = '"'; - while (*s) - { + while (*s) { if (*tokenlen < tokenmax) token[*tokenlen] = *s; - if (*s == '"') - { + if (*s == '"') { (*tokenlen)++; return (s + 1); } - if (*s == '\\') - { + if (*s == '\\') { if (!*++s) - break; + break; if (*tokenlen < tokenmax) - token[*tokenlen] = *s; + token[*tokenlen] = *s; } (*tokenlen)++; s++; @@ -159,21 +133,19 @@ parse_quote (const char *s, char *token, size_t *tokenlen, size_t tokenmax) return NULL; } -static const char * -next_token (const char *s, char *token, size_t *tokenlen, size_t tokenmax) +static const char *next_token (const char *s, char *token, size_t * tokenlen, + size_t tokenmax) { if (*s == '(') return (parse_comment (s + 1, token, tokenlen, tokenmax)); if (*s == '"') return (parse_quote (s + 1, token, tokenlen, tokenmax)); - if (is_special (*s)) - { + if (is_special (*s)) { if (*tokenlen < tokenmax) token[(*tokenlen)++] = *s; return (s + 1); } - while (*s) - { + while (*s) { if (ISSPACE ((unsigned char) *s) || is_special (*s)) break; if (*tokenlen < tokenmax) @@ -183,23 +155,22 @@ next_token (const char *s, char *token, size_t *tokenlen, size_t tokenmax) return s; } -static const char * -parse_mailboxdomain (const char *s, const char *nonspecial, - char *mailbox, size_t *mailboxlen, size_t mailboxmax, - char *comment, size_t *commentlen, size_t commentmax) +static const char *parse_mailboxdomain (const char *s, const char *nonspecial, + char *mailbox, size_t * mailboxlen, + size_t mailboxmax, char *comment, + size_t * commentlen, + size_t commentmax) { const char *ps; - while (*s) - { + while (*s) { SKIPWS (s); if (strchr (nonspecial, *s) == NULL && is_special (*s)) return s; - if (*s == '(') - { + if (*s == '(') { if (*commentlen && *commentlen < commentmax) - comment[(*commentlen)++] = ' '; + comment[(*commentlen)++] = ' '; ps = next_token (s, comment, commentlen, commentmax); } else @@ -212,45 +183,42 @@ parse_mailboxdomain (const char *s, const char *nonspecial, return s; } -static const char * -parse_address (const char *s, - char *token, size_t *tokenlen, size_t tokenmax, - char *comment, size_t *commentlen, size_t commentmax, - ADDRESS *addr) +static const char *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); + token, tokenlen, tokenmax, + comment, commentlen, commentmax); if (!s) return NULL; - if (*s == '@') - { + if (*s == '@') { if (*tokenlen < tokenmax) token[(*tokenlen)++] = '@'; s = parse_mailboxdomain (s + 1, ".([]\\", - token, tokenlen, tokenmax, - comment, commentlen, commentmax); + token, tokenlen, tokenmax, + comment, commentlen, commentmax); if (!s) return NULL; } terminate_string (token, *tokenlen, tokenmax); - addr->mailbox = safe_strdup (token); + addr->mailbox = str_dup (token); - if (*commentlen && !addr->personal) - { + if (*commentlen && !addr->personal) { terminate_string (comment, *commentlen, commentmax); - addr->personal = safe_strdup (comment); + addr->personal = str_dup (comment); } return s; } -static const char * -parse_route_addr (const char *s, - char *comment, size_t *commentlen, size_t commentmax, - ADDRESS *addr) +static const char *parse_route_addr (const char *s, + char *comment, size_t * commentlen, + size_t commentmax, ADDRESS * addr) { char token[STRING]; size_t tokenlen = 0; @@ -258,20 +226,17 @@ parse_route_addr (const char *s, SKIPWS (s); /* find the end of the route */ - if (*s == '@') - { - while (s && *s == '@') - { + if (*s == '@') { + while (s && *s == '@') { if (tokenlen < sizeof (token) - 1) - token[tokenlen++] = '@'; + token[tokenlen++] = '@'; s = parse_mailboxdomain (s + 1, ",.\\[](", token, - &tokenlen, sizeof (token) - 1, - comment, commentlen, commentmax); + &tokenlen, sizeof (token) - 1, + comment, commentlen, commentmax); } - if (!s || *s != ':') - { + if (!s || *s != ':') { RFC822Error = ERR_BAD_ROUTE; - return NULL; /* invalid route */ + return NULL; /* invalid route */ } if (tokenlen < sizeof (token) - 1) @@ -279,33 +244,34 @@ parse_route_addr (const char *s, s++; } - if ((s = parse_address (s, token, &tokenlen, sizeof (token) - 1, comment, commentlen, commentmax, addr)) == NULL) + if ((s = + parse_address (s, token, &tokenlen, sizeof (token) - 1, comment, + commentlen, commentmax, addr)) == NULL) return NULL; - if (*s != '>') - { + if (*s != '>') { RFC822Error = ERR_BAD_ROUTE_ADDR; return NULL; } if (!addr->mailbox) - addr->mailbox = safe_strdup ("@"); + addr->mailbox = str_dup ("@"); s++; return s; } -static const char * -parse_addr_spec (const char *s, - char *comment, size_t *commentlen, size_t commentmax, - ADDRESS *addr) +static const char *parse_addr_spec (const char *s, + char *comment, size_t * commentlen, + size_t commentmax, ADDRESS * addr) { char token[STRING]; size_t tokenlen = 0; - s = parse_address (s, token, &tokenlen, sizeof (token) - 1, comment, commentlen, commentmax, addr); - if (s && *s && *s != ',' && *s != ';') - { + s = + parse_address (s, token, &tokenlen, sizeof (token) - 1, comment, + commentlen, commentmax, addr); + if (s && *s && *s != ',' && *s != ';') { RFC822Error = ERR_BAD_ADDR_SPEC; return NULL; } @@ -313,13 +279,12 @@ parse_addr_spec (const char *s, } static void -add_addrspec (ADDRESS **top, ADDRESS **last, const char *phrase, - char *comment, size_t *commentlen, size_t commentmax) +add_addrspec (ADDRESS ** top, ADDRESS ** last, const char *phrase, + char *comment, size_t * commentlen, size_t commentmax) { ADDRESS *cur = rfc822_new_address (); - - if (parse_addr_spec (phrase, comment, commentlen, commentmax, cur) == NULL) - { + + if (parse_addr_spec (phrase, comment, commentlen, commentmax, cur) == NULL) { rfc822_free_address (&cur); return; } @@ -331,14 +296,14 @@ add_addrspec (ADDRESS **top, ADDRESS **last, const char *phrase, *last = cur; } -ADDRESS *rfc822_parse_adrlist (ADDRESS *top, const char *s) +ADDRESS *rfc822_parse_adrlist (ADDRESS * top, const char *s) { int ws_pending; const char *begin, *ps; char comment[STRING], phrase[STRING]; size_t phraselen = 0, commentlen = 0; ADDRESS *cur, *last = NULL; - + RFC822Error = 0; last = top; @@ -346,91 +311,72 @@ ADDRESS *rfc822_parse_adrlist (ADDRESS *top, const char *s) last = last->next; ws_pending = isspace ((unsigned char) *s); - + SKIPWS (s); begin = s; - while (*s) - { - if (*s == ',') - { - if (phraselen) - { - terminate_buffer (phrase, phraselen); - add_addrspec (&top, &last, phrase, comment, &commentlen, sizeof (comment) - 1); + while (*s) { + if (*s == ',') { + if (phraselen) { + terminate_buffer (phrase, phraselen); + add_addrspec (&top, &last, phrase, comment, &commentlen, + sizeof (comment) - 1); } - else if (commentlen && last && !last->personal) - { - terminate_buffer (comment, commentlen); - last->personal = safe_strdup (comment); + else if (commentlen && last && !last->personal) { + terminate_buffer (comment, commentlen); + last->personal = str_dup (comment); } -#ifdef EXACT_ADDRESS - if (last && !last->val) - last->val = mutt_substrdup (begin, s); -#endif commentlen = 0; phraselen = 0; s++; begin = s; SKIPWS (begin); } - else if (*s == '(') - { + else if (*s == '(') { if (commentlen && commentlen < sizeof (comment) - 1) - comment[commentlen++] = ' '; - if ((ps = next_token (s, comment, &commentlen, sizeof (comment) - 1)) == NULL) - { - rfc822_free_address (&top); - return NULL; + comment[commentlen++] = ' '; + if ((ps = + next_token (s, comment, &commentlen, + sizeof (comment) - 1)) == NULL) { + rfc822_free_address (&top); + return NULL; } s = ps; } - else if (*s == ':') - { + else if (*s == ':') { cur = rfc822_new_address (); terminate_buffer (phrase, phraselen); - cur->mailbox = safe_strdup (phrase); + cur->mailbox = str_dup (phrase); cur->group = 1; if (last) - last->next = cur; + last->next = cur; else - top = cur; + top = cur; last = cur; -#ifdef EXACT_ADDRESS - last->val = mutt_substrdup (begin, s); -#endif - phraselen = 0; commentlen = 0; s++; begin = s; SKIPWS (begin); } - else if (*s == ';') - { - if (phraselen) - { - terminate_buffer (phrase, phraselen); - add_addrspec (&top, &last, phrase, comment, &commentlen, sizeof (comment) - 1); + else if (*s == ';') { + if (phraselen) { + terminate_buffer (phrase, phraselen); + add_addrspec (&top, &last, phrase, comment, &commentlen, + sizeof (comment) - 1); } - else if (commentlen && last && !last->personal) - { - terminate_buffer (comment, commentlen); - last->personal = safe_strdup (comment); + else if (commentlen && last && !last->personal) { + terminate_buffer (comment, commentlen); + last->personal = str_dup (comment); } -#ifdef EXACT_ADDRESS - if (last && !last->val) - last->val = mutt_substrdup (begin, s); -#endif /* add group terminator */ cur = rfc822_new_address (); - if (last) - { - last->next = cur; - last = cur; + if (last) { + last->next = cur; + last = cur; } phraselen = 0; @@ -439,79 +385,71 @@ ADDRESS *rfc822_parse_adrlist (ADDRESS *top, const char *s) begin = s; SKIPWS (begin); } - else if (*s == '<') - { + else if (*s == '<') { terminate_buffer (phrase, phraselen); cur = rfc822_new_address (); - if (phraselen) - { - if (cur->personal) - FREE (&cur->personal); - /* if we get something like "Michael R. Elkins" remove the quotes */ - rfc822_dequote_comment (phrase); - cur->personal = safe_strdup (phrase); + if (phraselen) { + if (cur->personal) + mem_free (&cur->personal); + /* if we get something like "Michael R. Elkins" remove the quotes */ + rfc822_dequote_comment (phrase); + cur->personal = str_dup (phrase); } - if ((ps = parse_route_addr (s + 1, comment, &commentlen, sizeof (comment) - 1, cur)) == NULL) - { - rfc822_free_address (&top); - rfc822_free_address (&cur); - return NULL; + if ((ps = + parse_route_addr (s + 1, comment, &commentlen, + sizeof (comment) - 1, cur)) == NULL) { + rfc822_free_address (&top); + rfc822_free_address (&cur); + return NULL; } if (last) - last->next = cur; + last->next = cur; else - top = cur; + top = cur; last = cur; phraselen = 0; commentlen = 0; s = ps; } - else - { + else { if (phraselen && phraselen < sizeof (phrase) - 1 && ws_pending) - phrase[phraselen++] = ' '; - if ((ps = next_token (s, phrase, &phraselen, sizeof (phrase) - 1)) == NULL) - { - rfc822_free_address (&top); - return NULL; + phrase[phraselen++] = ' '; + if ((ps = + next_token (s, phrase, &phraselen, sizeof (phrase) - 1)) == NULL) { + rfc822_free_address (&top); + return NULL; } s = ps; } ws_pending = isspace ((unsigned char) *s); SKIPWS (s); } - - if (phraselen) - { + + if (phraselen) { terminate_buffer (phrase, phraselen); terminate_buffer (comment, commentlen); - add_addrspec (&top, &last, phrase, comment, &commentlen, sizeof (comment) - 1); + add_addrspec (&top, &last, phrase, comment, &commentlen, + sizeof (comment) - 1); } - else if (commentlen && last && !last->personal) - { + else if (commentlen && last && !last->personal) { terminate_buffer (comment, commentlen); - last->personal = safe_strdup (comment); + last->personal = str_dup (comment); } -#ifdef EXACT_ADDRESS - if (last) - last->val = mutt_substrdup (begin, s); -#endif return top; } -void rfc822_qualify (ADDRESS *addr, const char *host) +void rfc822_qualify (ADDRESS * addr, const char *host) { char *p; for (; addr; addr = addr->next) - if (!addr->group && addr->mailbox && strchr (addr->mailbox, '@') == NULL) - { - p = safe_malloc (mutt_strlen (addr->mailbox) + mutt_strlen (host) + 2); - sprintf (p, "%s@%s", addr->mailbox, host); /* __SPRINTF_CHECKED__ */ - FREE (&addr->mailbox); + if (!addr->group && addr->mailbox && strchr (addr->mailbox, '@') == NULL) { + p = mem_malloc (str_len (addr->mailbox) + str_len (host) + 2); + sprintf (p, "%s@%s", addr->mailbox, host); /* __SPRINTF_CHECKED__ */ + mem_free (&addr->mailbox); addr->mailbox = p; } } @@ -519,18 +457,15 @@ void rfc822_qualify (ADDRESS *addr, const char *host) void rfc822_cat (char *buf, size_t buflen, const char *value, const char *specials) { - if (strpbrk (value, specials)) - { + if (strpbrk (value, specials)) { char tmp[256], *pc = tmp; size_t tmplen = sizeof (tmp) - 3; *pc++ = '"'; - for (; *value && tmplen > 1; value++) - { - if (*value == '\\' || *value == '"') - { - *pc++ = '\\'; - tmplen--; + for (; *value && tmplen > 1; value++) { + if (*value == '\\' || *value == '"') { + *pc++ = '\\'; + tmplen--; } *pc++ = *value; tmplen--; @@ -543,72 +478,46 @@ rfc822_cat (char *buf, size_t buflen, const char *value, const char *specials) strfcpy (buf, value, buflen); } -void rfc822_write_address_single (char *buf, size_t buflen, ADDRESS *addr, - int display) +void rfc822_write_address_single (char *buf, size_t buflen, ADDRESS * addr, + int display) { size_t len; char *pbuf = buf; char *pc; - + if (!addr) return; - buflen--; /* save room for the terminal nul */ - -#ifdef EXACT_ADDRESS - if (addr->val) - { - if (!buflen) - goto done; - strfcpy (pbuf, addr->val, buflen); - len = mutt_strlen (pbuf); - pbuf += len; - buflen -= len; - if (addr->group) - { - if (!buflen) - goto done; - *pbuf++ = ':'; - buflen--; - *pbuf = 0; - } - return; - } -#endif + buflen--; /* save room for the terminal nul */ - if (addr->personal) - { - if (strpbrk (addr->personal, RFC822Specials)) - { + if (addr->personal) { + if (strpbrk (addr->personal, RFC822Specials)) { if (!buflen) - goto done; + goto done; *pbuf++ = '"'; buflen--; - for (pc = addr->personal; *pc && buflen > 0; pc++) - { - if (*pc == '"' || *pc == '\\') - { - if (!buflen) - goto done; - *pbuf++ = '\\'; - buflen--; - } - if (!buflen) - goto done; - *pbuf++ = *pc; - buflen--; + for (pc = addr->personal; *pc && buflen > 0; pc++) { + if (*pc == '"' || *pc == '\\') { + if (!buflen) + goto done; + *pbuf++ = '\\'; + buflen--; + } + if (!buflen) + goto done; + *pbuf++ = *pc; + buflen--; } if (!buflen) - goto done; + goto done; *pbuf++ = '"'; buflen--; } - else - { + else { if (!buflen) - goto done; + goto done; strfcpy (pbuf, addr->personal, buflen); - len = mutt_strlen (pbuf); + len = str_len (pbuf); pbuf += len; buflen -= len; } @@ -619,58 +528,50 @@ void rfc822_write_address_single (char *buf, size_t buflen, ADDRESS *addr, buflen--; } - if (addr->personal || (addr->mailbox && *addr->mailbox == '@')) - { + if (addr->personal || (addr->mailbox && *addr->mailbox == '@')) { if (!buflen) goto done; *pbuf++ = '<'; buflen--; } - if (addr->mailbox) - { + if (addr->mailbox) { if (!buflen) goto done; - if (ascii_strcmp (addr->mailbox, "@") && !display) - { + if (ascii_strcmp (addr->mailbox, "@") && !display) { strfcpy (pbuf, addr->mailbox, buflen); - len = mutt_strlen (pbuf); + len = str_len (pbuf); } - else if (ascii_strcmp (addr->mailbox, "@") && display) - { + else if (ascii_strcmp (addr->mailbox, "@") && display) { strfcpy (pbuf, mutt_addr_for_display (addr), buflen); - len = mutt_strlen (pbuf); + len = str_len (pbuf); } - else - { + else { *pbuf = '\0'; len = 0; } pbuf += len; buflen -= len; - if (addr->personal || (addr->mailbox && *addr->mailbox == '@')) - { + if (addr->personal || (addr->mailbox && *addr->mailbox == '@')) { if (!buflen) - goto done; + goto done; *pbuf++ = '>'; buflen--; } - if (addr->group) - { + if (addr->group) { if (!buflen) - goto done; + goto done; *pbuf++ = ':'; buflen--; if (!buflen) - goto done; + goto done; *pbuf++ = ' '; buflen--; } } - else - { + else { if (!buflen) goto done; *pbuf++ = ';'; @@ -683,17 +584,17 @@ done: } /* note: it is assumed that `buf' is nul terminated! */ -void rfc822_write_address (char *buf, size_t buflen, ADDRESS *addr, int display) +void rfc822_write_address (char *buf, size_t buflen, ADDRESS * addr, + int display) { char *pbuf = buf; - size_t len = mutt_strlen (buf); - - buflen--; /* save room for the terminal nul */ + size_t len = str_len (buf); - if (len > 0) - { + buflen--; /* save room for the terminal nul */ + + if (len > 0) { if (len > buflen) - return; /* safety check for bogus arguments */ + return; /* safety check for bogus arguments */ pbuf += len; buflen -= len; @@ -707,28 +608,26 @@ void rfc822_write_address (char *buf, size_t buflen, ADDRESS *addr, int display) buflen--; } - for (; addr && buflen > 0; addr = addr->next) - { + for (; addr && buflen > 0; addr = addr->next) { /* use buflen+1 here because we already saved space for the trailing nul char, and the subroutine can make use of it */ rfc822_write_address_single (pbuf, buflen + 1, addr, display); /* this should be safe since we always have at least 1 char passed into the above call, which means `pbuf' should always be nul terminated */ - len = mutt_strlen (pbuf); + len = str_len (pbuf); pbuf += len; buflen -= len; /* if there is another address, and its not a group mailbox name or group terminator, add a comma to separate the addresses */ - if (addr->next && addr->next->mailbox && !addr->group) - { + if (addr->next && addr->next->mailbox && !addr->group) { if (!buflen) - goto done; + goto done; *pbuf++ = ','; buflen--; if (!buflen) - goto done; + goto done; *pbuf++ = ' '; buflen--; } @@ -738,28 +637,23 @@ done: } /* this should be rfc822_cpy_adr */ -ADDRESS *rfc822_cpy_adr_real (ADDRESS *addr) +ADDRESS *rfc822_cpy_adr_real (ADDRESS * addr) { ADDRESS *p = rfc822_new_address (); -#ifdef EXACT_ADDRESS - p->val = safe_strdup (addr->val); -#endif - p->personal = safe_strdup (addr->personal); - p->mailbox = safe_strdup (addr->mailbox); + p->personal = str_dup (addr->personal); + p->mailbox = str_dup (addr->mailbox); p->group = addr->group; return p; } /* this should be rfc822_cpy_adrlist */ -ADDRESS *rfc822_cpy_adr (ADDRESS *addr) +ADDRESS *rfc822_cpy_adr (ADDRESS * addr) { ADDRESS *top = NULL, *last = NULL; - - for (; addr; addr = addr->next) - { - if (last) - { + + for (; addr; addr = addr->next) { + if (last) { last->next = rfc822_cpy_adr_real (addr); last = last->next; } @@ -770,7 +664,7 @@ ADDRESS *rfc822_cpy_adr (ADDRESS *addr) } /* append list 'b' to list 'a' and return the last element in the new list */ -ADDRESS *rfc822_append (ADDRESS **a, ADDRESS *b) +ADDRESS *rfc822_append (ADDRESS ** a, ADDRESS * b) { ADDRESS *tmp = *a; @@ -786,29 +680,3 @@ ADDRESS *rfc822_append (ADDRESS **a, ADDRESS *b) tmp = tmp->next; return tmp; } - -#ifdef TESTING -int safe_free (void **p) -{ - free(*p); /* __MEM_CHECKED__ */ - *p = 0; -} - -int main (int argc, char **argv) -{ - ADDRESS *list; - char buf[256]; -# if 0 - char *str = "michael, Michael Elkins , testing a really complex address: this example <@contains.a.source.route,@with.multiple.hosts:address@example.com>;, lothar@of.the.hillpeople (lothar)"; -# else - char *str = "a b c "; -# endif - - list = rfc822_parse_adrlist (NULL, str); - buf[0] = 0; - rfc822_write_address (buf, sizeof (buf), list); - rfc822_free_address (&list); - puts (buf); - exit (0); -} -#endif