]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-device: also add device_get_sysattr_u8() and _u16()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 12 Mar 2026 00:48:22 +0000 (09:48 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 17 May 2026 17:55:56 +0000 (02:55 +0900)
src/libsystemd/sd-device/device-private.h
src/libsystemd/sd-device/sd-device.c
src/libsystemd/sd-device/test-sd-device.c

index 1364dd866393ad8dd7076e99c678cb86e6929a66..33a2c7ebb6e03ac373172d0ca25e38cdebe0eaa2 100644 (file)
@@ -20,11 +20,19 @@ int device_get_sysattr_safe_string(sd_device *device, const char *sysattr, const
 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);
 static inline int device_get_sysattr_unsigned(sd_device *device, const char *sysattr, unsigned *ret) {
-        return device_get_sysattr_unsigned_full(device, sysattr, 0, ret);
+        return device_get_sysattr_unsigned_full(device, sysattr, /* base= */ 0, ret);
+}
+int device_get_sysattr_u8_full(sd_device *device, const char *sysattr, unsigned base, uint8_t *ret);
+static inline int device_get_sysattr_u8(sd_device *device, const char *sysattr, uint8_t *ret) {
+        return device_get_sysattr_u8_full(device, sysattr, /* base= */ 0, ret);
+}
+int device_get_sysattr_u16_full(sd_device *device, const char *sysattr, unsigned base, uint16_t *ret);
+static inline int device_get_sysattr_u16(sd_device *device, const char *sysattr, uint16_t *ret) {
+        return device_get_sysattr_u16_full(device, sysattr, /* base= */ 0, ret);
 }
 int device_get_sysattr_u32_full(sd_device *device, const char *sysattr, unsigned base, uint32_t *ret);
 static inline int device_get_sysattr_u32(sd_device *device, const char *sysattr, uint32_t *ret) {
-        return device_get_sysattr_u32_full(device, sysattr, 0, ret);
+        return device_get_sysattr_u32_full(device, sysattr, /* base= */ 0, ret);
 }
 int device_get_sysattr_u64(sd_device *device, const char *sysattr, uint64_t *ret);
 int device_get_sysattr_bool(sd_device *device, const char *sysattr);
index 72d28998a77cf4d9f1030d0184cfe5164eb30e78..f157125c50bebecbdfeaf307a44ef639e505ad57 100644 (file)
@@ -2689,6 +2689,8 @@ int device_get_sysattr_safe_string(sd_device *device, const char *sysattr, const
 
 DEFINE_DEVICE_GET_SYSATTR_PARSE(int, int, safe_atoi);
 DEFINE_DEVICE_GET_SYSATTR_PARSE_BASE(unsigned, unsigned, safe_atou_full);
+DEFINE_DEVICE_GET_SYSATTR_PARSE_BASE(u8,  uint8_t,  safe_atou8_full);
+DEFINE_DEVICE_GET_SYSATTR_PARSE_BASE(u16, uint16_t, safe_atou16_full);
 DEFINE_DEVICE_GET_SYSATTR_PARSE_BASE(u32, uint32_t, safe_atou32_full);
 DEFINE_DEVICE_GET_SYSATTR_PARSE(u64, uint64_t, safe_atou64);
 
index 13fb9fd25d24e984ae841de22dc1cb52f5ebf794..efeae7a7155d0600d489d44d03df0dd07ea67e68 100644 (file)
@@ -329,6 +329,18 @@ static void test_sd_device_one(sd_device *d) {
                 uint32_t u32;
                 ASSERT_OK_POSITIVE(device_get_sysattr_u32(d, "ifindex", &u32));
                 ASSERT_EQ(u32, (uint32_t) ifindex);
+
+                if (ifindex <= UINT16_MAX) {
+                        uint16_t u16;
+                        ASSERT_OK_POSITIVE(device_get_sysattr_u16(d, "ifindex", &u16));
+                        ASSERT_EQ(u16, (uint16_t) ifindex);
+                }
+
+                if (ifindex <= UINT8_MAX) {
+                        uint8_t u8;
+                        ASSERT_OK_POSITIVE(device_get_sysattr_u8(d, "ifindex", &u8));
+                        ASSERT_EQ(u8, (uint8_t) ifindex);
+                }
         }
 }