From: Peter Hutterer Date: Sat, 31 Aug 2013 03:03:47 +0000 (+1000) Subject: Warn if there are multiple devices with the same syspath X-Git-Tag: libevdev-0.4~24^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4b5ffa6bea0d4ac92d567fdb3579baf0fe3ab80d;p=platform%2Fupstream%2Flibevdev.git Warn if there are multiple devices with the same syspath 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 Reviewed-by: Benjamin Tissoires --- 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); + } } }