| K | |
| Kdump | |
| Keepalived | |
| kernel | |
| kernel_args, Grub | |
| kernel_parameters, Erlang | |
| key_comment, Authorized_Keys | |
| key_opt_rtable_line, Ntpd | |
| key_opt_value_line, BootConf | |
| key_opt_weight_rtable_line, Ntpd | |
| key_options, Authorized_Keys | |
| key_re | |
| key_type, Authorized_Keys | |
| key_value | |
| key_value_line | |
| key_value_line_comment | |
| key_ws_value | |
| keys | |
| keyword, Ntpd | |
| Keywords | |
| knode, Test_Xml | |
| Known_Hosts | |
| Koji | |
| kv | |
| kw_arg, Grub | |
| kw_boot_arg, Grub | |
| kw_menu_arg, Grub | |
| kw_pres, Grub | |
| kw_word, Xymon_Alerting | |
| kw_word_filters_opt, Xymon_Alerting | 
Core Erlang kernel app configuration
let kernel = application "kernel" kernel_parameters 
let kernel = [ command /kernel\$?/ "\t" . (spc . ([switch "type" . eq . store /[a-z]+/] |[switch "no-mem-option"]))* . spc . kernel_args ] 
Parse the file name and args on a kernel or module line.
let kernel_args = let arg = /[A-Za-z0-9_.$-]+/ - /type|no-mem-option/ in store /(\([a-z0-9,]+\))?\/[^ \t\n]*/ . (spc . multiboot_arg)? . (spc . [ key arg . (eq. store /([^ \t\n])*/)?])* . eol 
Config parameters accepted for kernel app
let kernel_parameters = value "browser_cmd" path | value "dist_auto_connect" (store /never|once/) | value "error_logger" (store /tty|false|silent/) | value "net_setuptime" integer | value "net_ticktime" integer | value "shutdown_timeout" integer | value "sync_nodes_timeout" integer | value "start_dist_ac" boolean | value "start_boot_server" boolean | value "start_disk_log" boolean | value "start_pg2" boolean | value "start_timer" boolean 
let key_comment = [ label "comment" . store Rx.space_in ] 
A subnode with a keyword, an optional routing table id and an end of line.
let key_opt_rtable_line (kw:regexp) (sto:lens) = let rtable = [ Util.del_str "rtable" . space . label "rtable" . store rtable_re ] in [ key kw . space . sto . (space . rtable)? . eol ] 
A subnode with a keyword, an optional part consisting of a separator and a storing lens, and an end of line
let key_opt_value_line (kw:regexp) (sto:lens) = [ key kw . (space . sto)? . eol ] 
A subnode with a keyword, an optional routing table id, an optional weight-value and an end of line.
let key_opt_weight_rtable_line (kw:regexp) (sto:lens) = let rtable = [ Util.del_str "rtable" . space . label "rtable" . store rtable_re ] in let weight = [ Util.del_str "weight" . space . label "weight" . store weight_re ] in [ key kw . space . sto . (space . weight)? . (space . rtable)? . eol ] 
A list of key options
let key_options = [ label "options" . Build.opt_list option Sep.comma ] 
let key_re = /\$?[A-Za-z0-9_.-]+/ 
let key_re = /[^=# \t\n]+/ 
let key_type = let key_type_re = /ecdsa-sha2-nistp[0-9]+/ | /ssh-[a-z0-9]+/ in [ label "type" . store key_type_re ] 
Same as key_value_line, but does not end with an end of line
let key_value (kw: regexp) (sep:lens) (sto:lens) = [ key kw . sep . sto ] 
let key_value = Build.key_value Rx.word Sep.equal (store Rx.word) 
A subnode with a keyword, a separator and a storing lens, and an end of line
let key_value_line (kw:regexp) (sep:lens) (sto:lens) = [ key kw . sep . sto . eol ] 
let key_value_line = Build.key_value_line Rx.word Sep.equal (store Rx.word) 
Same as key_value_line, but allows to have a comment in the end of a line and an end of line
let key_value_line_comment (kw:regexp) (sep:lens) (sto:lens) (comment:lens) = [ key kw . sep . sto . (eol|comment) ] 
let key_value_line_comment = Build.key_value_line_comment Rx.word Sep.equal (store Rx.word) Util.comment 
Store a key/value pair where key and value are separated by whitespace and the value goes to the end of the line.
let key_ws_value (kw:regexp) = key_value_line kw Util.del_ws_spc (store Rx.space_in) 
let key_ws_value = Build.key_ws_value Rx.word 
Match any possible key except commands and block names.
let keys = Rx.word - (commands | block_names) 
let keys = "# Example keys, one of each type # ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDpWrKYsEsVUyuwMN4ReBN/TMGsaUWzDKDz/uQr6MlNNM95MDK/BPyJ+DiBiNMFVLpRt3gH3eCJBLJKMuUDaTNy5uym2zNgAaAIVct6M2GHI68W3iY3Ja8/MaRPbyTpMh1O74S+McpAW1SGL2YzFchYMjTnu/kOD3lxiWNiDLvdLFZu0wPOi7CYG37VXR4Thb0cC92zqnCjaP1TwfhpEYUZoowElYkoV2vG+19O6cRm/zduYcf8hmegZKB4GFUJTtZ2gZ18XJDSQd0ykK3KPt/+bKskdrtfiOwSZAmUZmd2YuAlY6+CBn1T3UBdQntueukd0z1xhd6SX7Bl8+qyqLQ3 user@example ssh-dsa AAAA user@example ecdsa-sha2-nistp256 AAAA user@example ssh-ed25519 AAAA user@example # Example comments ssh-dsa AAAA ssh-dsa AAAA user@example " 
let keyword = listen | server | servers | sensor 
A simple flag function
let knode (r:regexp) = [ key r ] 
let kv = [ indent . key key_re . del sep " " . store value_re . eol ] 
options with only one arg can be directly mapped to key = value
let kv = Build.key_value_line_comment simple_keys space (store no_space) comment 
A key-value pair, supporting flags and empty values
let kv = [ key /[A-Za-z0-9:_.-]+/ . (Sep.equal . store (Rx.space_in?))? . Util.eol ] 
let kw_arg (kw:regexp) (indent:string) (dflt_sep:string) = [ command kw indent . value_sep dflt_sep . value_to_eol . eol ] 
let kw_boot_arg (kw:regexp) = kw_arg kw "\t" " " 
let kw_menu_arg (kw:regexp) = kw_arg kw "" " " 
let kw_pres (kw:string) = [ opt_ws . key kw . del_to_eol . eol ] 
A key=value value
let kw_word (kw:regexp) = Build.key_value kw equal store_word 
A kw_word entry with optional filters
let kw_word_filters_opt (kw:string) = [ key kw . equal . store_word . filters_opt ]