return -errno;
b = *u == uid;
- free(u);
+ acl_free(u);
if (b) {
*entry = i;
assert(udev);
- if (!seat)
+ if (isempty(seat))
seat = "seat0";
e = udev_enumerate_new(udev);
if (r < 0)
goto finish;
- r = udev_enumerate_add_match_tag(e, seat);
- if (r < 0)
- goto finish;
+ /* FIXME: when libudev is able to handle multiple match tags
+ * properly, optimize the search here a bit */
+ /* if (!streq(seat, "seat0")) { */
+ /* r = udev_enumerate_add_match_tag(e, seat); */
+ /* if (r < 0) */
+ /* goto finish; */
+ /* } */
r = udev_enumerate_scan_devices(e);
if (r < 0)
goto finish;
}
- sn = udev_device_get_property_value(d, "SEAT");
- if (!sn)
+ sn = udev_device_get_property_value(d, "ID_SEAT");
+ if (isempty(sn))
sn = "seat0";
if (!streq(seat, sn)) {
}
node = udev_device_get_devnode(d);
- udev_device_unref(d);
-
if (!node) {
+ udev_device_unref(d);
r = -ENOMEM;
goto finish;
}
+ log_debug("Fixing up %s for seat %s...", node, sn);
+
r = devnode_acl(node, flush, del, old_uid, add, new_uid);
+ udev_device_unref(d);
+
if (r < 0)
goto finish;
}