]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-device: introduce device_get_sysattr_int()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 25 Sep 2022 04:17:20 +0000 (13:17 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 25 Sep 2022 04:59:49 +0000 (13:59 +0900)
src/libsystemd/sd-device/device-private.h
src/libsystemd/sd-device/sd-device.c

index d53479e8c97ae87d6ee50af3b5fd6db91a146cb9..90da7f431792b781ef2cfc32c21f3970c1d0b085 100644 (file)
@@ -18,6 +18,7 @@ int device_new_from_strv(sd_device **ret, char **strv);
 int device_opendir(sd_device *device, const char *subdir, DIR **ret);
 
 int device_get_property_bool(sd_device *device, const char *key);
+int device_get_sysattr_int(sd_device *device, const char *sysattr, int *ret_value);
 int device_get_sysattr_unsigned(sd_device *device, const char *sysattr, unsigned *ret_value);
 int device_get_sysattr_bool(sd_device *device, const char *sysattr);
 int device_get_device_id(sd_device *device, const char **ret);
index 9364a69dcd00d7283ed6243d099779db81528db1..3b8784e30ad50bc72ea90823a8a31106e172917e 100644 (file)
@@ -2210,6 +2210,25 @@ _public_ int sd_device_get_sysattr_value(sd_device *device, const char *sysattr,
         return 0;
 }
 
+int device_get_sysattr_int(sd_device *device, const char *sysattr, int *ret_value) {
+        const char *value;
+        int r;
+
+        r = sd_device_get_sysattr_value(device, sysattr, &value);
+        if (r < 0)
+                return r;
+
+        int v;
+        r = safe_atoi(value, &v);
+        if (r < 0)
+                return log_device_debug_errno(device, r, "Failed to parse '%s' attribute: %m", sysattr);
+
+        if (ret_value)
+                *ret_value = v;
+        /* We return "true" if the value is positive. */
+        return v > 0;
+}
+
 int device_get_sysattr_unsigned(sd_device *device, const char *sysattr, unsigned *ret_value) {
         const char *value;
         int r;