Blame SOURCES/0026-Systemd-allow-quoted-Environment-key-value-pairs.patch

ab36df
From ff36da46e07b819cf178f66c284a2672f547b6cb Mon Sep 17 00:00:00 2001
ab36df
From: Dominic Cleal <dcleal@redhat.com>
ab36df
Date: Wed, 9 Jul 2014 09:22:44 +0100
ab36df
Subject: [PATCH] Systemd: allow quoted Environment key=value pairs
ab36df
ab36df
Fixes RHBZ#1100547
ab36df
ab36df
(cherry picked from commit 5226ae7d162691c20e00096ae8023e74b912ace0)
ab36df
ab36df
Conflicts:
ab36df
	NEWS
ab36df
---
ab36df
 lenses/systemd.aug            | 9 +++++++--
ab36df
 lenses/tests/test_systemd.aug | 6 +++++-
ab36df
 2 files changed, 12 insertions(+), 3 deletions(-)
ab36df
ab36df
diff --git a/lenses/systemd.aug b/lenses/systemd.aug
ab36df
index c7f9f9d..370945b 100644
ab36df
--- a/lenses/systemd.aug
ab36df
+++ b/lenses/systemd.aug
ab36df
@@ -125,8 +125,13 @@ let entry_command =
ab36df
 (* View: entry_env
ab36df
    Entry that takes a space separated set of ENV=value key/value pairs *)
ab36df
 let entry_env =
ab36df
-     let envkv = [ key env_key . Util.del_str "=" . ( sto_value )? ]
ab36df
-  in entry_fn entry_env_kw ( Build.opt_list envkv value_sep )
ab36df
+     let envkv (env_val:lens) = key env_key . Util.del_str "=" . env_val
ab36df
+     (* bare has no spaces, and is optionally quoted *)
ab36df
+  in let bare = Quote.do_quote_opt (envkv (store /[^;#'" \t\n]*[^;#'" \t\n\\]/)?)
ab36df
+     (* quoted has at least one space, and must be quoted *)
ab36df
+  in let quoted = Quote.do_quote (envkv (store /[^;#"'\n]*[ \t]+[^;#"'\n]*/))
ab36df
+  in let envkv_quoted = [ bare ] | [ quoted ]
ab36df
+  in entry_fn entry_env_kw ( Build.opt_list envkv_quoted value_sep )
ab36df
 
ab36df
 
ab36df
 (************************************************************************
ab36df
diff --git a/lenses/tests/test_systemd.aug b/lenses/tests/test_systemd.aug
ab36df
index a531230..b1574e1 100644
ab36df
--- a/lenses/tests/test_systemd.aug
ab36df
+++ b/lenses/tests/test_systemd.aug
ab36df
@@ -203,6 +203,7 @@ Environment=LANG=C FOO=BAR
ab36df
 Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=
ab36df
 Environment=LANG=C\
ab36df
 FOO=BAR
ab36df
+Environment=\"LANG=foo bar\" FOO=BAR
ab36df
 "
ab36df
 (* Test: Systemd.lns *)
ab36df
 test Systemd.lns get env =
ab36df
@@ -234,6 +235,10 @@ test Systemd.lns get env =
ab36df
       { "LANG" = "C" }
ab36df
       { "FOO" = "BAR" }
ab36df
     }
ab36df
+    { "Environment"
ab36df
+      { "LANG" = "foo bar" }
ab36df
+      { "FOO" = "BAR" }
ab36df
+    }
ab36df
   }
ab36df
 
ab36df
 (* Variable: unit *)
ab36df
@@ -302,4 +307,3 @@ test Systemd.entry_command get "ExecStart=/usr/bin/find /var/lib/sudo -exec /usr
ab36df
       { "7" = "\073" }
ab36df
     }
ab36df
   }
ab36df
-