diff --git a/src/libsystemd/sd-device/device-private.h b/src/libsystemd/sd-device/device-private.h index 33a2c7ebb6..0773ec9098 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 f157125c50..07c3dd60d2 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 efeae7a715..c53f0b0e88 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")); } }