1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-08 08:58:27 +03:00

core: get rid of condition.c and move the remaining call into util.c

That way only one file with condition code remaining, in src/shared/,
rather than src/core/.

Next step: dropping the "-util" suffix from condition-util.[ch].
This commit is contained in:
Lennart Poettering 2014-11-06 14:09:51 +01:00
parent c073a0c4a5
commit 493657337a
7 changed files with 52 additions and 100 deletions

View File

@ -1132,8 +1132,6 @@ libsystemd_core_la_SOURCES = \
src/core/mount-setup.h \
src/core/loopback-setup.h \
src/core/loopback-setup.c \
src/core/condition.c \
src/core/condition.h \
src/core/namespace.c \
src/core/namespace.h \
src/core/build.h \

View File

@ -1,67 +0,0 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
/***
This file is part of systemd.
Copyright 2010 Lennart Poettering
systemd is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
#include "condition.h"
#include "unit.h"
bool condition_test_list(const char *unit, Condition *first, const char *(*to_string)(ConditionType t)) {
Condition *c;
int triggered = -1;
/* If the condition list is empty, then it is true */
if (!first)
return true;
/* Otherwise, if all of the non-trigger conditions apply and
* if any of the trigger conditions apply (unless there are
* none) we return true */
LIST_FOREACH(conditions, c, first) {
int r;
r = condition_test(c);
if (r < 0)
log_warning_unit(unit,
"Couldn't determine result for %s=%s%s%s for %s, assuming failed: %s",
to_string(c->type),
c->trigger ? "|" : "",
c->negate ? "!" : "",
c->parameter,
unit,
strerror(-r));
else
log_debug_unit(unit,
"%s=%s%s%s %s for %s.",
to_string(c->type),
c->trigger ? "|" : "",
c->negate ? "!" : "",
c->parameter,
condition_result_to_string(c->result),
unit);
if (!c->trigger && r <= 0)
return false;
if (c->trigger && triggered <= 0)
triggered = r > 0;
}
return triggered != 0;
}

View File

@ -1,26 +0,0 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
#pragma once
/***
This file is part of systemd.
Copyright 2010 Lennart Poettering
systemd is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
#include "condition-util.h"
bool condition_test_list(const char *unit, Condition *c, const char *(*to_string)(ConditionType t));

View File

@ -1245,11 +1245,58 @@ fail:
return r;
}
static bool unit_condition_test_list(Unit *u, Condition *first, const char *(*to_string)(ConditionType t)) {
Condition *c;
int triggered = -1;
assert(u);
assert(to_string);
/* If the condition list is empty, then it is true */
if (!first)
return true;
/* Otherwise, if all of the non-trigger conditions apply and
* if any of the trigger conditions apply (unless there are
* none) we return true */
LIST_FOREACH(conditions, c, first) {
int r;
r = condition_test(c);
if (r < 0)
log_warning_unit(u->id,
"Couldn't determine result for %s=%s%s%s for %s, assuming failed: %s",
to_string(c->type),
c->trigger ? "|" : "",
c->negate ? "!" : "",
c->parameter,
u->id,
strerror(-r));
else
log_debug_unit(u->id,
"%s=%s%s%s %s for %s.",
to_string(c->type),
c->trigger ? "|" : "",
c->negate ? "!" : "",
c->parameter,
condition_result_to_string(c->result),
u->id);
if (!c->trigger && r <= 0)
return false;
if (c->trigger && triggered <= 0)
triggered = r > 0;
}
return triggered != 0;
}
static bool unit_condition_test(Unit *u) {
assert(u);
dual_timestamp_get(&u->condition_timestamp);
u->condition_result = condition_test_list(u->id, u->conditions, condition_type_to_string);
u->condition_result = unit_condition_test_list(u, u->conditions, condition_type_to_string);
return u->condition_result;
}
@ -1258,7 +1305,7 @@ static bool unit_assert_test(Unit *u) {
assert(u);
dual_timestamp_get(&u->assert_timestamp);
u->assert_result = condition_test_list(u->id, u->asserts, assert_type_to_string);
u->assert_result = unit_condition_test_list(u, u->asserts, assert_type_to_string);
return u->assert_result;
}

View File

@ -38,7 +38,7 @@ typedef struct UnitStatusMessageFormats UnitStatusMessageFormats;
#include "socket-util.h"
#include "execute.h"
#include "cgroup.h"
#include "condition.h"
#include "condition-util.h"
#include "install.h"
#include "unit-name.h"
#include "failure-action.h"

View File

@ -32,7 +32,7 @@
#include "utf8.h"
#include "util.h"
#include "conf-parser.h"
#include "condition.h"
#include "condition-util.h"
#include "network-internal.h"
const char *net_get_name(struct udev_device *device) {

View File

@ -20,7 +20,7 @@
#include "automount.h"
#include "cgroup.h"
#include "compress.h"
#include "condition.h"
#include "condition-util.h"
#include "device.h"
#include "execute.h"
#include "exit-status.h"