X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcgls.c;h=20d6531123c8a69cc5293f8e72d996ebcbba0b03;hb=6ef25fb65ee0a62972ed7cbc01b6a11feb5fcb16;hp=2bde743acf314420c9c9c2c3375facd452a172e2;hpb=b9a8e638ed520bc9b528a1e8539ca4b9026861b4;p=elogind.git diff --git a/src/cgls.c b/src/cgls.c index 2bde743ac..20d653112 100644 --- a/src/cgls.c +++ b/src/cgls.c @@ -30,20 +30,29 @@ #include "cgroup-util.h" #include "log.h" #include "util.h" +#include "pager.h" + +static bool arg_no_pager = false; static void help(void) { printf("%s [OPTIONS...] [CGROUP...]\n\n" "Recursively show control group contents.\n\n" - " -h --help Show this help\n", + " -h --help Show this help\n" + " --no-pager Do not pipe output into a pager\n", program_invocation_short_name); } static int parse_argv(int argc, char *argv[]) { + enum { + ARG_NO_PAGER = 0x100 + }; + static const struct option options[] = { - { "help", no_argument, NULL, 'h' }, - { NULL, 0, NULL, 0 } + { "help", no_argument, NULL, 'h' }, + { "no-pager", no_argument, NULL, ARG_NO_PAGER }, + { NULL, 0, NULL, 0 } }; int c; @@ -59,6 +68,10 @@ static int parse_argv(int argc, char *argv[]) { help(); return 0; + case ARG_NO_PAGER: + arg_no_pager = true; + break; + case '?': return -EINVAL; @@ -84,6 +97,9 @@ int main(int argc, char *argv[]) { goto finish; } + if (!arg_no_pager) + pager_open(); + if (optind < argc) { unsigned i; @@ -132,6 +148,7 @@ int main(int argc, char *argv[]) { retval = EXIT_SUCCESS; finish: + pager_close(); return retval; }