diff options
author | Lennart Poettering <lennart@poettering.net> | 2011-06-28 02:53:15 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2011-06-28 02:53:15 +0200 |
commit | 15e11d81e7c26439f583e1cf67ac3c712430a79e (patch) | |
tree | 3c4986e97840e88e539c72c38fc64398f4bf94d1 /src | |
parent | 21308c654dda82726f634fc695529d3af33e6fb6 (diff) |
unit: when loading symlinked template units, properly add all names on the way to the unit
Diffstat (limited to 'src')
-rw-r--r-- | src/load-fragment.c | 11 | ||||
-rw-r--r-- | src/logind.h | 3 | ||||
-rw-r--r-- | src/unit-name.c | 7 |
3 files changed, 12 insertions, 9 deletions
diff --git a/src/load-fragment.c b/src/load-fragment.c index 56eaed9ab4..352db6b385 100644 --- a/src/load-fragment.c +++ b/src/load-fragment.c @@ -1661,13 +1661,16 @@ static int open_follow(char **filename, FILE **_f, Set *names, char **_final) { * unit name. */ name = file_name_from_path(*filename); - if (unit_name_is_valid(name, false)) { - if (!(id = set_get(names, name))) { + if (unit_name_is_valid(name, true)) { - if (!(id = strdup(name))) + id = set_get(names, name); + if (!id) { + id = strdup(name); + if (!id) return -ENOMEM; - if ((r = set_put(names, id)) < 0) { + r = set_put(names, id); + if (r < 0) { free(id); return r; } diff --git a/src/logind.h b/src/logind.h index be8bb1d389..18dbe11a9f 100644 --- a/src/logind.h +++ b/src/logind.h @@ -37,6 +37,7 @@ * recreate VTs when disallocated * spawn user systemd * direct client API + * add configuration file * D-Bus method: AttachDevices(seat, devices[]); * D-Bus method: SetLinger(user, bool b); * @@ -124,8 +125,6 @@ void manager_gc(Manager *m); int manager_get_idle_hint(Manager *m, dual_timestamp *t); -bool x11_display_is_local(const char *display); - extern const DBusObjectPathVTable bus_manager_vtable; DBusHandlerResult bus_message_filter(DBusConnection *c, DBusMessage *message, void *userdata); diff --git a/src/unit-name.c b/src/unit-name.c index be4e73edcc..6d45576f85 100644 --- a/src/unit-name.c +++ b/src/unit-name.c @@ -272,9 +272,10 @@ char *unit_name_unescape(const char *f) { else if (*f == '\\') { int a, b; - if (f[1] != 'x' || (a = unhexchar(f[2])) < 0 || - (b = unhexchar(f[3])) < 0) { - /* Invalid escape code, let's take it literal then */ + if (f[1] != 'x' || + (a = unhexchar(f[2])) < 0 || + (b = unhexchar(f[3])) < 0) { + /* Invalid escape code, let's take it literal then */ *(t++) = '\\'; } else { *(t++) = (char) ((a << 4) | b); |