~ubuntu-branches/ubuntu/vivid/postfix/vivid-proposed

« back to all changes in this revision

Viewing changes to src/global/tok822_rewrite.c

  • Committer: Bazaar Package Importer
  • Author(s): LaMont Jones
  • Date: 2005-02-27 09:33:07 UTC
  • Revision ID: james.westby@ubuntu.com-20050227093307-cn789t27ibnlh6tf
Tags: upstream-2.1.5
ImportĀ upstreamĀ versionĀ 2.1.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*++
 
2
/* NAME
 
3
/*      tok822_rewrite 3
 
4
/* SUMMARY
 
5
/*      address rewriting, client interface
 
6
/* SYNOPSIS
 
7
/*      #include <tok822.h>
 
8
/*
 
9
/*      TOK822  *tok822_rewrite(addr, how)
 
10
/*      TOK822  *addr;
 
11
/*      char    *how;
 
12
/* DESCRIPTION
 
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.
 
16
/* LICENSE
 
17
/* .ad
 
18
/* .fi
 
19
/*      The Secure Mailer license must be distributed with this software.
 
20
/* AUTHOR(S)
 
21
/*      Wietse Venema
 
22
/*      IBM T.J. Watson Research
 
23
/*      P.O. Box 704
 
24
/*      Yorktown Heights, NY 10598, USA
 
25
/*--*/
 
26
 
 
27
/* System library. */
 
28
 
 
29
#include <sys_defs.h>
 
30
 
 
31
/* Utility library. */
 
32
 
 
33
#include <vstring.h>
 
34
#include <msg.h>
 
35
 
 
36
/* Global library. */
 
37
 
 
38
#include "rewrite_clnt.h"
 
39
#include "tok822.h"
 
40
 
 
41
/* tok822_rewrite - address rewriting interface */
 
42
 
 
43
TOK822 *tok822_rewrite(TOK822 *addr, const char *how)
 
44
{
 
45
    VSTRING *input_ext_form = vstring_alloc(100);
 
46
    VSTRING *canon_ext_form = vstring_alloc(100);
 
47
 
 
48
    if (addr->type != TOK822_ADDR)
 
49
        msg_panic("tok822_rewrite: non-address token type: %d", addr->type);
 
50
 
 
51
    /*
 
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
 
54
     * trees.
 
55
     */
 
56
    tok822_externalize(input_ext_form, addr->head, TOK822_STR_DEFL);
 
57
    if (msg_verbose)
 
58
        msg_info("tok822_rewrite: input: %s", vstring_str(input_ext_form));
 
59
    rewrite_clnt(how, vstring_str(input_ext_form), canon_ext_form);
 
60
    if (msg_verbose)
 
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);
 
64
 
 
65
    vstring_free(input_ext_form);
 
66
    vstring_free(canon_ext_form);
 
67
    return (addr);
 
68
}