]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
cgroup: move controller to dirname translation into join_path_legacy()
authorLennart Poettering <lennart@poettering.net>
Thu, 3 Sep 2015 12:56:26 +0000 (14:56 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 4 Sep 2015 07:07:30 +0000 (09:07 +0200)
Let's simplify things a bit.

src/basic/cgroup-util.c

index 74e1668a17dff71a48d5aad4f5b2c86bd94a40e5..8299f6ffd53be3a5ff664f56be3f0e34c7761e17 100644 (file)
@@ -460,20 +460,23 @@ static const char *controller_to_dirname(const char *controller) {
         return controller;
 }
 
-static int join_path_legacy(const char *controller_dn, const char *path, const char *suffix, char **fs) {
+static int join_path_legacy(const char *controller, const char *path, const char *suffix, char **fs) {
+        const char *dn;
         char *t = NULL;
 
         assert(fs);
-        assert(controller_dn);
+        assert(controller);
+
+        dn = controller_to_dirname(controller);
 
         if (isempty(path) && isempty(suffix))
-                t = strappend("/sys/fs/cgroup/", controller_dn);
+                t = strappend("/sys/fs/cgroup/", dn);
         else if (isempty(path))
-                t = strjoin("/sys/fs/cgroup/", controller_dn, "/", suffix, NULL);
+                t = strjoin("/sys/fs/cgroup/", dn, "/", suffix, NULL);
         else if (isempty(suffix))
-                t = strjoin("/sys/fs/cgroup/", controller_dn, "/", path, NULL);
+                t = strjoin("/sys/fs/cgroup/", dn, "/", path, NULL);
         else
-                t = strjoin("/sys/fs/cgroup/", controller_dn, "/", path, "/", suffix, NULL);
+                t = strjoin("/sys/fs/cgroup/", dn, "/", path, "/", suffix, NULL);
         if (!t)
                 return -ENOMEM;
 
@@ -509,8 +512,8 @@ int cg_get_path(const char *controller, const char *path, const char *suffix, ch
         if (!controller) {
                 char *t;
 
-                /* If no controller is specified, we assume only the
-                 * path below the controller matters */
+                /* If no controller is specified, we return the path
+                 * *below* the controllers, without any prefix. */
 
                 if (!path && !suffix)
                         return -EINVAL;
@@ -537,14 +540,8 @@ int cg_get_path(const char *controller, const char *path, const char *suffix, ch
 
         if (unified > 0)
                 r = join_path_unified(path, suffix, fs);
-        else {
-                const char *dn;
-
-                dn = controller_to_dirname(controller);
-
-                r = join_path_legacy(dn, path, suffix, fs);
-        }
-
+        else
+                r = join_path_legacy(controller, path, suffix, fs);
         if (r < 0)
                 return r;