From: Yu Watanabe Date: Thu, 12 Mar 2026 00:53:13 +0000 (+0900) Subject: sd-device: also add device_get_sysattr_streq() X-Git-Tag: v261-rc1~125^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=247e4caa3cf5339be9cb372f673725517268cfcd;p=thirdparty%2Fsystemd.git sd-device: also add device_get_sysattr_streq() --- diff --git a/src/libsystemd/sd-device/device-private.h b/src/libsystemd/sd-device/device-private.h index 33a2c7ebb6e..0773ec90986 100644 --- a/src/libsystemd/sd-device/device-private.h +++ b/src/libsystemd/sd-device/device-private.h @@ -16,6 +16,7 @@ int device_get_property_bool(sd_device *device, const char *key); int device_get_property_int(sd_device *device, const char *key, int *ret); int device_get_property_uint(sd_device *device, const char *key, unsigned *ret); int device_get_ifname(sd_device *device, const char **ret); +int device_get_sysattr_streq(sd_device *device, const char *sysattr, const char *expected); int device_get_sysattr_safe_string(sd_device *device, const char *sysattr, const char **ret); int device_get_sysattr_int(sd_device *device, const char *sysattr, int *ret); int device_get_sysattr_unsigned_full(sd_device *device, const char *sysattr, unsigned base, unsigned *ret); diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index f157125c50b..07c3dd60d2f 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -2619,6 +2619,19 @@ _public_ int sd_device_get_sysattr_value(sd_device *device, const char *sysattr, return sd_device_get_sysattr_value_with_size(device, sysattr, ret, NULL); } +int device_get_sysattr_streq(sd_device *device, const char *sysattr, const char *expected) { + const char *value; + int r; + + assert(expected); + + r = sd_device_get_sysattr_value(device, sysattr, &value); + if (r < 0) + return r; + + return streq(value, expected); +} + int device_get_sysattr_safe_string(sd_device *device, const char *sysattr, const char **ret) { const char *value; int r; diff --git a/src/libsystemd/sd-device/test-sd-device.c b/src/libsystemd/sd-device/test-sd-device.c index efeae7a7155..c53f0b0e88d 100644 --- a/src/libsystemd/sd-device/test-sd-device.c +++ b/src/libsystemd/sd-device/test-sd-device.c @@ -341,6 +341,11 @@ static void test_sd_device_one(sd_device *d) { ASSERT_OK_POSITIVE(device_get_sysattr_u8(d, "ifindex", &u8)); ASSERT_EQ(u8, (uint8_t) ifindex); } + + const char *s; + ASSERT_OK(sd_device_get_sysattr_value(d, "ifindex", &s)); + ASSERT_OK_POSITIVE(device_get_sysattr_streq(d, "ifindex", s)); + ASSERT_OK_ZERO(device_get_sysattr_streq(d, "ifindex", "hoge")); } }