libudev: device - add udev_device_get_property_value()
This commit is contained in:
@@ -29,6 +29,7 @@ udev_device_get_subsystem
|
||||
udev_device_get_devtype
|
||||
udev_device_get_devlinks_list_entry
|
||||
udev_device_get_properties_list_entry
|
||||
udev_device_get_properties_value
|
||||
udev_device_get_action
|
||||
udev_device_get_driver
|
||||
udev_device_get_devnum
|
||||
|
||||
@@ -1059,6 +1059,20 @@ struct udev_list_entry *udev_device_add_property_from_string(struct udev_device
|
||||
return udev_device_add_property(udev_device, name, val);
|
||||
}
|
||||
|
||||
const char *udev_device_get_property_value(struct udev_device *udev_device, const char *key)
|
||||
{
|
||||
struct udev_list_entry *list_entry;
|
||||
|
||||
if (udev_device == NULL)
|
||||
return NULL;
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
|
||||
list_entry = udev_device_get_properties_list_entry(udev_device);
|
||||
list_entry = udev_list_entry_get_by_name(list_entry, key);
|
||||
return udev_list_entry_get_value(list_entry);
|
||||
}
|
||||
|
||||
#define ENVP_SIZE 128
|
||||
#define MONITOR_BUF_SIZE 4096
|
||||
static int update_envp_monitor_buf(struct udev_device *udev_device)
|
||||
|
||||
@@ -75,6 +75,7 @@ extern const char *udev_device_get_sysnum(struct udev_device *udev_device);
|
||||
extern const char *udev_device_get_devnode(struct udev_device *udev_device);
|
||||
extern struct udev_list_entry *udev_device_get_devlinks_list_entry(struct udev_device *udev_device);
|
||||
extern struct udev_list_entry *udev_device_get_properties_list_entry(struct udev_device *udev_device);
|
||||
extern const char *udev_device_get_property_value(struct udev_device *udev_device, const char *key);
|
||||
extern const char *udev_device_get_driver(struct udev_device *udev_device);
|
||||
extern dev_t udev_device_get_devnum(struct udev_device *udev_device);
|
||||
extern const char *udev_device_get_action(struct udev_device *udev_device);
|
||||
|
||||
+1
-6
@@ -421,14 +421,9 @@ found:
|
||||
dbg(event->udev, "missing attribute\n");
|
||||
break;
|
||||
} else {
|
||||
struct udev_list_entry *list_entry;
|
||||
const char *value;
|
||||
|
||||
list_entry = udev_device_get_properties_list_entry(event->dev);
|
||||
list_entry = udev_list_entry_get_by_name(list_entry, attr);
|
||||
if (list_entry == NULL)
|
||||
break;
|
||||
value = udev_list_entry_get_value(list_entry);
|
||||
value = udev_device_get_property_value(event->dev, attr);
|
||||
if (value == NULL)
|
||||
break;
|
||||
dbg(event->udev, "substitute env '%s=%s'\n", attr, value);
|
||||
|
||||
+1
-4
@@ -2059,13 +2059,10 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
|
||||
break;
|
||||
case TK_M_ENV:
|
||||
{
|
||||
struct udev_list_entry *list_entry;
|
||||
const char *key_name = &rules->buf[cur->key.attr_off];
|
||||
const char *value;
|
||||
|
||||
list_entry = udev_device_get_properties_list_entry(event->dev);
|
||||
list_entry = udev_list_entry_get_by_name(list_entry, key_name);
|
||||
value = udev_list_entry_get_value(list_entry);
|
||||
value = udev_device_get_property_value(event->dev, key_name);
|
||||
if (value == NULL) {
|
||||
dbg(event->udev, "ENV{%s} is not set, treat as empty\n", key_name);
|
||||
value = "";
|
||||
|
||||
Reference in New Issue
Block a user