systemd-systemctl: parse unit files more correctly
authorEnrico Scholz <enrico.scholz@sigma-chemnitz.de>
Wed, 24 Apr 2013 11:37:21 +0000 (13:37 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 29 Apr 2013 13:45:06 +0000 (14:45 +0100)
Old script failed to parse unit files containing comments like

| #Alias=some-alias

or whitespaces like

| WantedBy = foo

correctly.  Patch changes script to interpret keywords only when they
are at the beginning of a line and ignores whitespaces before the '='.

(From OE-Core rev: 443e75ee2c0e9a62df997aef24855bce54d39177)

Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-core/systemd/systemd-systemctl/systemctl

index d71c7ed..8abbdf6 100755 (executable)
@@ -78,8 +78,7 @@ for service in $services; do
        echo "Found $service in $service_file"
 
        # create the required symbolic links
-       wanted_by=$(grep WantedBy $ROOT/$service_file \
-                       | sed 's,WantedBy=,,g' \
+       wanted_by=$(sed '/^WantedBy[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \
                        | tr ',' '\n' \
                        | grep '\(\.target$\)\|\(\.service$\)')
 
@@ -97,8 +96,7 @@ for service in $services; do
        done
 
        # create the required symbolic 'Alias' links
-       alias=$(grep Alias $ROOT/$service_file \
-                       | sed 's,Alias=,,g' \
+       alias=$(sed '/^Alias[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \
                        | tr ',' '\n' \
                        | grep '\.service$')
 
@@ -114,8 +112,7 @@ for service in $services; do
        done
 
        # call us for the other required scripts
-       also=$(grep Also $ROOT/$service_file \
-                  | sed 's,Also=,,g' \
+       also=$(sed '/^Also[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \
                   | tr ',' '\n')
        for a in $also; do
                echo "Also=$a found in $service"