/usr/share/augeas/lenses/dist/automounter.aug is in augeas-lenses 1.2.0-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | (*
Module: Automounter
Parses automounter file based maps
Author: Dominic Cleal <dcleal@redhat.com>
About: Reference
See autofs(5)
About: License
This file is licenced under the LGPL v2+, like the rest of Augeas.
About: Lens Usage
To be documented
About: Configuration files
This lens applies to /etc/auto.*, auto_*, excluding known scripts.
About: Examples
The <Test_Automounter> file contains various examples and tests.
*)
module Automounter =
autoload xfm
(************************************************************************
* Group: USEFUL PRIMITIVES
*************************************************************************)
(* View: eol *)
let eol = Util.eol
(* View: empty *)
let empty = Util.empty
(* View: comment *)
let comment = Util.comment
(* View: path *)
let path = /[^-+#: \t\n][^#: \t\n]*/
(* View: hostname *)
let hostname = /[^-:#\(\), \n\t][^:#\(\), \n\t]*/
(* An option label can't contain comma, comment, equals, or space *)
let optlabel = /[^,#:\(\)= \n\t]+/
let spec = /[^,#:\(\)= \n\t][^ \n\t]*/
(* View: weight *)
let weight = Rx.integer
(* View: map_name *)
let map_name = /[^: \t\n]+/
(* View: entry_multimount_sep
Separator for multimount entries, permits line spanning with "\" *)
let entry_multimount_sep = del /[ \t]+(\\\\[ \t]*\n[ \t]+)?/ " "
(************************************************************************
* Group: ENTRIES
*************************************************************************)
(* View: entry_key
Key for a map entry *)
let entry_mkey = store path
(* View: entry_path
Path component of an entry location *)
let entry_path = [ label "path" . store path ]
(* View: entry_host
Host component with optional weight of an entry location *)
let entry_host = [ label "host" . store hostname
. ( Util.del_str "(" . [ label "weight"
. store weight ] . Util.del_str ")" )? ]
(* View: comma_sep_list
Parses options for filesystems *)
let comma_sep_list (l:string) =
let value = [ label "value" . Util.del_str "=" . store Rx.neg1 ] in
let lns = [ label l . store optlabel . value? ] in
Build.opt_list lns Sep.comma
(* View: entry_options *)
let entry_options = Util.del_str "-" . comma_sep_list "opt" . Util.del_ws_tab
(* View: entry_location
A single location with one or more hosts, and one path *)
let entry_location = ( entry_host . ( Sep.comma . entry_host )* )?
. Sep.colon . entry_path
(* View: entry_locations
Multiple locations (each with one or more hosts), separated by spaces *)
let entry_locations = [ label "location" . counter "location"
. [ seq "location" . entry_location ]
. ( [ Util.del_ws_spc . seq "location" . entry_location ] )* ]
(* View: entry_multimount
Parses one of many mountpoints given for a multimount line *)
let entry_multimount = entry_mkey . Util.del_ws_tab . entry_options? . entry_locations
(* View: entry_multimounts
Parses multiple mountpoints given on an entry line *)
let entry_multimounts = [ label "mount" . counter "mount"
. [ seq "mount" . entry_multimount ]
. ( [ entry_multimount_sep . seq "mount" . entry_multimount ] )* ]
(* View: entry
A single map entry from start to finish, including multi-mounts *)
let entry = [ seq "entry" . entry_mkey . Util.del_ws_tab . entry_options?
. ( entry_locations | entry_multimounts ) . Util.eol ]
(* View: include
An include line starting with a "+" and a map name *)
let include = [ seq "entry" . store "+" . Util.del_opt_ws ""
. [ label "map" . store map_name ] . Util.eol ]
(* View: lns *)
let lns = ( empty | comment | entry | include ) *
(* Variable: filter
Exclude scripts/executable maps from here *)
let filter = incl "/etc/auto.*"
. incl "/etc/auto_*"
. excl "/etc/auto.master"
. excl "/etc/auto_master"
. excl "/etc/auto.net"
. excl "/etc/auto.smb"
. Util.stdexcl
let xfm = transform lns filter
|