chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
logind: include subsystem name in device id for assigning seats
[elogind.git]
/
src
/
logind-dbus.c
diff --git
a/src/logind-dbus.c
b/src/logind-dbus.c
index 1ed99c0aa7e44c543d516b1df9bd9b6be3933c77..91f30320c6496e79f9dbd241257b05386eb697e0 100644
(file)
--- a/
src/logind-dbus.c
+++ b/
src/logind-dbus.c
@@
-553,7
+553,7
@@
static bool device_has_tag(struct udev_device *d, const char *tag) {
static int attach_device(Manager *m, const char *seat, const char *sysfs) {
struct udev_device *d;
char *rule = NULL, *file = NULL;
static int attach_device(Manager *m, const char *seat, const char *sysfs) {
struct udev_device *d;
char *rule = NULL, *file = NULL;
- const char *
path
;
+ const char *
id_for_seat
;
int r;
assert(m);
int r;
assert(m);
@@
-569,22
+569,23
@@
static int attach_device(Manager *m, const char *seat, const char *sysfs) {
goto finish;
}
goto finish;
}
-
path = udev_device_get_property_value(d, "ID_PATH
");
- if (!
path
) {
+
id_for_seat = udev_device_get_property_value(d, "ID_FOR_SEAT
");
+ if (!
id_for_seat
) {
r = -ENODEV;
goto finish;
}
r = -ENODEV;
goto finish;
}
- if (asprintf(&file, "/etc/udev/rules.d/72-seat-%s.rules",
path
) < 0) {
+ if (asprintf(&file, "/etc/udev/rules.d/72-seat-%s.rules",
id_for_seat
) < 0) {
r = -ENOMEM;
goto finish;
}
r = -ENOMEM;
goto finish;
}
- if (asprintf(&rule, "TAG==\"seat\",
ID_PATH==\"%s\", ID_SEAT=\"%s\"", path
, seat) < 0) {
+ if (asprintf(&rule, "TAG==\"seat\",
ENV{ID_FOR_SEAT}==\"%s\", ENV{ID_SEAT}=\"%s\"", id_for_seat
, seat) < 0) {
r = -ENOMEM;
goto finish;
}
r = -ENOMEM;
goto finish;
}
+ mkdir_p("/etc/udev/rules.d", 0755);
r = write_one_line_file(file, rule);
finish:
r = write_one_line_file(file, rule);
finish: