[PATCH libevdev 7/9] Warn if there are multiple devices with the same syspath

Peter Hutterer peter.hutterer at who-t.net
Tue Sep 3 00:07:45 PDT 2013


Change to the previous code in that we continue looking at devices
even after we've found one. However, this way we can warn
the user when we can't guarantee syspath correctness.

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 libevdev/libevdev-uinput.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/libevdev/libevdev-uinput.c b/libevdev/libevdev-uinput.c
index afebc0b..af98fa4 100644
--- a/libevdev/libevdev-uinput.c
+++ b/libevdev/libevdev-uinput.c
@@ -226,11 +226,16 @@ fetch_syspath_and_devnode(struct libevdev_uinput *uinput_dev)
 
 		buf[len - 1] = '\0'; /* file contains \n */
 		if (strcmp(buf, uinput_dev->name) == 0) {
-			strcpy(buf, SYS_INPUT_DIR);
-			strcat(buf, namelist[i]->d_name);
-			uinput_dev->syspath = strdup(buf);
-			uinput_dev->devnode = fetch_device_node(buf);
-			break;
+			if (uinput_dev->syspath) {
+				/* FIXME: could descend into bit comparison here */
+				log_info("multiple identical devices found. syspath is unreliable\n");
+				break;
+			} else {
+				strcpy(buf, SYS_INPUT_DIR);
+				strcat(buf, namelist[i]->d_name);
+				uinput_dev->syspath = strdup(buf);
+				uinput_dev->devnode = fetch_device_node(buf);
+			}
 		}
 	}
 
-- 
1.8.2.1



More information about the Input-tools mailing list