From 017813d04b6f0e51130989a65cf13aa66df59270 Mon Sep 17 00:00:00 2001 From: Michal Filka Date: Wed, 18 Apr 2012 14:05:18 +0200 Subject: [PATCH 1/2] patch for shellvars which accepts values in form ""''"" and so on (concatenation) --- lenses/shellvars.aug | 2 +- lenses/tests/test_shellvars.aug | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lenses/shellvars.aug b/lenses/shellvars.aug index 810a4016f..e89abd004 100644 --- a/lenses/shellvars.aug +++ b/lenses/shellvars.aug @@ -50,7 +50,7 @@ module Shellvars = (* but fairly close. *) let simple_value = let empty_array = /\([ \t]*\)/ in - store (char* | dquot | squot | bquot | dollar_assign | empty_array) + store (char* | (dquot | squot)+ | bquot | dollar_assign | empty_array) let export = [ key "export" . Util.del_ws_spc ] let kv = [ Util.indent . export? . key key_re diff --git a/lenses/tests/test_shellvars.aug b/lenses/tests/test_shellvars.aug index 22ed581d5..ccdc7554f 100644 --- a/lenses/tests/test_shellvars.aug +++ b/lenses/tests/test_shellvars.aug @@ -81,6 +81,9 @@ unset ONBOOT # We do not want this var test Shellvars.lns get "var=\"ab#c\"\n" = { "var" = "\"ab#c\"" } + test Shellvars.lns get "ESSID='Joe'\"'\"'s net'\n" = + { "ESSID" = "'Joe'\"'\"'s net'" } + (* For some reason, `` conflicts with comment_eol *) test Shellvars.lns get "var=`ab#c`\n" = { "var" = "`ab" From cb65a912a2186d387c642d14409941556b285f20 Mon Sep 17 00:00:00 2001 From: Michal Filka Date: Thu, 31 May 2012 10:26:15 +0200 Subject: [PATCH 2/2] made xinetd.aug case insensitive on attribute names --- lenses/tests/test_xinetd.aug | 6 +++++- lenses/xinetd.aug | 23 ++++++----------------- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/lenses/tests/test_xinetd.aug b/lenses/tests/test_xinetd.aug index d728d7364..aaaeec0a0 100644 --- a/lenses/tests/test_xinetd.aug +++ b/lenses/tests/test_xinetd.aug @@ -21,6 +21,7 @@ service cvspserver server_args = -f --allow-root=/var/cvs pserver # bind = 127.0.0.1 log_on_failure += HOST + FLAGS = IPv6 IPv4 } " @@ -60,7 +61,10 @@ test Xinetd.lns get cvs = { "value" = "--allow-root=/var/cvs" } { "value" = "pserver" } } { "#comment" = "bind = 127.0.0.1" } - { "log_on_failure" { "add" } { "value" = "HOST" } } } + { "log_on_failure" { "add" } { "value" = "HOST" } } + { "FLAGS" + { "value" = "IPv6" } + { "value" = "IPv4" } } } (* Switch the '+=' to a simple '=' *) test Xinetd.lns put lst_add after rm "/service/log_on_failure/add" = diff --git a/lenses/xinetd.aug b/lenses/xinetd.aug index c9849cebb..bb018d2b1 100644 --- a/lenses/xinetd.aug +++ b/lenses/xinetd.aug @@ -44,26 +44,15 @@ module Xinetd = * causes the type checker to work _very_ hard. *) 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") + 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/i) (* redirect and cps aren't really lists, they take exactly two values *) - |attr_lst_eq ("server_args" | "log_type" | "access_times" | "type" - | "flags" | "redirect" | "cps") - |attr_lst_op ( "log_on_success" | "log_on_failure"| "only_from" - | "no_access" | "env" | "passenv") + |attr_lst_eq (/server_args|log_type|access_times|type|flags|redirect|cps/i) + |attr_lst_op (/log_on_success|log_on_failure|only_from|no_access|env|passenv/i) let default_attr = - attr_one ( "instances" | "banner" | "bind" | "interface" | "per_source" - | "groups" | "banner_success" | "banner_fail" | "max_load" - | "v6only" | "umask" | "mdns") - |attr_lst_eq "cps" (* really only two values, not a whole list *) - |attr_lst_op ( "log_type" | "log_on_success" | "log_on_failure" | "disabled" - | "no_access" | "only_from" | "passenv" | "enabled" ) + attr_one (/instances|banner|bind|interface|per_source|groups|banner_success|banner_fail|max_load|v6only|umask|mdns/i) + |attr_lst_eq /cps/i (* really only two values, not a whole list *) + |attr_lst_op (/log_type|log_on_success|log_on_failure|disabled|no_access|only_from|passenv|enabled/i) (* View: body * Note: