2 ** Copyright 1998 - 2008 Double Precision, Inc.
3 ** See COPYING for distribution information.
7 ** $Id: rfc822_getaddr.c,v 1.8 2008/06/14 14:12:50 mrsam Exp $
12 static void cntlen(char c
, void *p
)
18 static void saveaddr(char c
, void *p
)
28 char *rfc822_getaddr(const struct rfc822a
*rfc
, int n
)
33 rfc822_praddr(rfc
, n
, &cntlen
, &addrbuflen
);
34 if (!(addrbuf
=malloc(addrbuflen
+1)))
38 rfc822_praddr(rfc
, n
, &saveaddr
, &ptr
);
39 addrbuf
[addrbuflen
]=0;
43 /* Get rid of surrounding quotes */
45 static void dropquotes(char *addrbuf
)
56 if (*p
== '"' && p
[1] == 0)
65 char *rfc822_getname(const struct rfc822a
*rfc
, int n
)
70 rfc822_prname(rfc
, n
, &cntlen
, &addrbuflen
);
71 if (!(addrbuf
=malloc(addrbuflen
+1)))
75 rfc822_prname(rfc
, n
, &saveaddr
, &ptr
);
76 addrbuf
[addrbuflen
]=0;
82 char *rfc822_getname_orlist(const struct rfc822a
*rfc
, int n
)
87 rfc822_prname_orlist(rfc
, n
, &cntlen
, &addrbuflen
);
88 if (!(addrbuf
=malloc(addrbuflen
+1)))
92 rfc822_prname_orlist(rfc
, n
, &saveaddr
, &ptr
);
93 addrbuf
[addrbuflen
]=0;
99 char *rfc822_gettok(const struct rfc822token
*t
)
104 rfc822tok_print(t
, &cntlen
, &addrbuflen
);
106 if (!(addrbuf
=malloc(addrbuflen
+1)))
110 rfc822tok_print(t
, &saveaddr
, &ptr
);
111 addrbuf
[addrbuflen
]=0;