3 Parses /etc/mke2fs.conf
5 Author: Raphael Pinson <raphink@gmail.com>
8 This lens tries to keep as close as possible to `man 5 mke2fs.conf` where possible.
11 This file is licenced under the LGPL v2+, like the rest of Augeas.
16 About: Configuration files
17 This lens applies to /etc/mke2fs.conf. See <filter>.
24 (************************************************************************
25 * Group: USEFUL PRIMITIVES
26 *************************************************************************)
29 let comment = IniFile.comment IniFile.comment_re IniFile.comment_default
32 let sep = IniFile.sep /=[ \t]*/ "="
35 let empty = IniFile.empty
38 (************************************************************************
40 *************************************************************************)
44 A generic entry for lens lns *)
45 let entry (kw:regexp) (lns:lens) = Build.key_value_line kw sep lns
49 A list of values with given lens *)
50 let list_sto (kw:regexp) (lns:lens) = counter "item" .
57 Store a regexp as entry value *)
58 let entry_sto (kw:regexp) (val:regexp) = entry kw (store val)
61 (************************************************************************
62 * Group: COMMON ENTRIES
63 *************************************************************************)
65 Entries shared between <defaults> and <fs_types> sections *)
66 let common_entry = list_sto ("base_features"|"default_features")
68 | entry_sto "blocksize" ("-"? . Rx.integer)
69 | entry_sto "hash_alg" ("legacy"|"half_md4"|"tea")
70 | entry_sto ("inode_ratio"|"inode_size") Rx.integer
72 (************************************************************************
73 * Group: DEFAULTS SECTION
74 *************************************************************************)
76 (* View: defaults_entry
77 Possible entries under the <defaults> section *)
78 let defaults_entry = entry_sto "force_undo" ("true"|"false")
79 | entry_sto "fs_type" Rx.word
80 | entry_sto "undo_dir" Rx.fspath
81 | list_sto "default_mntopts" (key Rx.word)
82 | entry_sto "enable_periodic_fsck" Rx.integer
84 (* View: defaults_title
85 Title for the <defaults> section *)
86 let defaults_title = IniFile.title "defaults"
90 let defaults = IniFile.record defaults_title
91 ((Util.indent . (defaults_entry|common_entry)) | comment)
94 (************************************************************************
95 * Group: FS_TYPES SECTION
96 *************************************************************************)
98 (* View: fs_types_entry
99 Possible entries under a <fs_types_record> group *)
100 let fs_types_entry =list_sto "features"
101 ([del /\^/ "^" . label "disable"]?
104 (key Rx.word . Util.del_str "="
106 | entry_sto "lazy_itable_init" ("true"|"false")
107 | entry_sto ("flex_bg_size"|"auto_64-bit_support")
110 (* View: fs_types_record
111 Fs group records under the <fs_types> section *)
112 let fs_types_record = [ label "filesystem"
113 . Util.indent . store Rx.word
114 . del /[ \t]*=[ \t]*\{[ \t]*\n/ " = {\n"
115 . ((Util.indent . (fs_types_entry|common_entry)) | empty | comment)*
116 . del /[ \t]*\}[ \t]*\n/ " }\n" ]
118 (* View: fs_types_title
119 Title for the <fs_types> section *)
120 let fs_types_title = IniFile.title "fs_types"
123 A fs_types section *)
124 let fs_types = IniFile.record fs_types_title
125 (fs_types_record | comment)
128 (************************************************************************
129 * Group: LENS AND FILTER
130 *************************************************************************)
135 let lns = (empty|comment)* . (defaults|fs_types)*
137 (* Variable: filter *)
138 let filter = incl "/etc/mke2fs.conf"
140 let xfm = transform lns filter