2 ** Copyright 1998 - 1999 Double Precision, Inc.
3 ** See COPYING for distribution information.
7 ** $Id: rfc822_getaddr.c,v 1.6 2000/10/22 05:23: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 char *rfc822_getname(const struct rfc822a
*rfc
, int n
)
49 rfc822_prname(rfc
, n
, &cntlen
, &addrbuflen
);
50 if (!(addrbuf
=malloc(addrbuflen
+1)))
54 rfc822_prname(rfc
, n
, &saveaddr
, &ptr
);
55 addrbuf
[addrbuflen
]=0;
57 /* Get rid of surrounding quotes */
59 for (p
=q
=addrbuf
; *p
; p
++)
60 if (*p
!= '"') *q
++=*p
;
65 char *rfc822_getname_orlist(const struct rfc822a
*rfc
, int n
)
71 rfc822_prname_orlist(rfc
, n
, &cntlen
, &addrbuflen
);
72 if (!(addrbuf
=malloc(addrbuflen
+1)))
76 rfc822_prname_orlist(rfc
, n
, &saveaddr
, &ptr
);
77 addrbuf
[addrbuflen
]=0;
79 /* Get rid of surrounding quotes */
81 for (p
=q
=addrbuf
; *p
; p
++)
82 if (*p
!= '"') *q
++=*p
;
87 char *rfc822_gettok(const struct rfc822token
*t
)
92 rfc822tok_print(t
, &cntlen
, &addrbuflen
);
94 if (!(addrbuf
=malloc(addrbuflen
+1)))
98 rfc822tok_print(t
, &saveaddr
, &ptr
);
99 addrbuf
[addrbuflen
]=0;