5
/* address rewriting, client interface
9
/* TOK822 *tok822_rewrite(addr, how)
13
/* tok822_rewrite() takes an address token tree and transforms
14
/* it according to the rule set specified via \fIhow\fR. The
15
/* result is the \fIaddr\fR argument.
19
/* The Secure Mailer license must be distributed with this software.
22
/* IBM T.J. Watson Research
24
/* Yorktown Heights, NY 10598, USA
31
/* Utility library. */
38
#include "rewrite_clnt.h"
41
/* tok822_rewrite - address rewriting interface */
43
TOK822 *tok822_rewrite(TOK822 *addr, const char *how)
45
VSTRING *input_ext_form = vstring_alloc(100);
46
VSTRING *canon_ext_form = vstring_alloc(100);
48
if (addr->type != TOK822_ADDR)
49
msg_panic("tok822_rewrite: non-address token type: %d", addr->type);
52
* Externalize the token tree, ship it to the rewrite service, and parse
53
* the result. Shipping external form is much simpler than shipping parse
56
tok822_externalize(input_ext_form, addr->head, TOK822_STR_DEFL);
58
msg_info("tok822_rewrite: input: %s", vstring_str(input_ext_form));
59
rewrite_clnt(how, vstring_str(input_ext_form), canon_ext_form);
61
msg_info("tok822_rewrite: result: %s", vstring_str(canon_ext_form));
62
tok822_free_tree(addr->head);
63
addr->head = tok822_scan(vstring_str(canon_ext_form), &addr->tail);
65
vstring_free(input_ext_form);
66
vstring_free(canon_ext_form);