Imported Upstream version 0.66.1
[hcoop/debian/courier-authlib.git] / libs / rfc822 / rfc822_getaddr.c
1 /*
2 ** Copyright 1998 - 2008 Double Precision, Inc.
3 ** See COPYING for distribution information.
4 */
5
6 /*
7 */
8 #include "rfc822.h"
9 #include <stdlib.h>
10
11 static void cntlen(char c, void *p)
12 {
13 if (c != '\n')
14 ++ *(size_t *)p;
15 }
16
17 static void saveaddr(char c, void *p)
18 {
19 if (c != '\n')
20 {
21 char **cp=(char **)p;
22
23 *(*cp)++=c;
24 }
25 }
26
27 char *rfc822_getaddr(const struct rfc822a *rfc, int n)
28 {
29 return rfc822_display_addr_tobuf(rfc, n, NULL);
30 }
31
32 char *rfc822_gettok(const struct rfc822token *t)
33 {
34 size_t addrbuflen=0;
35 char *addrbuf, *ptr;
36
37 rfc822tok_print(t, &cntlen, &addrbuflen);
38
39 if (!(addrbuf=malloc(addrbuflen+1)))
40 return (0);
41
42 ptr=addrbuf;
43 rfc822tok_print(t, &saveaddr, &ptr);
44 addrbuf[addrbuflen]=0;
45 return (addrbuf);
46 }