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:
parent
c073a0c4a5
commit
493657337a
@ -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 \
|
||||
|
@ -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;
|
||||
}
|
@ -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));
|
@ -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;
|
||||
}
|
||||
|
@ -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"
|
||||
|
@ -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) {
|
||||
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user