static int
path_get_udev_properties(const char *path,
char **sysname,
+ char **syspath,
char **seat_name,
char **seat_logical_name)
{
goto out;
*sysname = strdup(udev_device_get_sysname(device));
+ *syspath = strdup(udev_device_get_syspath(device));
seat = udev_device_get_property_value(device, "ID_SEAT");
*seat_name = strdup(seat ? seat : default_seat);
{
struct path_seat *seat;
struct evdev_device *device = NULL;
- char *sysname = NULL;
+ char *sysname = NULL, *syspath = NULL;
char *seat_name = NULL, *seat_logical_name = NULL;
- if (path_get_udev_properties(devnode, &sysname,
+ if (path_get_udev_properties(devnode, &sysname, &syspath,
&seat_name, &seat_logical_name) == -1) {
- log_info("failed to obtain sysname for device '%s'.\n", devnode);
+ log_info(&input->base,
+ "failed to obtain sysname for device '%s'.\n",
+ devnode);
return NULL;
}
} else {
seat = path_seat_create(input, seat_name, seat_logical_name);
if (!seat) {
- log_info("failed to create seat for device '%s'.\n", devnode);
+ log_info(&input->base,
+ "failed to create seat for device '%s'.\n",
+ devnode);
goto out;
}
}
- device = evdev_device_create(&seat->base, devnode, sysname);
+ device = evdev_device_create(&seat->base, devnode, sysname, syspath);
libinput_seat_unref(&seat->base);
if (device == EVDEV_UNHANDLED_DEVICE) {
device = NULL;
- log_info("not using input device '%s'.\n", devnode);
+ log_info(&input->base,
+ "not using input device '%s'.\n",
+ devnode);
goto out;
} else if (device == NULL) {
- log_info("failed to create input device '%s'.\n", devnode);
+ log_info(&input->base,
+ "failed to create input device '%s'.\n",
+ devnode);
goto out;
}
out:
free(sysname);
+ free(syspath);
free(seat_name);
free(seat_logical_name);
struct libinput_device *device;
if (libinput->interface_backend != &interface_backend) {
- log_bug_client("Mismatching backends.\n");
+ log_bug_client(libinput, "Mismatching backends.\n");
return NULL;
}
struct path_device *dev;
if (libinput->interface_backend != &interface_backend) {
- log_bug_client("Mismatching backends.\n");
+ log_bug_client(libinput, "Mismatching backends.\n");
return;
}