7 /* address rewriting, client interface
11 /* TOK822 *tok822_rewrite(addr, how)
15 /* tok822_rewrite() takes an address token tree and transforms
16 /* it according to the rule set specified via \fIhow\fR. The
17 /* result is the \fIaddr\fR argument.
21 /* The Secure Mailer license must be distributed with this software.
24 /* IBM T.J. Watson Research
26 /* Yorktown Heights, NY 10598, USA
33 /* Utility library. */
40 #include "rewrite_clnt.h"
43 /* tok822_rewrite - address rewriting interface */
45 TOK822
*tok822_rewrite(TOK822
*addr
, const char *how
)
47 VSTRING
*input_ext_form
= vstring_alloc(100);
48 VSTRING
*canon_ext_form
= vstring_alloc(100);
50 if (addr
->type
!= TOK822_ADDR
)
51 msg_panic("tok822_rewrite: non-address token type: %d", addr
->type
);
54 * Externalize the token tree, ship it to the rewrite service, and parse
55 * the result. Shipping external form is much simpler than shipping parse
58 tok822_externalize(input_ext_form
, addr
->head
, TOK822_STR_DEFL
);
60 msg_info("tok822_rewrite: input: %s", vstring_str(input_ext_form
));
61 rewrite_clnt(how
, vstring_str(input_ext_form
), canon_ext_form
);
63 msg_info("tok822_rewrite: result: %s", vstring_str(canon_ext_form
));
64 tok822_free_tree(addr
->head
);
65 addr
->head
= tok822_scan(vstring_str(canon_ext_form
), &addr
->tail
);
67 vstring_free(input_ext_form
);
68 vstring_free(canon_ext_form
);