aboutsummaryrefslogtreecommitdiffstats
path: root/main/augeas/0007-Shellvars-Allow-almost-any-command.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/augeas/0007-Shellvars-Allow-almost-any-command.patch')
-rw-r--r--main/augeas/0007-Shellvars-Allow-almost-any-command.patch82
1 files changed, 82 insertions, 0 deletions
diff --git a/main/augeas/0007-Shellvars-Allow-almost-any-command.patch b/main/augeas/0007-Shellvars-Allow-almost-any-command.patch
new file mode 100644
index 0000000000..3775fc5927
--- /dev/null
+++ b/main/augeas/0007-Shellvars-Allow-almost-any-command.patch
@@ -0,0 +1,82 @@
+From 1fbc9768290383ee6de28416ab033ec07831ae95 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= <raphink@gmail.com>
+Date: Thu, 24 Apr 2014 16:10:50 +0200
+Subject: [PATCH 07/10] Shellvars: Allow (almost) any command
+
+ Note: this may have edge effects in recursive sublenses
+ that augparse cannot check.
+---
+ NEWS | 1 +
+ lenses/shellvars.aug | 7 +++++++
+ lenses/tests/test_shellvars.aug | 11 +++++++++++
+ 3 files changed, 19 insertions(+)
+
+diff --git a/NEWS b/NEWS
+index 73b5332..4501226 100644
+--- a/NEWS
++++ b/NEWS
+@@ -57,6 +57,7 @@
+ conditions (GH issue #118)
+ Support $(( .. )) arithmetic expansion in variable
+ assignment, RHBZ#1100550
++ Allow (almost) any command
+ * Simplevars: Support flags and empty values
+ * Sshd: Allow all types of entries in Match groups (GH issue #75)
+ * Sssd: Allow ; for comments
+diff --git a/lenses/shellvars.aug b/lenses/shellvars.aug
+index 0c25ff9..3b98c23 100644
+--- a/lenses/shellvars.aug
++++ b/lenses/shellvars.aug
+@@ -94,6 +94,11 @@ module Shellvars =
+ . Util.del_str "return"
+ . ( Util.del_ws_spc . store Rx.integer )?
+
++ let command =
++ let reserved_key = /exit|shift|return|ulimit|unset|export|source|\.|if|for|select|while|until|then|else|fi|done|case/
++ in let word = /[A-Za-z0-9_.-\/]+/
++ in Util.indent . label "@command" . store (word - reserved_key)
++ . [ Sep.space . label "@arg" . sto_to_semicol]?
+
+ (************************************************************************
+ * Group: CONDITIONALS AND LOOPS
+@@ -158,6 +163,7 @@ module Shellvars =
+ | entry_eol_item bare_export
+ | entry_eol_item builtin
+ | entry_eol_item return
++ | entry_eol_item command
+
+ let entry_noeol =
+ let entry_item (item:lens) = [ item ] in
+@@ -167,6 +173,7 @@ module Shellvars =
+ | entry_item bare_export
+ | entry_item builtin
+ | entry_item return
++ | entry_item command
+
+ let rec rec_entry =
+ let entry = comment | entry_eol | rec_entry in
+diff --git a/lenses/tests/test_shellvars.aug b/lenses/tests/test_shellvars.aug
+index ee23698..f955b3e 100644
+--- a/lenses/tests/test_shellvars.aug
++++ b/lenses/tests/test_shellvars.aug
+@@ -524,6 +524,17 @@ esac\n" =
+ }
+ }
+
++(* Test: Shellvars.lns
++ Parse (almost) any command *)
++test Shellvars.lns get "echo foobar 'and this is baz'
++/usr/local/bin/myscript.sh with args\n" =
++ { "@command" = "echo"
++ { "@arg" = "foobar 'and this is baz'" }
++ }
++ { "@command" = "/usr/local/bin/myscript.sh"
++ { "@arg" = "with args" }
++ }
++
+ (* Local Variables: *)
+ (* mode: caml *)
+ (* End: *)
+--
+1.8.3.1
+