systemctl: automatically turn paths and unescaped unit names into proper unit names

This makes sure that

  systemctl status /home

is implicitly translated to:

  systemctl status /home.mount

Similar, /dev/foobar becomes dev-foobar.device.

Also, all characters that cannot be part of a unit name are implicitly
escaped.
This commit is contained in:
Lennart Poettering
2012-06-22 13:08:48 +02:00
parent 03658d4fd6
commit b0193f1c1f
9 changed files with 317 additions and 112 deletions
+4 -2
View File
@@ -144,7 +144,8 @@ static int device_add_escaped_name(Unit *u, const char *dn) {
assert(dn);
assert(dn[0] == '/');
if (!(e = unit_name_from_path(dn, ".device")))
e = unit_name_from_path(dn, ".device");
if (!e)
return -ENOMEM;
r = unit_add_name(u, e);
@@ -165,7 +166,8 @@ static int device_find_escape_name(Manager *m, const char *dn, Unit **_u) {
assert(dn[0] == '/');
assert(_u);
if (!(e = unit_name_from_path(dn, ".device")))
e = unit_name_from_path(dn, ".device");
if (!e)
return -ENOMEM;
u = manager_get_unit(m, e);