O | |
opt_hash, Syslog | |
opt_plus, Syslog | |
opt_space | |
opt_tab, Sep | |
option, FAI_DiskConfig | |
optval | |
P | |
partition, FAI_DiskConfig | |
pipe, Syslog | |
plus, Syslog | |
Q | |
quoted_string_val, Xorg | |
R | |
raidoption, FAI_DiskConfig | |
record_ace, Test_IniFile | |
record_acf, Test_IniFile | |
record_ade, Test_IniFile | |
record_adf, Test_IniFile | |
record_bce, Test_IniFile | |
record_bcf, Test_IniFile | |
record_bde, Test_IniFile | |
record_bdf, Test_IniFile | |
record_label_re, IniFile | |
record_re, IniFile | |
remtypes, Pg_Hba | |
resize, FAI_DiskConfig | |
S | |
section_re, Xorg | |
secton_re_obsolete, Xorg | |
semicolon, Syslog | |
sep | |
sep_ace, Test_IniFile | |
sep_acf, Test_IniFile | |
sep_ade, Test_IniFile | |
sep_adf, Test_IniFile | |
sep_bce, Test_IniFile | |
sep_bcf, Test_IniFile | |
sep_bde, Test_IniFile | |
sep_bdf, Test_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 | |
simple_config, Test_FAI_DiskConfig | |
size, FAI_DiskConfig | |
size_kw, FAI_DiskConfig | |
space | |
space_in, Rx | |
spare_missing, FAI_DiskConfig | |
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 | |
sto_to_eol, IniFile | |
sto_to_eq, Sudoers | |
sto_to_spc, Sudoers | |
sto_to_spc_no_dquote, Sudoers |
deletes an optional # sign
let opt_hash = del /#?/ ""
deletes an optional + sign
let opt_plus = del /\+?/ ""
An optional space or tab
let opt_space = /[ \t]*/
Deletes a Rx.opt_space and default to an empty string
let opt_space = del Rx.opt_space ""
Deletes a Rx.opt_space and default to a tab
let opt_tab = del Rx.opt_space "\t"
let option =
let optval = /[A-Za-z0-9_.:-]+/
An optional partition number for disk
let partition = [ label "partition" . Util.del_str "." . store /[0-9]+/ ]
Deletes a pipe and default to it
let pipe = Util.del_str "|"
Deletes a plus and default to it
let plus = Util.del_str "+"
let quoted_string_val = del "\"" "\"" . store /[^"\n]+/ . del "\"" "\""
let raidoption =
let record_ace = IniFile.record title_ace entry_ace
let record_acf = IniFile.record_noempty title_acf entry_acf
let record_ade = IniFile.record title_ade entry_ade
let record_adf = IniFile.record_noempty title_adf entry_adf
let record_bce = IniFile.record title_bce entry_bce
let record_bcf = IniFile.record_noempty title_bce entry_bcf
let record_bde = IniFile.record title_bde entry_bde
let record_bdf = IniFile.record_noempty title_bdf entry_bdf
Default regexp for title_label keyword pattern
let record_label_re = /[^]\n]+/
Default regexp for title keyword pattern
let record_re = ( /[^]\n\/]+/ - /#comment/ )
non-local connection types
let remtypes = "host" | "hostssl" | "hostnossl"
resize tag
let resize = tag "resize"
Known values for Section names
let section_re = /(Extensions|Files|ServerFlags|Module|InputDevice|InputClass|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
Only treat one space as the sep, extras are stripped by IniFile
let sep = Util.del_str " "
let sep = /[ \t]+/
Generic separator
let sep (pat:regexp) (default:string) = Sep.opt_space . del pat default
let sep_ace = IniFile.sep IniFile.sep_re IniFile.sep_default
let sep_acf = IniFile.sep IniFile.sep_re IniFile.sep_default
let sep_ade = IniFile.sep IniFile.sep_re IniFile.sep_default
let sep_adf = IniFile.sep IniFile.sep_re IniFile.sep_default
let sep_bce = IniFile.sep "=" "="
let sep_bcf = IniFile.sep "=" "="
let sep_bde = IniFile.sep "=" "="
let sep_bdf = IniFile.sep "=" "="
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 = /[=&|]/
A simple configuration file
let simple_config = "# A comment disk_config disk2 raw-disk - 0 - - disk_config lvm vg my_pv sda2 vg test disk1.9 my_pv-_swap swap 2048 swap sw my_pv-_root / 2048 ext3 rw,errors=remount-ro disk_config raid raid1 /boot disk1.1,disk2.1,disk3.1,disk4.1,disk5.1,disk6.1 ext3 rw raid1 swap disk1.2,disk2.2,disk3.2,disk4.2,disk5.2,disk6.2 swap sw raid5 /srv/data disk1.11,disk2.11,disk3.11,disk4.11,disk5.11,disk6.11 ext3 ro createopts=\"-m 0\" raid0 - disk2.2,sdc1,sde1:spare:missing ext2 default disk_config tmpfs tmpfs /var/opt/hosting/tmp 500 defaults "
let size = [ label "size" . store size_kw . resize? ]
Regexps for size
let size_kw = /[0-9]+[kMGTP%]?(-([0-9]+[kMGTP%]?)?)?/ | /-[0-9]+[kMGTP%]?/
let space = Sep.space
A mandatory space or tab
let space = /[ \t]+/
Deletes a Rx.space and default to a single space
let space = del Rx.space " "
A string which not starting or ending with a space
let space_in = /[^ \t\n].*[^ \t\n]|[^ \t\n]/
let spare_missing = tag /spare|missing/
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 comment
let sto_to_comment = Sep.opt_space . store to_comment_re
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 *)