]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-device: introduce sd_device_set_sysattr_valuef()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 11 Sep 2020 08:41:10 +0000 (17:41 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 11 Sep 2020 08:41:10 +0000 (17:41 +0900)
src/libsystemd/libsystemd.sym
src/libsystemd/sd-device/sd-device.c
src/systemd/sd-device.h

index 1bee5318d672b3a1b363f201bee0d3409e927032..c6dfcd679121ac85207a20d4adb13619a4c727fb 100644 (file)
@@ -732,4 +732,5 @@ global:
         sd_device_get_current_tag_first;
         sd_device_get_current_tag_next;
         sd_device_has_current_tag;
+        sd_device_set_sysattr_valuef;
 } LIBSYSTEMD_246;
index bf92fda6d95b60d2580fc30db38ef99da4721ba7..634c9a24f864928dc404043e51d08d6ffeab939e 100644 (file)
@@ -1979,3 +1979,26 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr,
 
         return 0;
 }
+
+_public_ int sd_device_set_sysattr_valuef(sd_device *device, const char *sysattr, const char *format, ...) {
+        _cleanup_free_ char *value = NULL;
+        va_list ap;
+        int r;
+
+        assert_return(device, -EINVAL);
+        assert_return(sysattr, -EINVAL);
+
+        if (!format) {
+                device_remove_sysattr_value(device, sysattr);
+                return 0;
+        }
+
+        va_start(ap, format);
+        r = vasprintf(&value, format, ap);
+        va_end(ap);
+
+        if (r < 0)
+                return -ENOMEM;
+
+        return sd_device_set_sysattr_value(device, sysattr, value);
+}
index d720ce50da17ec09a9289a835ee6a263636a8d04..53092d28f92cc293d56886b8646fe4338f3f5a08 100644 (file)
@@ -79,6 +79,7 @@ int sd_device_get_property_value(sd_device *device, const char *key, const char
 int sd_device_get_sysattr_value(sd_device *device, const char *sysattr, const char **_value);
 
 int sd_device_set_sysattr_value(sd_device *device, const char *sysattr, const char *value);
+int sd_device_set_sysattr_valuef(sd_device *device, const char *sysattr, const char *format, ...) _sd_printf_(3, 4);
 
 /* device enumerator */