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