[augeas-devel] [PATCH] Shellvars: one more cornercase with double quoted strings

David Lutterkort lutter at redhat.com
Sat Aug 16 04:34:53 UTC 2008


2 files changed, 6 insertions(+), 3 deletions(-)
lenses/shellvars.aug            |    6 +++---
lenses/tests/test_shellvars.aug |    3 +++


# HG changeset patch
# User David Lutterkort <dlutter at redhat.com>
# Date 1218861229 25200
# Node ID 4b9b71f3f91d5ab6e4c0ae3ffd68397c2ecdc5d4
# Parent  e51031ce0bd562c9a2a9c41948d7a01390ba5479
Shellvars: one more cornercase with double quoted strings

diff -r e51031ce0bd5 -r 4b9b71f3f91d lenses/shellvars.aug
--- a/lenses/shellvars.aug	Fri Aug 15 18:19:27 2008 -0700
+++ b/lenses/shellvars.aug	Fri Aug 15 21:33:49 2008 -0700
@@ -8,15 +8,15 @@
   let eq = Util.del_str "="
   let comment = [ del /(#.*)?[ \t]*\n/ "# \n" ]
 
-  let char  = /[^() '"\t\n]/           (* " Emacs, relax *)
-  let dquot = /\"([^"\n]|\\\\\")*\"/   (* " Emacs, relax *)
+  let char  = /[^() '"\t\n]|\\\\"/   
+  let dquot = /"([^"\\\n]|\\\\.)*"/                    (* " Emacs, relax *)
   let squot = /'[^'\n]*'/
 
   (* Array values of the form '(val1 val2 val3)'. We do not handle empty *)
   (* arrays here because of typechecking headaches. Instead, they are    *)
   (* treated as a simple value                                           *)
   let array =
-    let array_value = store (char+ | dquot | squot) in
+    let array_value = store (char+ | dquot) in
     del "(" "(" . counter "values" .
       [ seq "values" . array_value . del /[ \t]+/ " " ] * .
       [ seq "values" . array_value ]
diff -r e51031ce0bd5 -r 4b9b71f3f91d lenses/tests/test_shellvars.aug
--- a/lenses/tests/test_shellvars.aug	Fri Aug 15 18:19:27 2008 -0700
+++ b/lenses/tests/test_shellvars.aug	Fri Aug 15 21:33:49 2008 -0700
@@ -63,6 +63,9 @@
   test Shellvars.lns get "var=\"\\\"\"\n" = 
     { "var" = "\"\\\"\"" }
 
+  test Shellvars.lns get "var=\\\"\n" =
+    { "var" = "\\\"" }
+
   test Shellvars.lns get "var=ab#c\n" = 
     { "var" = "ab#c" }
 




More information about the augeas-devel mailing list