Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 database
 dayofmonth, Cron
 dayofweek, Cron
 debctrl
 default_depth, Xorg
 default_type, Sudoers
 defaults
 DEFAULTS, Sudoers
 DEFAULTS SECTION, Mke2fs
 defaults_entry, Mke2fs
 defaults_title, Mke2fs
 Define comment and defaults, IniFile
 del_negate, Sudoers
 del_opt_ws, Util
 del_str, Util
 del_ws, Util
 del_ws_spc, Util
 del_ws_tab, Util
 Description
 device, Xorg
 Dhcpd
 display, Xorg
 DISPLAY SUBSECTION, Xorg
 display_entry, Xorg
 display_modes, Xorg
 domain, Resolv
 dot, Syslog
 Dpkg
 driver, Xorg
E
 email, Keepalived
 email_addr, Rx
 empty
 empty line, Access
 empty_c_style, Util
 empty_generic, Util
 entries, Syslog
 ENTRIES
 ENTRIES AND OPTIONS, Xorg
 entries_re, Xorg
 entry
 Entry, Syslog
 ENTRY
 entry includes comments, IniFile
 ENTRY LINE, Access
 entry_generic, Xorg
 entry_int, Xorg
 entry_re
 entry_rgb, Xorg
 entry_sto, Mke2fs
 entry_str, Xorg
 entry_xy, Xorg
 eol
 except, Access
 Exclusions, Util
 Exports
let database = let database_kw = "aliases" | "automount" | "bootparams" | "ethers" | "group" | "hosts" | "netgroup" | "netmasks" | "networks" | "passwd" | "protocols" | "publickey" | "rpc" | "sendmailvars" | "services" | "shadow" in [ label "database" . store database_kw . sep_colon . (Build.opt_list (service|reaction) Sep.space) . Util.eol ]
let database = comma_sep_list "database"
TODO: support for quoted strings
let dayofmonth = [ label "dayofmonth" . store num ]
let dayofweek = [ label "dayofweek" . store alphanum ]
Parses ./debian/control
let default_depth = entry_int "DefaultDepth" /[dD]efault[dD]epth/
let default_type = let value = store /[@:>][^ \t\n\\\\]+/ in [ label "type" . value ]
Type definition for defaults
let defaults = IniFile.record defaults_title (
   (Util.indent . (defaults_entry|common_entry)) comment
)
A defaults section
let defaults = [ indent . key "Defaults" . default_type? . sep_cont . parameter_list . eol ]
A Defaults entry
let defaults_entry = entry_sto "force_undo" (
   "true"|"false"
) | entry_sto "fs_type" Rx.word | entry_sto "undo_dir" Rx.fspath
Possible entries under the defaults section
let defaults_title = IniFile.title "defaults"
Title for the defaults section
let del_negate = del /(!!)*/ ""
Delete an even number of ‘!’
let del_opt_ws = del /[ \t]*/
Delete optional whitespace
let del_str (s:string) = del s s
Delete a string and default to it
let del_ws = del /[ \t]+/
Delete mandatory whitespace
let del_ws_spc = del_ws " "
Delete mandatory whitespace, default to single space
let del_ws_tab = del_ws "\t"
Delete mandatory whitespace, default to single tab
dpkg.cfg is a simple list of options, the same ones as the command line options, with or without a value.
/etc/exports contains lines associating a directory with one or more hosts, and NFS options for each host.
let device = entry_str "Device" /[dD]evice/
BIND dhcp 3 server configuration module for Augeas
let display = [ indent . del "SubSection" "SubSection" . sep_spc . sep_dquote . key "Display" . sep_dquote . eol . display_entry* . indent . del "EndSubSection" "EndSubSection" . eol ]
let display_entry = entry_int "Depth" /[dD]epth/ | entry_int "FbBpp" /[fF]b[bB]pp/ | entry_rgb "Weight" /[wW]eight/ | entry_xy "Virtual" /[vV]irtual/ | entry_xy "ViewPort" /[vV]iew[pP]ort/ | display_modes | entry_str "Visual" /[vV]isual/ | entry_rgb "Black" /[bB]lack/ | entry_rgb "White" /[wW]hite/ | entry_str "Options" /[oO]ptions/ | empty | comment
Known values for entries in the Display subsection
let display_modes = [ indent . del /[mM]odes/ "Modes" . label "Modes" . [ label "mode" . sep_spc . quoted_string_val ]+ . eol ]
let domain = Build.key_value_line "domain" Sep.space (store Rx.word)
let dot = Util.del_str "."
Deletes a dot and default to it
Parses /etc/dpkg/dpkg.cfg
let driver = entry_str "Driver" /[dD]river/
let email = [ indent . label "email" . sto_email_addr . comment_or_eol ]
A simple email address entry
let email_addr = /[A-Za-z0-9_\+\.-]+@[A-Za-z0-9_\.-]+/
To be refined
let empty = Util.empty
let empty = Util.empty
let empty = Util.empty
let empty = [ eol ]
Empty line, an eol subnode
let empty = Util.empty
Map empty lines
let empty = IniFile.empty
let empty = Util.empty
let empty = Util.empty
let empty = [ del /[ \t]*\*?[ \t]*\n/ "\n" ]
Map empty lines, including empty asterisk comments
let empty = [ del /[ \t]*#?[ \t]*\n/ "\n" ]
Map empty lines
let empty = Util.empty
let empty = empty_generic /[ \t]*#?[ \t]*/
Map empty lines, including empty comments
let empty = Util.empty
let empty_c_style = empty_generic /[ \t]*((\/\/)|(\/\*[ \t]*\*\/))?[ \t]*/
Map empty lines, including C-style empty comment
let empty_generic (r:regexp) = [ del r "" . del_str "\n" ]
A generic definition of empty Map empty lines, including empty comments
let entries = (empty | comment entry)*
entries are either comments/empty lines or entries
let entries_re = /(
   [oO]ption|[sS]creen|[iI]nput[dD]evice|[dD]river|[sS]ub[sS]ection|[dD]isplay|[iI]dentifier|[vV]ideo[rR]am|[dD]efault[dD]epth|[dD]evice
)/
This is a list of all patterns which have specific handlers, and should therefore not be matched by the generic handler
let entry = [ Util.del_opt_ws "" . key entry_re . Util.del_ws_spc . store /[^# \n\t]+/ . eol ] | comment
let entry = [ access . colon . user_list . (except user_list)? . colon . origin_list . (except origin_list)? . Util.eol ]
A valid entry line Definition:
let entry = [ label "entry" . indent . ( time | schedule ) . sep_spc . user . sep_spc . store Rx.space_in . eol ]
A crontab entry
let entry (
   kw:regexp
) (sep:lens) (comment:lens) = [ key kw . sep . sto_to_comment? . (comment|eol) ] | comment
Generic INI File entry
let entry (kw:regexp) (lns:lens) = Build.key_value_line kw sep lns
A generic entry for lens lns
let entry = nameserver | domain | search | sortlist | options
let entry = [ label "entry" . selectors . sep_tab . [ label "action" . action ] . eol ]
an entry contains selectors and an action
let entry_generic = [ indent . key generic_entry_re . sep_spc . store to_eol . eol ]
An entry without a specific handler.
let entry_int (
   canon:string
) (re:regexp) = [ indent . del re canon . label canon . sep_spc . store int . eol ]
This matches an entry which takes a single integer for an argument
let entry_re = /path|allow|deny/
Regexp for possible entry keyword (path, allow, deny)
let entry_re = (/[A-Za-z][A-Za-z0-9\._-]+/)
Default regexp for entry keyword
let entry_rgb (
   canon:string
) (re:regexp) = [ indent . del re canon . label canon . [ label "red" . sep_spc . store int ] . [ label "green" . sep_spc . store int ] . [ label "blue" . sep_spc . store int ] . eol ]
This matches an entry which takes 3 integers as arguments representing red, green and blue components
let entry_sto (kw:regexp) (val:regexp) = entry kw (store val)
Store a regexp as entry value
let entry_str (
   canon:string
) (re:regexp) = [ indent . del re canon . label canon . sep_spc . quoted_string_val . eol ]
This matches an entry which takes a single quoted string
let entry_xy (
   canon:string
) (re:regexp) = [ indent . del re canon . label canon . [ label "x" . sep_spc . store int ] . [ label "y" . sep_spc . store int ] . eol ]
This matches an entry which takes 2 integers as arguments representing X and Y coordinates
let eol = Util.eol
let eol = Util.eol
let eol = Util.eol
let eol = Util.eol
End of line, inherited from Util.eol
let eol = Util.eol
let eol = del /[ \t]*(#)?[ \t]*\n/ "\n"
let eol = del /[ \t]*\n/ "\n"
let eol = Util.eol
let eol = del /[ \t]*\n/ "\n"
Delete end of line, including optional trailing whitespace
let eol = Util.eol
let except (
   lns:lens
) = [ label "except" . Sep.space . del /[Ee][Xx][Cc][Ee][Pp][Tt]/ "EXCEPT" . Sep.space . lns ]
The except operator makes it possible to write very compact rules.
Parses /etc/exports
Close