summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-06-28 02:53:15 +0200
committerLennart Poettering <lennart@poettering.net>2011-06-28 02:53:15 +0200
commit15e11d81e7c26439f583e1cf67ac3c712430a79e (patch)
tree3c4986e97840e88e539c72c38fc64398f4bf94d1 /src
parent21308c654dda82726f634fc695529d3af33e6fb6 (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.c11
-rw-r--r--src/logind.h3
-rw-r--r--src/unit-name.c7
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);