chiark / gitweb /
locale: fix LC_MESSAGES variable name
[elogind.git] / src / cgls.c
index 2940e3724bbcd584d5055bf8f067f9c7115c4444..2bde743acf314420c9c9c2c3375facd452a172e2 100644 (file)
@@ -72,7 +72,7 @@ static int parse_argv(int argc, char *argv[]) {
 }
 
 int main(int argc, char *argv[]) {
-        int r = 0, retval = 1;
+        int r = 0, retval = EXIT_FAILURE;
 
         log_parse_environment();
         log_open();
@@ -80,7 +80,7 @@ int main(int argc, char *argv[]) {
         if ((r = parse_argv(argc, argv)) < 0)
                 goto finish;
         else if (r == 0) {
-                retval = 0;
+                retval = EXIT_SUCCESS;
                 goto finish;
         }
 
@@ -103,11 +103,25 @@ int main(int argc, char *argv[]) {
                         goto finish;
                 }
 
-                if (path_startswith(p, "/cgroup")) {
+                if (path_startswith(p, "/sys/fs/cgroup")) {
                         printf("Working Directory %s:\n", p);
                         r = show_cgroup_by_path(p, NULL, 0);
-                } else
-                        r = show_cgroup(SYSTEMD_CGROUP_CONTROLLER, "/", NULL, 0);
+                } else {
+                        char *root = NULL;
+                        const char *t = NULL;
+
+                        if ((r = cg_get_by_pid(SYSTEMD_CGROUP_CONTROLLER, 1, &root)) < 0)
+                                t = "/";
+                        else {
+                                if (endswith(root, "/system"))
+                                        root[strlen(root)-7] = 0;
+
+                                t = root[0] ? root : "/";
+                        }
+
+                        r = show_cgroup(SYSTEMD_CGROUP_CONTROLLER, t, NULL, 0);
+                        free(root);
+                }
 
                 free(p);
         }
@@ -115,7 +129,7 @@ int main(int argc, char *argv[]) {
         if (r < 0)
                 log_error("Failed to list cgroup tree: %s", strerror(-r));
 
-        retval = 0;
+        retval = EXIT_SUCCESS;
 
 finish: