#include <ctype.h>
#include <stdlib.h>
-#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 "mutt_idna.h"
#include "lib/mem.h"
while (*p) {
t = *p;
*p = (*p)->next;
-#ifdef EXACT_ADDRESS
- FREE (&t->val);
-#endif
FREE (&t->personal);
FREE (&t->mailbox);
FREE (&t);
last->personal = safe_strdup (comment);
}
-#ifdef EXACT_ADDRESS
- if (last && !last->val)
- last->val = mutt_substrdup (begin, s);
-#endif
commentlen = 0;
phraselen = 0;
s++;
top = cur;
last = cur;
-#ifdef EXACT_ADDRESS
- last->val = mutt_substrdup (begin, s);
-#endif
-
phraselen = 0;
commentlen = 0;
s++;
terminate_buffer (comment, commentlen);
last->personal = safe_strdup (comment);
}
-#ifdef EXACT_ADDRESS
- if (last && !last->val)
- last->val = mutt_substrdup (begin, s);
-#endif
/* add group terminator */
cur = rfc822_new_address ();
terminate_buffer (comment, commentlen);
last->personal = safe_strdup (comment);
}
-#ifdef EXACT_ADDRESS
- if (last)
- last->val = mutt_substrdup (begin, s);
-#endif
return top;
}
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
-
if (addr->personal) {
if (strpbrk (addr->personal, RFC822Specials)) {
if (!buflen)
{
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->group = addr->group;
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 <me@mutt.org>, 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