summaryrefslogtreecommitdiff
path: root/target.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-01-28 02:44:47 +0100
committerLennart Poettering <lennart@poettering.net>2010-01-28 02:44:47 +0100
commitd46de8a1a249e179687361dcaeba27e1c586253a (patch)
tree42f790e46583f88c557ac33ea67e857654a794a4 /target.c
parent98b5b2986fa1b85fd2d2e80f867f1647b4e4e3b5 (diff)
rework config file load logic
Diffstat (limited to 'target.c')
-rw-r--r--target.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/target.c b/target.c
index 748dfeef1..03f092e35 100644
--- a/target.c
+++ b/target.c
@@ -1,5 +1,7 @@
/*-*- Mode: C; c-basic-offset: 8 -*-*/
+#include <errno.h>
+
#include "unit.h"
#include "target.h"
#include "load-fragment.h"
@@ -15,6 +17,18 @@ static const char* const state_string_table[_TARGET_STATE_MAX] = {
[TARGET_ACTIVE] = "active"
};
+static int target_init(Unit *u) {
+ int r;
+ assert(u);
+
+ /* Make sure this config file actually exists */
+
+ if ((r = unit_load_fragment_and_dropin(u)) <= 0)
+ return r < 0 ? r : -ENOENT;
+
+ return 0;
+}
+
static void target_dump(Unit *u, FILE *f, const char *prefix) {
Target *t = TARGET(u);
@@ -67,7 +81,7 @@ static UnitActiveState target_active_state(Unit *u) {
const UnitVTable target_vtable = {
.suffix = ".target",
- .init = unit_load_fragment_and_dropin,
+ .init = target_init,
.dump = target_dump,