chiark / gitweb /
manager: don't even think of enumerating sysv services in user instances
[elogind.git] / src / logind-acl.c
index 7571093d0ef94c56874b38465e283a7f38f34867..59af981a5ecb5d33c56830e4a877af4dab288f4d 100644 (file)
@@ -222,7 +222,7 @@ int devnode_acl_all(struct udev *udev,
 
         assert(udev);
 
-        if (!seat)
+        if (isempty(seat))
                 seat = "seat0";
 
         e = udev_enumerate_new(udev);
@@ -233,11 +233,13 @@ int devnode_acl_all(struct udev *udev,
         if (r < 0)
                 goto finish;
 
-        if (!streq(seat, "seat0")) {
-                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)
@@ -254,8 +256,8 @@ int devnode_acl_all(struct udev *udev,
                         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)) {
@@ -270,6 +272,8 @@ int devnode_acl_all(struct udev *udev,
                         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);