diff options
-rw-r--r-- | src/libudev/libudev-hwdb.c | 7 | ||||
-rw-r--r-- | src/libudev/libudev-private.h | 3 | ||||
-rw-r--r-- | src/shared/udev-util.h | 2 | ||||
-rw-r--r-- | src/udev/udev-builtin-hwdb.c | 38 |
4 files changed, 20 insertions, 30 deletions
diff --git a/src/libudev/libudev-hwdb.c b/src/libudev/libudev-hwdb.c index 2e198f2049..98951fb85b 100644 --- a/src/libudev/libudev-hwdb.c +++ b/src/libudev/libudev-hwdb.c @@ -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 diff --git a/src/libudev/libudev-private.h b/src/libudev/libudev-private.h index 64f132f91d..d188bdad20 100644 --- a/src/libudev/libudev-private.h +++ b/src/libudev/libudev-private.h @@ -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 diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h index 5e0e1a96ef..5f09ce181f 100644 --- a/src/shared/udev-util.h +++ b/src/shared/udev-util.h @@ -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) diff --git a/src/udev/udev-builtin-hwdb.c b/src/udev/udev-builtin-hwdb.c index 695a31a12f..e8301c6a36 100644 --- a/src/udev/udev-builtin-hwdb.c +++ b/src/udev/udev-builtin-hwdb.c @@ -27,36 +27,34 @@ #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 = { |