- assert(sysfs[0] == '/');
- if (!(e = unit_name_escape_path(sysfs+1, ".device")))
- return -ENOMEM;
+ if (r == 0 && dn)
+ if ((r = device_find_escape_name(m, dn, &u)) < 0)
+ return r;
+
+ if (r == 0) {
+ first = udev_device_get_devlinks_list_entry(dev);
+ udev_list_entry_foreach(item, first) {
+ if ((r = device_find_escape_name(m, udev_list_entry_get_name(item), &u)) < 0)
+ return r;
+
+ if (r > 0)
+ break;
+ }
+ }
+
+ if (r == 0 && alias)
+ if ((r = device_find_escape_name(m, alias, &u)) < 0)
+ return r;
+
+ /* FIXME: this needs proper merging */
+
+ assert((r > 0) == !!u);