summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Michael <cpmichael@osg.samsung.com>2016-01-29 13:46:30 -0500
committerChris Michael <cpmichael@osg.samsung.com>2016-01-29 13:46:30 -0500
commit684d5180c3bcd6054fc9a3bb9dae24f389fbac76 (patch)
treedc145729bc2cf9a675e093e7ce197032b789f0b6
parent40f162fbc500d7e2c51d93eff46e87c6117b7d91 (diff)
downloadefl-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.c9
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);
}