diff --git a/libudev.h b/libudev.h index 7080aa2..635ff3a 100644 --- a/libudev.h +++ b/libudev.h @@ -33,6 +33,8 @@ char const *udev_device_get_property_value(struct udev_device *udev_device, char const *property); char const *udev_device_get_sysattr_value( struct udev_device *udev_device, const char *sysattr); +int udev_device_set_sysattr_value( + struct udev_device *udev_device, const char *sysattr, const char *value); struct udev_list_entry * udev_device_get_properties_list_entry( struct udev_device *udev_device); struct udev_list_entry * udev_device_get_sysattr_list_entry( diff --git a/udev-device.c b/udev-device.c index 852884c..d384746 100644 --- a/udev-device.c +++ b/udev-device.c @@ -230,6 +230,22 @@ udev_device_get_sysattr_value(struct udev_device *ud, const char *sysattr) return (NULL); } +LIBUDEV_EXPORT int +udev_device_set_sysattr_value(struct udev_device *ud, const char *sysattr, const char *value) +{ + struct udev_list_entry *entry; + + udev_list_entry_foreach(entry, udev_list_entry_get_first(&ud->sysattr_list)) { + char const *key; + + key = _udev_list_entry_get_name(entry); + if (key && strcmp(key, sysattr) == 0) + return -1; + } + + return udev_list_insert(&ud->sysattr_list, sysattr, value); +} + LIBUDEV_EXPORT struct udev * udev_device_get_udev(struct udev_device *ud) {