~ubuntu-branches/ubuntu/raring/postfix/raring

« back to all changes in this revision

Viewing changes to src/cleanup/cleanup_rewrite.c

Tags: upstream-2.2.6
ImportĀ upstreamĀ versionĀ 2.2.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
/* SYNOPSIS
7
7
/*      #include <cleanup.h>
8
8
/*
9
 
/*      void    cleanup_rewrite_external(result, addr)
10
 
/*      VSTRING *result;
11
 
/*      const char *addr;
12
 
/*
13
 
/*      void    cleanup_rewrite_internal(result, addr)
14
 
/*      VSTRING *result;
15
 
/*      const char *addr;
16
 
/*
17
 
/*      void    cleanup_rewrite_tree(tree)
 
9
/*      int     cleanup_rewrite_external(context_name, result, addr)
 
10
/*      const char *context;
 
11
/*      VSTRING *result;
 
12
/*      const char *addr;
 
13
/*
 
14
/*      int     cleanup_rewrite_internal(context_name, result, addr)
 
15
/*      const char *context;
 
16
/*      VSTRING *result;
 
17
/*      const char *addr;
 
18
/*
 
19
/*      int     cleanup_rewrite_tree(context_name, tree)
 
20
/*      const char *context;
18
21
/*      TOK822  *tree;
19
22
/* DESCRIPTION
20
23
/*      This module rewrites addresses to canonical form, adding missing
21
24
/*      domains and stripping source routes etc., and performs
22
25
/*      \fIcanonical\fR map lookups to map addresses to official form.
 
26
/*      These functions return non-zero when the address was changed.
23
27
/*
24
28
/*      cleanup_rewrite_init() performs one-time initialization.
25
29
/*
33
37
/*      cleanup_rewrite_tree() is a wrapper around the
34
38
/*      cleanup_rewrite_external() routine that transforms from
35
39
/*      internal parse tree form to external form and back.
 
40
/*
 
41
/*      Arguments:
 
42
/* .IP context_name
 
43
/*      The name of an address rewriting context that supplies
 
44
/*      the equivalents of myorigin and mydomain.
 
45
/* .IP result
 
46
/*      Result buffer.
 
47
/* .IP addr
 
48
/*      Input buffer.
36
49
/* DIAGNOSTICS
37
50
/* LICENSE
38
51
/* .ad
68
81
 
69
82
/* cleanup_rewrite_external - rewrite address external form */
70
83
 
71
 
void    cleanup_rewrite_external(VSTRING *result, const char *addr)
 
84
int     cleanup_rewrite_external(const char *context_name, VSTRING *result,
 
85
                                         const char *addr)
72
86
{
73
 
    rewrite_clnt(REWRITE_CANON, addr, result);
 
87
    rewrite_clnt(context_name, addr, result);
 
88
    return (strcmp(STR(result), addr) != 0);
74
89
}
75
90
 
76
91
/* cleanup_rewrite_tree - rewrite address node */
77
92
 
78
 
void    cleanup_rewrite_tree(TOK822 *tree)
 
93
int    cleanup_rewrite_tree(const char *context_name, TOK822 *tree)
79
94
{
80
95
    VSTRING *dst = vstring_alloc(100);
81
96
    VSTRING *src = vstring_alloc(100);
 
97
    int     did_rewrite;
82
98
 
83
99
    tok822_externalize(src, tree->head, TOK822_STR_DEFL);
84
 
    cleanup_rewrite_external(dst, STR(src));
 
100
    did_rewrite = cleanup_rewrite_external(context_name, dst, STR(src));
85
101
    tok822_free_tree(tree->head);
86
102
    tree->head = tok822_scan(STR(dst), &tree->tail);
87
103
    vstring_free(dst);
88
104
    vstring_free(src);
 
105
    return (did_rewrite);
89
106
}
90
107
 
91
108
/* cleanup_rewrite_internal - rewrite address internal form */
92
109
 
93
 
void    cleanup_rewrite_internal(VSTRING *result, const char *addr)
 
110
int     cleanup_rewrite_internal(const char *context_name,
 
111
                                         VSTRING *result, const char *addr)
94
112
{
95
113
    VSTRING *dst = vstring_alloc(100);
96
114
    VSTRING *src = vstring_alloc(100);
 
115
    int     did_rewrite;
97
116
 
98
117
    quote_822_local(src, addr);
99
 
    cleanup_rewrite_external(dst, STR(src));
 
118
    did_rewrite = cleanup_rewrite_external(context_name, dst, STR(src));
100
119
    unquote_822_local(result, STR(dst));
101
120
    vstring_free(dst);
102
121
    vstring_free(src);
 
122
    return (did_rewrite);
103
123
}