chiark / gitweb /
implement coldpluggin
[elogind.git] / load-fragment.c
index 1a334bbc13a5cfe543e646f5cdcb5c031e77851b..0cdaaa204a71d3c81a9f4b7a8e4d66434ffa4ebd 100644 (file)
@@ -647,6 +647,8 @@ static int open_follow(char **filename, FILE **_f, Set *names, char **_id) {
                 if (c++ >= FOLLOW_MAX)
                         return -ELOOP;
 
+                path_kill_slashes(*filename);
+
                 /* Add the file name we are currently looking at to
                  * the names of this unit */
                 name = file_name_from_path(*filename);
@@ -804,12 +806,13 @@ static int load_from_path(Unit *u, const char *path) {
                 if ((r = unit_add_name(u, k)) < 0)
                         goto finish;
 
-                if (id == k)
-                        assert_se(u->meta.id = set_get(u->meta.names, k));
 
+                if (id == k)
+                        unit_choose_id(u, id);
                 free(k);
         }
 
+
         free(u->meta.load_path);
         u->meta.load_path = filename;
         filename = NULL;
@@ -858,10 +861,10 @@ int unit_load_fragment(Unit *u) {
                 /* If syslog or kernel logging is requested, make sure
                  * our own logging daemon is run first. */
 
-                if ((k = unit_add_dependency(u, UNIT_AFTER, u->meta.manager->special_units[SPECIAL_LOGGER_SOCKET])) < 0)
+                if ((k = unit_add_dependency_by_name(u, UNIT_AFTER, SPECIAL_LOGGER_SOCKET)) < 0)
                         return k;
 
-                if ((k = unit_add_dependency(u, UNIT_REQUIRES, u->meta.manager->special_units[SPECIAL_LOGGER_SOCKET])) < 0)
+                if ((k = unit_add_dependency_by_name(u, UNIT_REQUIRES, SPECIAL_LOGGER_SOCKET)) < 0)
                         return k;
         }