1 (* Parsing /etc/fstab *)
7 let sep_spc = Sep.space
11 let comment = Util.comment
12 let empty = Util.empty
14 let file = /[^# \t\n]+/
16 (* An option label can't contain comma, comment, equals, or space *)
17 let optlabel = /[^,#= \n\t]+/
18 let spec = /[^,# \n\t][^ \n\t]*/
20 let comma_sep_list (l:string) =
21 let value = [ label "value" . Util.del_str "=" . ( store Rx.neg1 )? ] in
22 let lns = [ label l . store optlabel . value? ] in
23 Build.opt_list lns comma
25 let record = [ seq "mntent" .
27 [ label "spec" . store spec ] . sep_tab .
28 [ label "file" . store file ] . sep_tab .
29 comma_sep_list "vfstype" .
30 (sep_tab . comma_sep_list "opt" .
31 (sep_tab . [ label "dump" . store /[0-9]+/ ] .
32 ( sep_spc . [ label "passno" . store /[0-9]+/ ])? )? )?
33 . Util.comment_or_eol ]
35 let lns = ( empty | comment | record ) *
36 let filter = incl "/etc/fstab"
39 let xfm = transform lns filter
41 (* Local Variables: *)