S | |
section_re, Xorg | |
secton_re_obsolete, Xorg | |
semicolon, Syslog | |
sep, IniFile | |
sep_col, Sudoers | |
sep_com, Sudoers | |
sep_cont, Sudoers | |
sep_cont_opt, Sudoers | |
sep_default, IniFile | |
sep_dquote | |
sep_eq | |
sep_re, IniFile | |
sep_spc | |
sep_tab | |
sep_tab_opt, Syslog | |
service_attr, Xinetd | |
set_operator, Solaris_System | |
stdexcl, Util | |
sto_integer, Sudoers | |
sto_to_com, Sudoers | |
sto_to_com_cmnd, Sudoers | |
sto_to_com_col, Sudoers | |
sto_to_com_host, Sudoers | |
sto_to_com_user, Sudoers | |
sto_to_comment, IniFile | |
sto_to_eol, IniFile | |
sto_to_eq, Sudoers | |
sto_to_spc, Sudoers | |
sto_to_spc_no_dquote, Sudoers | |
T | |
target | |
the valid values for schedules, Cron | |
to_eol, Xorg | |
token, Syslog | |
U | |
user_record, cgrules | |
W | |
word | |
word_slash, Keepalived | |
ws, cgrules |
Known values for Section names
let section_re = /( Extensions|Files|ServerFlags|Module|InputDevice|Device|VideoAdaptor|Monitor|Modes|Screen|ServerLayout|DRI|Vendor )/
Deletes a semicolon and default to it
let semicolon = sep_tab_opt . Util.del_str ";" . sep_tab_opt
Generic separator
let sep ( pat:regexp ) (default:string) = Sep.opt_space . del pat default
let sep_col = sep_cont_opt . Util.del_str ":" . sep_cont_opt
let sep_com = sep_cont_opt . Util.del_str "," . sep_cont_opt
let sep_cont = del /( [ \t]+|[ \t]*\\\\\n[ \t]* )/ " "
let sep_cont_opt = del /( [ \t]*|[ \t]*\\\\\n[ \t]* )/ " "
The default separator value
let sep_default = "="
let sep_dquote = Util.del_str "\""
let sep_dquote = Util.del_str "\""
let sep_eq = Util.del_str "="
let sep_eq = sep_cont_opt . Util.del_str "=" . sep_cont_opt
The default regexp for a separator
let sep_re = /[=:]/
let sep_spc = Util.del_ws_spc
let sep_spc = del /[ \t]+/ " "
let sep_spc = Util.del_ws_spc
let sep_tab = Sep.tab
let sep_tab = del /( [ \t]+|[ \t]*\\\\\n[ \t]* )/ "\t"
let sep_tab_opt = del /( [ \t]*|[ \t]*\\\\\n[ \t]* )/ ""
It is much faster to combine, for example, all the attr_one attributes into one regexp and pass that to a lens instead of using lens union (attr_one “a” | attr_one “b”|..)
let service_attr = attr_one ( "socket_type" | "protocol" | "wait" | "user" | "group" |"server" | "instances" | "rpc_version" | "rpc_number" | "id" | "port" | "nice" | "banner" | "bind" | "interface" | "per_source" | "groups" | "banner_success" | "banner_fail" | "disable" | "max_load" | "rlimit_as" | "rlimit_cpu" | "rlimit_data" | "rlimit_rss" | "rlimit_stack" | "v6only" | "deny_time" | "umask" | "mdns" | "libwrap" )
Valid set operators: equals, bitwise AND and OR
let set_operators = /[=&\|]/
Exclusion for files that are commonly not wanted/needed
let stdexcl = ( excl "*~" ) . (excl "*.rpmnew") . (excl "*.rpmsave") . (excl "*.dpkg-old") . (excl "*.dpkg-new") . (excl "*.dpkg-bak") . (excl "*.dpkg-dist") . (excl "*.augsave") . (excl "*.augnew")
let sto_integer = store /[0-9]+/
There could be a \ in the middle of a command
let sto_to_com = store /( [^,=:#() \t\n\\\\][^,=:#()\n]*[^,=:#() \t\n\\\\] )|[^,=:#() \t\n\\\\]/
sto_to_com_cmnd does not begin or end with a space
let sto_to_com_cmnd = store /( [^,=:#() \t\n\\\\]([^,=:#()\n\\\\]|\\\\[=:,\\\\])*[^,=:#() \t\n\\\\] )|[^,=:#() \t\n\\\\]/
let sto_to_com_col = store /[^",=#() \t\n\\\\]+/ (* " relax emacs *)
let sto_to_com_host = store /[^,=:#() \t\n\\\\]+/
Escaped spaces are allowed
let sto_to_com_user = store ( /([^,=:#() \t\n]([^,=:#() \t\n]|(\\\\[ \t]))*[^,=:#() \t\n])|[^,=:#() \t\n]/ - /(User|Runas|Host|Cmnd)_Alias|Defaults.*/ )
Store until comment
let sto_to_comment = Sep.opt_space . store /[^;# \t\n][^;#\n]*[^;# \t\n]|[^;# \t\n]/
Store until end of line
let sto_to_eol = Sep.opt_space . store Rx.space_in
let sto_to_eq = store /[^,=:#() \t\n\\\\]+/
let sto_to_spc = store /[^", \t\n\\\\]+|"[^", \t\n\\\\]+"/
let sto_to_spc_no_dquote = store /[^", \t\n\\\\]+/ (* " relax emacs *)
let target = Rx.device_name
Match everything from here to eol, cropping whitespace at both ends
let to_eol = /[^ \t\n]( .*[^ \t\n] )?/
alphanum or “*”
let token = /( [a-z0-9]+|\* )/
let user_record = generic_record "user" ( store name )
let word = Rx.word
let word = Rx.word
our version can’t start with [_.-] because it would mess up the grammar
let word = /[A-Za-z0-9][A-Za-z0-9_.-]*/
let word_slash = word | "/"
let ws = del /[ \t]+/ " "