]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
cgroup-util: cg_get_xattr_malloc helper 15209/head
authorAnita Zhang <the.anitazha@gmail.com>
Wed, 18 Mar 2020 00:47:19 +0000 (17:47 -0700)
committerAnita Zhang <the.anitazha@gmail.com>
Tue, 24 Mar 2020 23:06:32 +0000 (16:06 -0700)
`cg_get_xattr_malloc` to read a cgroup xattr value and allocate space
to hold said value (simple helper combining existing functions).

src/basic/cgroup-util.c
src/basic/cgroup-util.h

index 5df24343d1c9d1571d7b406f5e162a35a6cc3d95..be73cfa3f0d475d7a3c423380214b11c6384a3cf 100644 (file)
@@ -37,6 +37,7 @@
 #include "strv.h"
 #include "unit-name.h"
 #include "user-util.h"
+#include "xattr-util.h"
 
 static int cg_enumerate_items(const char *controller, const char *path, FILE **_f, const char *item) {
         _cleanup_free_ char *fs = NULL;
@@ -605,6 +606,24 @@ int cg_get_xattr(const char *controller, const char *path, const char *name, voi
         return (int) n;
 }
 
+int cg_get_xattr_malloc(const char *controller, const char *path, const char *name, char **ret) {
+        _cleanup_free_ char *fs = NULL;
+        int r;
+
+        assert(path);
+        assert(name);
+
+        r = cg_get_path(controller, path, NULL, &fs);
+        if (r < 0)
+                return r;
+
+        r = getxattr_malloc(fs, name, ret, false);
+        if (r < 0)
+                return r;
+
+        return r;
+}
+
 int cg_remove_xattr(const char *controller, const char *path, const char *name) {
         _cleanup_free_ char *fs = NULL;
         int r;
index f5b1ffcc3d4c1fd258546a5ba3ee41448b1d872f..237139fad0060e105a06e1f6c153e27e7888d214 100644 (file)
@@ -190,6 +190,7 @@ 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);
 int cg_get_xattr(const char *controller, const char *path, const char *name, void *value, size_t size);
+int cg_get_xattr_malloc(const char *controller, const char *path, const char *name, char **ret);
 int cg_remove_xattr(const char *controller, const char *path, const char *name);
 
 int cg_install_release_agent(const char *controller, const char *agent);