Imported Upstream version 1.7.0
[platform/upstream/augeas.git] / lenses / postfix_master.aug
1 (* Postfix_Master module for Augeas
2  Author: Free Ekanayaka <free@64studio.com>
3
4  Reference:
5
6 *)
7
8 module Postfix_Master =
9
10    autoload xfm
11
12 (************************************************************************
13  *                           USEFUL PRIMITIVES
14  *************************************************************************)
15
16 let eol        = Util.eol
17 let ws         = del /[ \t\n]+/ " "
18 let comment    = Util.comment
19 let empty      = Util.empty
20
21 let word       = /[A-Za-z0-9_.:-]+/
22 let words      =
23      let char_start = /[A-Za-z0-9$!(){}=_.,:@-]/
24   in let char_end = char_start | /[]["\/]/
25   in let char_middle = char_end | " "
26   in char_start . char_middle* . char_end
27
28 let bool       = /y|n|-/
29 let integer    = /([0-9]+|-)\??/
30 let command   = words . (/[ \t]*\n[ \t]+/ . words)*
31
32 let field (l:string) (r:regexp)
33                = [ label l . store r ]
34
35 (************************************************************************
36  *                               ENTRIES
37  *************************************************************************)
38
39 let entry     = [ key word . ws
40                 . field "type"         /inet|unix|fifo|pass/  . ws
41                 . field "private"      bool                   . ws
42                 . field "unprivileged" bool                   . ws
43                 . field "chroot"       bool                   . ws
44                 . field "wakeup"       integer                . ws
45                 . field "limit"        integer                . ws
46                 . field "command"      command
47                 . eol ]
48
49 (************************************************************************
50  *                                LENS
51  *************************************************************************)
52
53 let lns        = (comment|empty|entry) *
54
55 let filter     = incl "/etc/postfix/master.cf"
56
57 let xfm        = transform lns filter