From: David Tardon Date: Mon, 13 Nov 2023 15:11:41 +0000 (+0100) Subject: udev-util: add wrapper for sd_device_get_property_value() X-Git-Tag: v255-rc2~23^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f20ae7dbdf2d049de191456cbe14d7ea208ccffb;p=thirdparty%2Fsystemd.git udev-util: add wrapper for sd_device_get_property_value() ... that allows to pass additional properties to fall back to. --- diff --git a/src/shared/udev-util.c b/src/shared/udev-util.c index 8d55fb58b37..cf28ba86479 100644 --- a/src/shared/udev-util.c +++ b/src/shared/udev-util.c @@ -410,3 +410,30 @@ int device_get_model_string(sd_device *device, const char **ret) { return -ENOENT; } + +int device_get_property_value_with_fallback( + sd_device *device, + const char *prop, + Hashmap *extra_props, + const char **ret) { + const char *value; + int r; + + assert(device); + assert(prop); + assert(ret); + + r = sd_device_get_property_value(device, prop, &value); + if (r < 0) { + if (r != -ENOENT) + return r; + + value = hashmap_get(extra_props, prop); + if (!value) + return -ENOENT; + } + + *ret = value; + + return 1; +} diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h index 129b11fae31..651d335b969 100644 --- a/src/shared/udev-util.h +++ b/src/shared/udev-util.h @@ -3,6 +3,7 @@ #include "sd-device.h" +#include "hashmap.h" #include "time-util.h" int udev_set_max_log_level(char *str); @@ -25,3 +26,9 @@ bool udev_available(void); int device_get_vendor_string(sd_device *device, const char **ret); int device_get_model_string(sd_device *device, const char **ret); + +int device_get_property_value_with_fallback( + sd_device *device, + const char *prop, + Hashmap *extra_props, + const char **ret);