From 9c45d9ad13fdf439d44d7443ae75da15ea0223ed Mon Sep 17 00:00:00 2001 From: Sam Varshavchik Date: Mon, 19 Aug 2013 16:39:41 -0400 Subject: Initial checkin Imported from subversion report, converted to git. Updated all paths in scripts and makefiles, reflecting the new directory hierarchy. --- rfc822/testsuite.c | 134 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 rfc822/testsuite.c (limited to 'rfc822/testsuite.c') diff --git a/rfc822/testsuite.c b/rfc822/testsuite.c new file mode 100644 index 0000000..7064c42 --- /dev/null +++ b/rfc822/testsuite.c @@ -0,0 +1,134 @@ +/* +** Copyright 1998 - 2006 Double Precision, Inc. +** See COPYING for distribution information. +*/ + +#include "rfc822.h" +#include "rfc2047.h" +#include +#include + + +static void print_func(char c, void *p) +{ + p=p; + putchar(c); +} + +static void print_separator(const char *s, void *p) +{ + p=p; + printf("%s", s); +} + +static struct rfc822t *tokenize(const char *p) +{ +struct rfc822t *tp; +int i; +char buf[2]; + + printf("Tokenize: %s\n", p); + tp=rfc822t_alloc_new(p, NULL, NULL); + if (!tp) exit(0); + buf[1]=0; + for (i=0; intokens; i++) + { + buf[0]=tp->tokens[i].token; + if (buf[0] == '\0' || buf[0] == '"' || buf[0] == '(') + { + printf("%s: ", buf[0] == '"' ? "Quote": + buf[0] == '(' ? "Comment":"Atom"); + if (fwrite(tp->tokens[i].ptr, tp->tokens[i].len, 1, + stdout) != 1) + exit(1); + + printf("\n"); + } + else printf("Token: %s\n", buf[0] ? buf:"atom"); + } + return (tp); +} + +static struct rfc822a *doaddr(struct rfc822t *t) +{ +struct rfc822a *a=rfc822a_alloc(t); + + if (!a) exit(0); + printf("----\n"); + rfc822_print(a, print_func, print_separator, NULL); + printf("\n"); + return (a); +} + +int main() +{ + struct rfc822t *t1, *t2, *t3, *t4, *t5; + struct rfc822a *a1, *a2, *a3, *a4, *a5; + + t1=tokenize("nobody@example.com (Nobody (is) here\\) right)"); + t2=tokenize("Distribution list: nobody@example.com daemon@example.com"); + t3=tokenize("Mr Nobody , Mr. Nobody "); + t4=tokenize("nobody@example.com, , Mr. Nobody "); + + t5=tokenize("=?UTF-8?Q?Test?= , foo=bar "); + + a1=doaddr(t1); + a2=doaddr(t2); + a3=doaddr(t3); + a4=doaddr(t4); + a5=doaddr(t5); + + rfc822a_free(a5); + rfc822a_free(a4); + rfc822a_free(a3); + rfc822a_free(a2); + rfc822a_free(a1); + rfc822t_free(t5); + rfc822t_free(t4); + rfc822t_free(t3); + rfc822t_free(t2); + rfc822t_free(t1); + +#define FIVEUTF8 "\xe2\x85\xa4" + +#define FIVETIMES4 FIVEUTF8 FIVEUTF8 FIVEUTF8 FIVEUTF8 + +#define FIVETIMES16 FIVETIMES4 FIVETIMES4 FIVETIMES4 FIVETIMES4 + +#define FIVEMAX FIVETIMES16 FIVETIMES4 FIVETIMES4 + + { + char *p=rfc2047_encode_str(FIVEMAX, "utf-8", + rfc2047_qp_allow_any); + + if (p) + { + printf("%s\n", p); + free(p); + } + } + + { + char *p=rfc2047_encode_str(FIVEMAX FIVEUTF8, "utf-8", + rfc2047_qp_allow_any); + + if (p) + { + printf("%s\n", p); + free(p); + } + } + + { + char *p=rfc2047_encode_str(FIVEMAX "\xcc\x80", "utf-8", + rfc2047_qp_allow_any); + + if (p) + { + printf("%s\n", p); + free(p); + } + } + + return (0); +} -- cgit v1.2.3