summaryrefslogtreecommitdiff
path: root/src/unit.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-10-06 02:33:40 +0200
committerLennart Poettering <lennart@poettering.net>2010-10-06 02:33:40 +0200
commit71fad6751434f06485a744d41be2d807303c1184 (patch)
tree27723f8bbab9a2a808e0beab10c6e2605f74f1de /src/unit.c
parent647f1fafb5f456b80bb799d07d345ce7fd2308ee (diff)
systemctl: require correctly formed unit names when enabling units
Diffstat (limited to 'src/unit.c')
-rw-r--r--src/unit.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/unit.c b/src/unit.c
index fefa0eb516..71ef2a706d 100644
--- a/src/unit.c
+++ b/src/unit.c
@@ -2207,6 +2207,28 @@ bool unit_pending_active(Unit *u) {
return false;
}
+UnitType unit_name_to_type(const char *n) {
+ UnitType t;
+
+ assert(n);
+
+ for (t = 0; t < _UNIT_TYPE_MAX; t++)
+ if (endswith(n, unit_vtable[t]->suffix))
+ return t;
+
+ return _UNIT_TYPE_INVALID;
+}
+
+bool unit_name_is_valid(const char *n) {
+ UnitType t;
+
+ t = unit_name_to_type(n);
+ if (t < 0 || t >= _UNIT_TYPE_MAX)
+ return false;
+
+ return unit_name_is_valid_no_type(n);
+}
+
static const char* const unit_load_state_table[_UNIT_LOAD_STATE_MAX] = {
[UNIT_STUB] = "stub",
[UNIT_LOADED] = "loaded",