X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcgls.c;h=2bde743acf314420c9c9c2c3375facd452a172e2;hb=e9816c4859454d341279f1c9e77df4af4bacd534;hp=f1f3046edfd1897d2709c43c734ed3a5349f8e54;hpb=77d5f105bf63330350c7bddacdeda914f945590f;p=elogind.git diff --git a/src/cgls.c b/src/cgls.c index f1f3046ed..2bde743ac 100644 --- a/src/cgls.c +++ b/src/cgls.c @@ -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; } @@ -106,8 +106,22 @@ int main(int argc, char *argv[]) { 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: