chiark / gitweb /
udev: builtin-hwdb - port to sd-hwdb
authorTom Gundersen <teg@jklm.no>
Mon, 15 Dec 2014 18:58:25 +0000 (19:58 +0100)
committerTom Gundersen <teg@jklm.no>
Mon, 15 Dec 2014 19:40:09 +0000 (20:40 +0100)
src/libudev/libudev-hwdb.c
src/libudev/libudev-private.h
src/shared/udev-util.h
src/udev/udev-builtin-hwdb.c

index 2e198f2..98951fb 100644 (file)
@@ -110,13 +110,6 @@ _public_ struct udev_hwdb *udev_hwdb_unref(struct udev_hwdb *hwdb) {
         return NULL;
 }
 
-bool udev_hwdb_validate(struct udev_hwdb *hwdb) {
-        if (!hwdb)
-                return false;
-
-        return hwdb_validate(hwdb->hwdb);
-}
-
 /**
  * udev_hwdb_get_properties_list_entry:
  * @hwdb: context
index 64f132f..d188bda 100644 (file)
@@ -133,9 +133,6 @@ void udev_queue_export_cleanup(struct udev_queue_export *udev_queue_export);
 int udev_queue_export_device_queued(struct udev_queue_export *udev_queue_export, struct udev_device *udev_device);
 int udev_queue_export_device_finished(struct udev_queue_export *udev_queue_export, struct udev_device *udev_device);
 
-/* libudev-hwdb.c */
-bool udev_hwdb_validate(struct udev_hwdb *hwdb);
-
 /* libudev-util.c */
 #define UTIL_PATH_SIZE                      1024
 #define UTIL_NAME_SIZE                       512
index 5e0e1a9..5f09ce1 100644 (file)
@@ -27,7 +27,6 @@
 DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev*, udev_unref);
 DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_device*, udev_device_unref);
 DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_enumerate*, udev_enumerate_unref);
-DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_hwdb*, udev_hwdb_unref);
 DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_event*, udev_event_unref);
 DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_rules*, udev_rules_unref);
 DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_ctrl*, udev_ctrl_unref);
@@ -36,7 +35,6 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_monitor*, udev_monitor_unref);
 #define _cleanup_udev_unref_ _cleanup_(udev_unrefp)
 #define _cleanup_udev_device_unref_ _cleanup_(udev_device_unrefp)
 #define _cleanup_udev_enumerate_unref_ _cleanup_(udev_enumerate_unrefp)
-#define _cleanup_udev_hwdb_unref_ _cleanup_(udev_hwdb_unrefp)
 #define _cleanup_udev_event_unref_ _cleanup_(udev_event_unrefp)
 #define _cleanup_udev_rules_unref_ _cleanup_(udev_rules_unrefp)
 #define _cleanup_udev_ctrl_unref_ _cleanup_(udev_ctrl_unrefp)
index 695a31a..e8301c6 100644 (file)
 #include <getopt.h>
 
 #include "udev.h"
+#include "sd-hwdb.h"
 
-static struct udev_hwdb *hwdb;
+#include "hwdb-util.h"
+
+static sd_hwdb *hwdb;
 
 int udev_builtin_hwdb_lookup(struct udev_device *dev,
                              const char *prefix, const char *modalias,
                              const char *filter, bool test) {
-        struct udev_list_entry *list;
-        struct udev_list_entry *entry;
+        _cleanup_free_ const char *lookup = NULL;
+        const char *key, *value;
         int n = 0;
 
         if (!hwdb)
                 return -ENOENT;
 
         if (prefix) {
-                _cleanup_free_ const char *lookup;
-
                 lookup = strjoin(prefix, modalias, NULL);
                 if (!lookup)
                         return -ENOMEM;
-                list = udev_hwdb_get_properties_list_entry(hwdb, lookup, 0);
-        } else
-                list = udev_hwdb_get_properties_list_entry(hwdb, modalias, 0);
+                modalias = lookup;
+        }
 
-        udev_list_entry_foreach(entry, list) {
-                if (filter && fnmatch(filter, udev_list_entry_get_name(entry), FNM_NOESCAPE) != 0)
+        SD_HWDB_FOREACH_PROPERTY(hwdb, modalias, key, value) {
+                if (filter && fnmatch(filter, key, FNM_NOESCAPE) != 0)
                         continue;
 
-                if (udev_builtin_add_property(dev, test,
-                                              udev_list_entry_get_name(entry),
-                                              udev_list_entry_get_value(entry)) < 0)
+                if (udev_builtin_add_property(dev, test, key, value) < 0)
                         return -ENOMEM;
                 n++;
         }
@@ -190,22 +188,26 @@ static int builtin_hwdb(struct udev_device *dev, int argc, char *argv[], bool te
 
 /* called at udev startup and reload */
 static int builtin_hwdb_init(struct udev *udev) {
+        int r;
+
         if (hwdb)
                 return 0;
-        hwdb = udev_hwdb_new(udev);
-        if (!hwdb)
-                return -ENOMEM;
+
+        r = sd_hwdb_new(&hwdb);
+        if (r < 0)
+                return r;
+
         return 0;
 }
 
 /* called on udev shutdown and reload request */
 static void builtin_hwdb_exit(struct udev *udev) {
-        hwdb = udev_hwdb_unref(hwdb);
+        hwdb = sd_hwdb_unref(hwdb);
 }
 
 /* called every couple of seconds during event activity; 'true' if config has changed */
 static bool builtin_hwdb_validate(struct udev *udev) {
-        return udev_hwdb_validate(hwdb);
+        return hwdb_validate(hwdb);
 }
 
 const struct udev_builtin udev_builtin_hwdb = {