summaryrefslogtreecommitdiff
path: root/src/shared/condition.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-10-24 22:53:07 -0400
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-10-26 20:12:52 -0400
commit0809d7740c5cf988e049781b4b80e14a3bbefb70 (patch)
tree7380162be2ded3f787d118cb27fe2b45e90986b0 /src/shared/condition.c
parentd09f968657f379025c30c02cff7047b642b0866a (diff)
downloadsystemd-0809d7740c5cf988e049781b4b80e14a3bbefb70.tar.gz
condition: simplify condition_test_virtualization
Rewrite the function to be slightly simpler. In particular, if a specific match is found (like ConditionVirtualization=yes), simply return an answer immediately, instead of relying that "yes" will not be matched by any of the virtualization names below. No functional change.
Diffstat (limited to 'src/shared/condition.c')
-rw-r--r--src/shared/condition.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/shared/condition.c b/src/shared/condition.c
index 376606e004..17b80d9e0c 100644
--- a/src/shared/condition.c
+++ b/src/shared/condition.c
@@ -155,19 +155,15 @@ static int condition_test_virtualization(Condition *c) {
/* First, compare with yes/no */
b = parse_boolean(c->parameter);
-
- if (v > 0 && b > 0)
- return true;
-
- if (v == 0 && b == 0)
- return true;
+ if (b >= 0)
+ return b == !!v;
/* Then, compare categorization */
- if (VIRTUALIZATION_IS_VM(v) && streq(c->parameter, "vm"))
- return true;
+ if (streq(c->parameter, "vm"))
+ return VIRTUALIZATION_IS_VM(v);
- if (VIRTUALIZATION_IS_CONTAINER(v) && streq(c->parameter, "container"))
- return true;
+ if (streq(c->parameter, "container"))
+ return VIRTUALIZATION_IS_CONTAINER(v);
/* Finally compare id */
return v != VIRTUALIZATION_NONE && streq(c->parameter, virtualization_to_string(v));