udev: builtin-hwdb - port to sd-hwdb
This commit is contained in:
parent
d640c07d97
commit
c532d8a00c
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 = {
|
||||
|
|
Loading…
Reference in a new issue