+ SET_FOREACH(t, u->meta.names, i) {
+ char *path;
+ DIR *d;
+ struct dirent *de;
+ char **p;
+
+ STRV_FOREACH(p, u->meta.manager->unit_path) {
+
+ if (asprintf(&path, "%s/%s.wants", *p, t) < 0)
+ return -ENOMEM;
+
+ if (!(d = opendir(path))) {
+ r = -errno;
+ free(path);
+
+ if (r == -ENOENT)
+ continue;
+
+ return r;
+ }
+
+ free(path);
+
+ while ((de = readdir(d))) {
+
+ if (ignore_file(de->d_name))
+ continue;
+
+ if (asprintf(&path, "%s/%s.wants/%s", *p, t, de->d_name) < 0) {
+ closedir(d);
+ return -ENOMEM;
+ }
+
+ if (!unit_name_is_valid(de->d_name)) {
+ log_info("Name of %s is not a valid unit name. Ignoring.", path);
+ free(path);
+ continue;
+ }
+
+ r = unit_add_dependency_by_name(u, UNIT_WANTS, path);
+ free(path);
+
+ if (r < 0) {
+ closedir(d);
+ return r;
+ }
+ }
+
+ closedir(d);
+ }
+ }
+