diff options
author | Chris Michael <cpmichael@osg.samsung.com> | 2016-01-29 13:46:30 -0500 |
---|---|---|
committer | Chris Michael <cpmichael@osg.samsung.com> | 2016-01-29 13:46:30 -0500 |
commit | 684d5180c3bcd6054fc9a3bb9dae24f389fbac76 (patch) | |
tree | dc145729bc2cf9a675e093e7ce197032b789f0b6 | |
parent | 40f162fbc500d7e2c51d93eff46e87c6117b7d91 (diff) | |
download | efl-684d5180c3bcd6054fc9a3bb9dae24f389fbac76.tar.gz |
eeze: Fix eeze_udev_find_by_subsystem_sysname function
This function was severly broken when used for finding devices of a
particular subsystem. Previously, this function would return every
device in the system, regardless if subsystem or sysname was passed in.
This patch fixes the issue by adding udev_enumerate matches before we
scan for devices. This way, when we enumerate the scan results, we now
get only devices that match the subsystem (if supplied).
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
-rw-r--r-- | src/lib/eeze/eeze_udev_find.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/lib/eeze/eeze_udev_find.c b/src/lib/eeze/eeze_udev_find.c index 06bbb4c087..3df74cd938 100644 --- a/src/lib/eeze/eeze_udev_find.c +++ b/src/lib/eeze/eeze_udev_find.c @@ -392,18 +392,19 @@ eeze_udev_find_by_subsystem_sysname(const char *subsystem, const char *sysname) const char *devname; Eina_List *ret = NULL; - if (!sysname) return NULL; - en = udev_enumerate_new(udev); if (!en) return NULL; + if (subsystem) udev_enumerate_add_match_subsystem(en, subsystem); + if (sysname) udev_enumerate_add_match_sysname(en, sysname); + udev_enumerate_scan_devices(en); devs = udev_enumerate_get_list_entry(en); udev_list_entry_foreach(cur, devs) { devname = udev_list_entry_get_name(cur); - device = - udev_device_new_from_subsystem_sysname(udev, subsystem, sysname); + device = udev_device_new_from_syspath(udev, devname); + if (!device) continue; ret = eina_list_append(ret, eina_stringshare_add(devname)); udev_device_unref(device); } |