[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[PATCH] Fixed the problem with string to list properties (#560262)



Some udev properties which should be a string were
wrongly converted to a list of words.
---
 baseudev.py |    1 -
 pyudev.py   |   34 +++++++++++++++++-----------------
 2 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/baseudev.py b/baseudev.py
index cef6766..3d9ee45 100644
--- a/baseudev.py
+++ b/baseudev.py
@@ -45,7 +45,6 @@ def udev_get_device(sysfs_path):
 
     if dev:
         dev["name"] = dev.sysname
-        dev["symlinks"] = dev.get("DEVLINKS", [])
         dev["sysfs_path"] = sysfs_path
 
         # now add in the contents of the uevent file since they're handy
diff --git a/pyudev.py b/pyudev.py
index 1b9b606..6ab5d30 100644
--- a/pyudev.py
+++ b/pyudev.py
@@ -105,6 +105,10 @@ libudev_udev_enumerate_get_list_entry = libudev.udev_enumerate_get_list_entry
 libudev_udev_enumerate_get_list_entry.restype = c_void_p
 libudev_udev_enumerate_get_list_entry.argtypes = [ c_void_p ]
 
+libudev_udev_device_get_devlinks_list_entry = libudev.udev_device_get_devlinks_list_entry
+libudev_udev_device_get_devlinks_list_entry.restype = c_void_p
+libudev_udev_device_get_devlinks_list_entry.argtypes = [ c_void_p ]
+
 
 class UdevDevice(dict):
 
@@ -121,6 +125,19 @@ class UdevDevice(dict):
         self.syspath = libudev_udev_device_get_syspath(udev_device)
         self.sysname = libudev_udev_device_get_sysname(udev_device)
 
+        # get the devlinks list
+        devlinks = []
+        devlinks_entry = libudev_udev_device_get_devlinks_list_entry(udev_device)
+
+        while devlinks_entry:
+            path = libudev_udev_list_entry_get_name(devlinks_entry)
+            devlinks.append(path)
+
+            devlinks_entry = libudev_udev_list_entry_get_next(devlinks_entry)
+
+        # add devlinks list to the dictionary
+        self["symlinks"] = devlinks
+
         # get the first property entry
         property_entry = libudev_udev_device_get_properties_list_entry(udev_device)
 
@@ -128,23 +145,6 @@ class UdevDevice(dict):
             name = libudev_udev_list_entry_get_name(property_entry)
             value = libudev_udev_list_entry_get_value(property_entry)
 
-            # XXX we have to split some of the values into a list,
-            # the libudev is not so smart :(
-            fields = value.split()
-
-            if len(fields) > 1:
-                value = [fields[0]]
-
-                for item in fields[1:]:
-                    (key, sep, val) = item.partition("=")
-                    if sep:
-                        value.append(val)
-                    else:
-                        value.append(key)
-
-                if len(value) == 1:
-                    value = value[0]
-
             self[name] = value
 
             # get next property entry
-- 
1.6.6


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]