~ubuntu-branches/ubuntu/vivid/augeas/vivid-proposed

« back to all changes in this revision

Viewing changes to lenses/shellvars.aug

  • Committer: Package Import Robot
  • Author(s): Raphaël Pinson
  • Date: 2014-12-01 10:49:19 UTC
  • mfrom: (1.6.1) (24.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20141201104919-lalkacyk0i5fndg5
Tags: 1.3.0-0ubuntu1
* New upstream version
* Include d/p/0003_Link_pthread.patch again

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
  let eol = del (/[ \t]+|[ \t]*[;\n]/ . empty_part_re*) "\n"
19
19
  let semicol_eol = del (/[ \t]*[;\n]/ . empty_part_re*) "\n"
20
20
 
21
 
  let key_re = /[A-Za-z0-9_]+(\[[0-9]+\])?/ - "unset" - "export"
 
21
  let key_re = /[A-Za-z0-9_]+(\[[0-9]+\])?/ - ("unset" | "export")
22
22
  let matching_re = "${!" . key_re . /[\*@]\}/
23
23
  let eq = Util.del_str "="
24
24
 
32
32
  let semicol = del /;?/ ""
33
33
 
34
34
  let char  = /[^`;() '"\t\n]|\\\\"/
35
 
  let dquot = /"([^"\\]|\\\\.)*"/                    (* " Emacs, relax *)
 
35
  let dquot =
 
36
       let char = /[^"\\]|\\\\./ | Rx.cl
 
37
    in "\"" . char* . "\""                    (* " Emacs, relax *)
36
38
  let squot = /'[^']*'/
37
39
  let bquot = /`[^`\n]*`/
38
40
  (* dbquot don't take spaces or semi-colons *)
39
41
  let dbquot = /``[^` \t\n;]+``/
40
 
  let dollar_assign = /\$\([^\)#\n]*\)/
41
 
 
42
 
  let sto_to_semicol = store /[^#; \t\n][^#;\n]+[^#; \t\n]|[^#; \t\n]+/
 
42
  let dollar_assign = /\$\([^\(\)#\n]*\)/
 
43
  let dollar_arithm = /\$\(\([^\)#\n]*\)\)/
 
44
 
 
45
  let anyquot = (dquot|squot)+ | bquot | dbquot | dollar_assign | dollar_arithm
 
46
 
 
47
  let to_semicol_re = /[^#; \t\n][^#;\n]+[^#; \t\n]|[^#; \t\n]+/
 
48
  let sto_to_semicol = store to_semicol_re
 
49
 
 
50
  let sto_to_semicol_quot =
 
51
       let no_semicol_re = /[^"'#;\n]/
 
52
    in let no_semicol_spc_re = /[^"'#; \t\n]/
 
53
    in let multi_chars = no_semicol_spc_re . (no_semicol_re|anyquot)+ . no_semicol_spc_re
 
54
    in store (no_semicol_spc_re | multi_chars)
43
55
 
44
56
  (* Array values of the form '(val1 val2 val3)'. We do not handle empty *)
45
57
  (* arrays here because of typechecking headaches. Instead, they are    *)
46
58
  (* treated as a simple value                                           *)
47
59
  let array =
48
 
    let array_value = store (char+ | dquot) in
 
60
    let array_value = store (char+ | anyquot) in
49
61
    del /\([ \t]*/ "(" . counter "values" .
50
62
      [ seq "values" . array_value ] .
51
63
      [ del /[ \t\n]+/ " " . seq "values" . array_value ] *
55
67
  (* but fairly close.                                                *)
56
68
  let simple_value =
57
69
    let empty_array = /\([ \t]*\)/ in
58
 
      store (char* | (dquot | squot)+
59
 
            | bquot | dbquot | dollar_assign | empty_array)
 
70
      store (char* | anyquot | empty_array)
60
71
 
61
72
  let export = [ key "export" . Util.del_ws_spc ]
62
 
  let kv = [ Util.indent . export? . key key_re
63
 
           . eq . (simple_value | array) . comment_or_eol ]
 
73
  let kv = Util.indent . export? . key key_re
 
74
           . eq . (simple_value | array)
64
75
 
65
76
  let var_action (name:string) =
66
 
    [ Util.indent . xchgs name ("@" . name) . Util.del_ws_spc
67
 
    . store (key_re | matching_re) . comment_or_eol ]
 
77
    Util.indent . del name name . Util.del_ws_spc
 
78
    . label ("@" . name) . counter "var_action"
 
79
    . Build.opt_list [ seq "var_action" . store (key_re | matching_re) ] Util.del_ws_spc
68
80
 
69
81
  let unset = var_action "unset"
70
82
  let bare_export = var_action "export"
71
83
 
72
84
  let source =
73
 
    [ Util.indent
74
 
      . del /\.|source/ "." . label ".source"
75
 
      . Util.del_ws_spc . store /[^;=# \t\n]+/ . comment_or_eol ]
 
85
    Util.indent
 
86
    . del /\.|source/ "." . label ".source"
 
87
    . Util.del_ws_spc . store /[^;=# \t\n]+/
76
88
 
77
89
  let shell_builtin_cmds = "ulimit" | "shift" | "exit"
78
90
 
79
91
  let builtin =
80
 
    [ Util.indent . label "@builtin"
81
 
      . store shell_builtin_cmds
82
 
      . (Util.del_ws_spc
83
 
      . [ label "args" . sto_to_semicol ])?
84
 
      . comment_or_eol ]
 
92
    Util.indent . label "@builtin"
 
93
    . store shell_builtin_cmds
 
94
    . (Util.del_ws_spc
 
95
    . [ label "args" . sto_to_semicol ])?
85
96
 
86
97
  let keyword (kw:string) = Util.indent . Util.del_str kw
87
98
  let keyword_label (kw:string) (lbl:string) = keyword kw . label lbl
88
99
 
89
100
  let return =
90
 
    [ Util.indent . label "@return"
91
 
      . Util.del_str "return"
92
 
      . ( Util.del_ws_spc . store Rx.integer )?
93
 
      . comment_or_eol ]
 
101
    Util.indent . label "@return"
 
102
    . Util.del_str "return"
 
103
    . ( Util.del_ws_spc . store Rx.integer )?
94
104
 
95
105
 
96
106
(************************************************************************
100
110
  let generic_cond_start (start_kw:string) (lbl:string)
101
111
                         (then_kw:string) (contents:lens) =
102
112
      keyword_label start_kw lbl . Sep.space
103
 
      . sto_to_semicol . semicol_eol
 
113
      . sto_to_semicol_quot . semicol_eol
104
114
      . keyword then_kw . eol
105
115
      . contents
106
116
 
126
136
  let loop_select (entry:lens) =
127
137
    generic_cond "select" "@select" "do" entry+ "done"
128
138
 
129
 
  let case (entry:lens) =
 
139
  let case (entry:lens) (entry_noeol:lens) =
130
140
    let case_entry = [ label "@case_entry"
131
141
                       . Util.indent . store /[^ \t\n\)]+/
132
142
                       . Util.del_str ")" . eol
133
 
                       . entry*
 
143
                       . ( entry+ | entry_noeol )?
134
144
                       . Util.indent . Util.del_str ";;" . eol ] in
135
145
      [ keyword_label "case" "@case" . Sep.space
136
146
        . store (char+ | ("\"" . char+ . "\""))
147
157
      . entry+
148
158
      . Util.indent . Util.del_str "}" . eol ]
149
159
 
 
160
  let entry_eol =
 
161
    let entry_eol_item (item:lens) =
 
162
      [ item . comment_or_eol ] in
 
163
      entry_eol_item source
 
164
        | entry_eol_item kv
 
165
        | entry_eol_item unset
 
166
        | entry_eol_item bare_export
 
167
        | entry_eol_item builtin
 
168
        | entry_eol_item return
 
169
 
 
170
  let entry_noeol =
 
171
    let entry_item (item:lens) = [ item ] in
 
172
      entry_item source
 
173
        | entry_item kv
 
174
        | entry_item unset
 
175
        | entry_item bare_export
 
176
        | entry_item builtin
 
177
        | entry_item return
 
178
 
150
179
  let rec rec_entry =
151
 
    let entry = comment | source | kv
152
 
              | unset | bare_export | builtin | return | rec_entry in
 
180
    let entry = comment | entry_eol | rec_entry in
153
181
        cond_if entry
154
182
      | loop_for entry
155
183
      | loop_select entry
156
184
      | loop_while entry
157
185
      | loop_until entry
158
 
      | case entry
 
186
      | case entry entry_noeol
159
187
      | function entry
160
188
 
161
 
  let lns_norec = empty* . (comment | source | kv | unset | bare_export | builtin | return) *
 
189
  let lns_norec = empty* . (comment | entry_eol) *
162
190
 
163
 
  let lns = empty* . (comment | source | kv | unset | bare_export | builtin | return | rec_entry) *
 
191
  let lns = empty* . (comment | entry_eol | rec_entry) *
164
192
 
165
193
  let sc_incl (n:string) = (incl ("/etc/sysconfig/" . n))
166
194
  let sc_excl (n:string) = (excl ("/etc/sysconfig/" . n))
171
199
      sc_excl "hw-uuid" .
172
200
      sc_excl "hwconf" .
173
201
      sc_excl "ip*tables" .
 
202
      sc_excl "ip*tables.save" .
174
203
      sc_excl "kernel" .
175
204
      sc_excl "*.pub" .
176
205
      sc_excl "sysstat.ioconf" .
177
206
      sc_excl "system-config-firewall" .
178
207
      sc_excl "system-config-securitylevel" .
179
 
      sc_excl "network" .
180
208
      sc_incl "network/config" .
181
209
      sc_incl "network/dhcp" .
182
210
      sc_incl "network/dhcp6r" .
196
224
      sc_excl "SuSEfirewall2.d" .
197
225
      sc_incl "SuSEfirewall2.d/cobbler" .
198
226
      sc_incl "SuSEfirewall2.d/services/*" .
199
 
      sc_excl "SuSEfirewall2.d/services/TEMPLATE"
 
227
      sc_excl "SuSEfirewall2.d/services/TEMPLATE" .
 
228
      sc_excl "*.systemd"
200
229
 
201
230
  let filter_default = incl "/etc/default/*"
202
231
                     . excl "/etc/default/grub_installdevice*"
 
232
                     . excl "/etc/default/rmt"
203
233
                     . excl "/etc/default/whoopsie"
204
234
  let filter_misc    = incl "/etc/arno-iptables-firewall/debconf.cfg"
205
235
                     . incl "/etc/cron-apt/config"
206
236
                     . incl "/etc/environment"
 
237
                     . incl "/etc/firewalld/firewalld.conf"
207
238
                     . incl "/etc/blkid.conf"
208
239
                     . incl "/etc/adduser.conf"
209
240
                     . incl "/etc/cowpoke.conf"
215
246
                     . incl "/etc/os-release"
216
247
                     . incl "/etc/popularity-contest.conf"
217
248
                     . incl "/etc/rc.conf"
 
249
                     . incl "/etc/rc.conf.local"
218
250
                     . incl "/etc/selinux/config"
219
251
                     . incl "/etc/ucf.conf"
220
252
                     . incl "/etc/locale.conf"