]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
cgroup-util: add cg_get_attribute_as_bool() helper
authorAnita Zhang <the.anitazha@gmail.com>
Tue, 6 Oct 2020 03:59:54 +0000 (20:59 -0700)
committerAnita Zhang <the.anitazha@gmail.com>
Thu, 8 Oct 2020 00:12:24 +0000 (17:12 -0700)
src/basic/cgroup-util.c
src/basic/cgroup-util.h

index 8f32296333f4511dbab5545359f41a3431bdac51..d2655673fdf9351e92010a703f01a6885739d300 100644 (file)
@@ -1685,6 +1685,26 @@ int cg_get_attribute_as_uint64(const char *controller, const char *path, const c
         return 0;
 }
 
+int cg_get_attribute_as_bool(const char *controller, const char *path, const char *attribute, bool *ret) {
+        _cleanup_free_ char *value = NULL;
+        int r;
+
+        assert(ret);
+
+        r = cg_get_attribute(controller, path, attribute, &value);
+        if (r == -ENOENT)
+                return -ENODATA;
+        if (r < 0)
+                return r;
+
+        r = parse_boolean(value);
+        if (r < 0)
+                return r;
+
+        *ret = r;
+        return 0;
+}
+
 int cg_get_keyed_attribute_full(
                 const char *controller,
                 const char *path,
index 6f76417a04e34cf0930f5be8117f0aa4a8a35d57..eda2b16a1b9c8aee85fc5359976e9d61a1fad591 100644 (file)
@@ -208,6 +208,9 @@ static inline int cg_get_keyed_attribute_graceful(
 
 int cg_get_attribute_as_uint64(const char *controller, const char *path, const char *attribute, uint64_t *ret);
 
+/* Does a parse_boolean() on the attribute contents and sets ret accordingly */
+int cg_get_attribute_as_bool(const char *controller, const char *path, const char *attribute, bool *ret);
+
 int cg_set_access(const char *controller, const char *path, uid_t uid, gid_t gid);
 
 int cg_set_xattr(const char *controller, const char *path, const char *name, const void *value, size_t size, int flags);