X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcgls.c;h=2bde743acf314420c9c9c2c3375facd452a172e2;hp=c60f9eecce44e615356e30c5e7708ccb984965e9;hb=08a67ac43df4819e1820ca4e3e3f9ed9b60dce22;hpb=d6c9574fb558d9e304699b1cc7522c3b133adfc9 diff --git a/src/cgls.c b/src/cgls.c index c60f9eecc..2bde743ac 100644 --- a/src/cgls.c +++ b/src/cgls.c @@ -72,14 +72,15 @@ 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(); if ((r = parse_argv(argc, argv)) < 0) goto finish; else if (r == 0) { - retval = 0; + retval = EXIT_SUCCESS; goto finish; } @@ -102,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); } @@ -114,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: