The current sed matching mixes up common-prefix matching;
e.g. "-q-lbaas,q-lbaasv2" is changed into just "v2"
This is more verbose, but I think more reliable. See also
Ib50f782824f89ae4eb9787f11d42416704babd90.
Change-Id: I3faad0841834e24acc811c05015625cf7f848b19
... | ... |
@@ -1621,14 +1621,38 @@ function disable_all_services { |
1621 | 1621 |
# Uses global ``ENABLED_SERVICES`` |
1622 | 1622 |
# disable_negated_services |
1623 | 1623 |
function disable_negated_services { |
1624 |
- local tmpsvcs="${ENABLED_SERVICES}" |
|
1624 |
+ local to_remove="" |
|
1625 |
+ local remaining="" |
|
1626 |
+ local enabled="" |
|
1625 | 1627 |
local service |
1626 |
- for service in ${tmpsvcs//,/ }; do |
|
1628 |
+ |
|
1629 |
+ # build up list of services that should be removed; i.e. they |
|
1630 |
+ # begin with "-" |
|
1631 |
+ for service in ${ENABLED_SERVICES//,/ }; do |
|
1627 | 1632 |
if [[ ${service} == -* ]]; then |
1628 |
- tmpsvcs=$(echo ${tmpsvcs}|sed -r "s/(,)?(-)?${service#-}(,)?/,/g") |
|
1633 |
+ to_remove+=",${service#-}" |
|
1634 |
+ else |
|
1635 |
+ remaining+=",${service}" |
|
1629 | 1636 |
fi |
1630 | 1637 |
done |
1631 |
- ENABLED_SERVICES=$(_cleanup_service_list "$tmpsvcs") |
|
1638 |
+ |
|
1639 |
+ # go through the service list. if this service appears in the "to |
|
1640 |
+ # be removed" list, drop it |
|
1641 |
+ for service in ${remaining//,/ }; do |
|
1642 |
+ local remove |
|
1643 |
+ local add=1 |
|
1644 |
+ for remove in ${to_remove//,/ }; do |
|
1645 |
+ if [[ ${remove} == ${service} ]]; then |
|
1646 |
+ add=0 |
|
1647 |
+ break |
|
1648 |
+ fi |
|
1649 |
+ done |
|
1650 |
+ if [[ $add == 1 ]]; then |
|
1651 |
+ enabled="${enabled},$service" |
|
1652 |
+ fi |
|
1653 |
+ done |
|
1654 |
+ |
|
1655 |
+ ENABLED_SERVICES=$(_cleanup_service_list "$enabled") |
|
1632 | 1656 |
} |
1633 | 1657 |
|
1634 | 1658 |
# disable_service() removes the services passed as argument to the |
... | ... |
@@ -130,7 +130,15 @@ test_disable_negated_services 'a,-a' '' |
130 | 130 |
test_disable_negated_services 'b,a,-a' 'b' |
131 | 131 |
test_disable_negated_services 'a,b,-a' 'b' |
132 | 132 |
test_disable_negated_services 'a,-a,b' 'b' |
133 |
- |
|
133 |
+test_disable_negated_services 'a,aa,-a' 'aa' |
|
134 |
+test_disable_negated_services 'aa,-a' 'aa' |
|
135 |
+test_disable_negated_services 'a_a, -a_a' '' |
|
136 |
+test_disable_negated_services 'a-b, -a-b' '' |
|
137 |
+test_disable_negated_services 'a-b, b, -a-b' 'b' |
|
138 |
+test_disable_negated_services 'a,-a,av2,b' 'av2,b' |
|
139 |
+test_disable_negated_services 'a,aa,-a' 'aa' |
|
140 |
+test_disable_negated_services 'a,av2,-a,a' 'av2' |
|
141 |
+test_disable_negated_services 'a,-a,av2' 'av2' |
|
134 | 142 |
|
135 | 143 |
echo "Testing is_package_installed()" |
136 | 144 |
|