From: Kay Sievers Date: Mon, 5 Jan 2009 23:26:28 +0000 (+0100) Subject: libudev: device - add udev_device_get_property_value() X-Git-Tag: 174~1211 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=3d7b2831cd661afd7d946791110b6ad5a7156d7f libudev: device - add udev_device_get_property_value() --- diff --git a/udev/lib/exported_symbols b/udev/lib/exported_symbols index abf505179..86ab1059f 100644 --- a/udev/lib/exported_symbols +++ b/udev/lib/exported_symbols @@ -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 diff --git a/udev/lib/libudev-device.c b/udev/lib/libudev-device.c index 0cb592128..a7722b3f6 100644 --- a/udev/lib/libudev-device.c +++ b/udev/lib/libudev-device.c @@ -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) diff --git a/udev/lib/libudev.h b/udev/lib/libudev.h index 6d6618a9e..58d7ef98c 100644 --- a/udev/lib/libudev.h +++ b/udev/lib/libudev.h @@ -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); diff --git a/udev/udev-event.c b/udev/udev-event.c index 93a65e735..9e82f8de4 100644 --- a/udev/udev-event.c +++ b/udev/udev-event.c @@ -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); diff --git a/udev/udev-rules.c b/udev/udev-rules.c index 9861a88a5..7ba52208f 100644 --- a/udev/udev-rules.c +++ b/udev/udev-rules.c @@ -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 = "";