X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcgls%2Fcgls.c;h=b8e275d013c13c488e4c8c2b89facfb35529d29e;hb=a0a6be9f6ab55ea76215c7fa4a5eab2235687348;hp=f232731ab49527b6f6f6163310b02197e0444911;hpb=98a6e132b5b85999f7e3dce158e826ffeecc1553;p=elogind.git diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c index f232731ab..b8e275d01 100644 --- a/src/cgls/cgls.c +++ b/src/cgls/cgls.c @@ -34,6 +34,7 @@ #include "pager.h" #include "build.h" #include "output-mode.h" +#include "fileio.h" static bool arg_no_pager = false; static bool arg_kernel_threads = false; @@ -41,7 +42,7 @@ static bool arg_all = false; static int arg_full = -1; static char* arg_machine = NULL; -static void help(void) { +static int help(void) { printf("%s [OPTIONS...] [CGROUP...]\n\n" "Recursively show control group contents.\n\n" @@ -53,6 +54,8 @@ static void help(void) { " -k Include kernel threads in output\n" " -M --machine Show container\n", program_invocation_short_name); + + return 0; } static int parse_argv(int argc, char *argv[]) { @@ -69,7 +72,7 @@ static int parse_argv(int argc, char *argv[]) { { "all", no_argument, NULL, 'a' }, { "full", no_argument, NULL, 'l' }, { "machine", required_argument, NULL, 'M' }, - { NULL, 0, NULL, 0 } + {} }; int c; @@ -77,13 +80,12 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 1); assert(argv); - while ((c = getopt_long(argc, argv, "hkaM:", options, NULL)) >= 0) { + while ((c = getopt_long(argc, argv, "hkalM:", options, NULL)) >= 0) { switch (c) { case 'h': - help(); - return 0; + return help(); case ARG_VERSION: puts(PACKAGE_STRING); @@ -114,8 +116,7 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; default: - log_error("Unknown option code %c", c); - return -EINVAL; + assert_not_reached("Unhandled option"); } } @@ -155,7 +156,9 @@ int main(int argc, char *argv[]) { for (i = optind; i < argc; i++) { int q; - printf("%s:\n", argv[i]); + + fprintf(stdout, "%s:\n", argv[i]); + fflush(stdout); if (arg_machine) root = strjoin("machine/", arg_machine, "/", argv[i], NULL); @@ -184,9 +187,11 @@ int main(int argc, char *argv[]) { r = show_cgroup_by_path(p, NULL, 0, arg_kernel_threads, output_flags); } else { - if (arg_machine) - r = cg_get_machine_path(arg_machine, &root); - else + if (arg_machine) { + char *m; + m = strappenda("/run/systemd/machines/", arg_machine); + r = parse_env_file(m, NEWLINE, "CGROUP", &root, NULL); + } else r = cg_get_root_path(&root); if (r < 0) { log_error("Failed to get %s path: %s",