A | |
access, Access | |
Access | |
action, Syslog | |
address, Pg_Hba | |
alias | |
alias_entry, Sudoers | |
alias_entry_single, Sudoers | |
alias_field, Sudoers | |
alias_list, Sudoers | |
alias_name, Sudoers | |
ALIASES, Sudoers | |
alpha, Cron | |
alphanum, Cron | |
at, Syslog | |
Augeas Lenses | |
Augeas Variables | |
B | |
bang, Syslog | |
block, Keepalived | |
body, Xinetd | |
brackets, Build | |
Build | |
C | |
CAVEATS, Sshd | |
cgconfig | |
cgrules | |
cmd_kv, Solaris_System | |
cmd_moddir, Solaris_System | |
cmd_set, Solaris_System | |
cmnd_alias, Sudoers | |
cmnd_spec, Sudoers | |
cmnd_spec_list, Sudoers | |
colon | |
Columns definitions, Pg_Hba | |
comma | |
comma_sep_list | |
COMMANDS, Solaris_System | |
comment | |
Comment, Util | |
comment_c_style, Util | |
comment_default, IniFile | |
comment_eol | |
comment_generic, Util | |
comment_multiline, Util | |
comment_or_eol | |
comment_re, IniFile | |
Comments and empty lines | |
COMMON ENTRIES, Mke2fs | |
common_entry, Mke2fs | |
comparison, Syslog | |
Configuration files | |
controller, cgrules | |
CONTROLLER, cgrules | |
Cron | |
crypttab.aug | |
ctrl_key, cgrules | |
ctrl_value, cgrules |
Allow (+) or deny (-) access
let access = label "access" . store /[+-]/
let address = [ label "address" . store ipaddr ]
let alias = [ label "alias" . store word_re ]
Every kind of Alias entry, see user_alias, runas_alias, host_alias and cmnd_alias
let alias = user_alias | runas_alias | host_alias | cmnd_alias
Alias entry, a list of comma-separated alias_entry_single fields
let alias_entry ( kw:string ) (field:string) (sto:lens) = [ indent . key kw . sep_cont . alias_entry_single field sto . ( sep_col . alias_entry_single field sto )* . eol ]
Single alias_entry, named using alias_name and listing alias_list
let alias_entry_single ( field:string ) (sto:lens) = [ label "alias" . alias_name . sep_eq . alias_list field sto ]
Generic alias field to gather all Alias definitions
let alias_field ( kw:string ) (sto:lens) = [ label kw . sto ]
List of alias_fields, separated by commas
let alias_list ( kw:string ) (sto:lens) = alias_field kw sto . ( sep_com . alias_field kw sto )*
Name of an alias_entry_single
let alias_name = [ label "name" . store /[A-Z][A-Z0-9_]*/ ]
let alpha = /[A-Za-z]{3}/
let alphanum = num | alpha
Deletes a at and default to it
let at = Util.del_str "@"
Deletes a bang and default to it
let bang = Util.del_str "!"
A simple block with just a block title
let block ( kw:string ) (sto:lens) = lens_block (key kw) sto
We would really like to say “the body can contain any of a list of a list of attributes, each of them at most once”; but that would require that we build a lens that matches the permutation of all attributes; with around 40 individual attributes, that’s not computationally feasible, even if we didn’t have to worry about how to write that down.
let body ( attr:lens ) = Util.del_str "\n{\n" . (empty|comment|attr)* . del /[ \t]*}[ \t]*\n/ "}\n"
Put a lens inside brackets
let brackets ( l:lens ) (r:lens) (lns:lens) = l . lns . r
Function for simple key/value setting commands such as rootfs
let cmd_kv ( cmd:string ) (value:regexp) = Build.key_value_line cmd sep_colon (store value)
The moddir command for specifying module search paths
let cmd_moddir = Build.key_value_line "moddir" sep_colon ( Build.opt_list modpath sep_moddir )
The set command for individual kernel/module parameters
let cmd_set = [ key "set" . Util.del_ws_spc . ( set_var | set_varmod ) . set_sep_spc . [ label "operator" . store set_operators ] . set_sep_spc . set_value . Util.eol ]
Cmnd_Alias, see alias_field
let cmnd_alias = alias_entry "Cmnd_Alias" "command" sto_to_com_cmnd
Command specification for spec, with optional runas_spec and any amount of tag_specs
let cmnd_spec = [ label "command" . runas_spec? . tag_spec* . sto_to_com_cmnd ]
A list of comma-separated cmnd_specs
let cmnd_spec_list = cmnd_spec . ( sep_com . cmnd_spec )*
this is the standard field separator “ : “
let colon = Sep.space . Sep.colon . Sep.space
Deletes a colon and default to it
let colon = sep_tab_opt . Util.del_str ":" . sep_tab_opt
let comma = Sep.comma
Deletes a comma and default to it
let comma = sep_tab_opt . Util.del_str "," . sep_tab_opt
A comma separated list of options (opt=value or opt)
let comma_sep_list ( l:string ) = let value = [ label "value" . Util.del_str "=" . store optval ] in
let comment = Util.comment
let comment = Util.comment
let comment = Util.comment
let comment = Util.comment
Map comments into “#comment” nodes
let comment ( pat:regexp ) (default:string) = [ label "#comment" . sep pat default . sto_to_eol? . eol ]
Map comments in “#comment” nodes
let comment = Util.comment_generic /[ \t]*[#!][ \t]*/ "# "
let comment = IniFile.comment IniFile.comment_re IniFile.comment_default
let comment = Util.comment
let comment = Util.comment_generic /[ \t]*[;#][ \t]*/ "# "
let comment = Util.comment_generic /[ \t]*\*[ \t]*/ "* "
Map comments in “#comment” nodes
let comment = let sto_to_eol = store ( /([^ \t\n].*[^ \t\n]|[^ \t\n])/ - /includedir.*/ ) in [ label "#comment" . del /[ \t]*#[ \t]*/ "# " . sto_to_eol . eol ]
Map comments into “#comment” nodes Can’t use Util.comment as #+ and #!
let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n+!-].*[^ \t\n]|[^ \t\n+!-])/ . eol ]
Map comments into “#comment” nodes
let comment = comment_generic /[ \t]*#[ \t]*/ "# "
let comment = Util.comment
A comment line, C-style
let comment_c_style = comment_generic /[ \t]*\/\/[ \t]*/ "// "
Default value for comment pattern
let comment_default = ";"
Map comments at eol
let comment_eol = Util.comment_generic /[ \t]*[#!][ \t]*/ " # "
Map eol comments into “#comment” nodes Add a space before # for end of line comments
let comment_eol = comment_generic /[ \t]*#[ \t]*/ " # "
Map comments and set default comment sign
let comment_generic ( r:regexp ) (d:string) = [ label "#comment" . del r d . store /([^ \t\n].*[^ \t\n]|[^ \t\n])/ . eol ]
A C-style multiline comment
let comment_multiline = let mline_re = ( /[^ \t\n].*[^ \t\n]|[^ \t\n]/ - /.*\*\/.*/ ) in
A comment_eol or eol
let comment_or_eol = comment_eol | ( del /[ \t]*#?\n/ "\n" )
A comment_eol or eol
let comment_or_eol = comment_eol | ( del /[ \t]*#?\n/ "\n" )
Default regexp for comment pattern
let comment_re = /[;#]/
Entries shared between defaults and fs_types sections
let common_entry = list_sto ( "base_features"|"default_features" ) (key Rx.word) | entry_sto "blocksize" ("-"? . Rx.integer) | entry_sto "hash_alg" ("legacy"|"half_md4"|"tea") | entry_sto ("inode_ratio"|"inode_size") Rx.integer
a comparison is an optional !
let comparison = /( !|[<=>]+|![<=>]+ )/
let controller = ws . [ key ctrl_key . ws . store ctrl_value ]
let ctrl_key = /[^ \t\n\/]+/
let ctrl_value = /[^ \t\n]+/