From 1968a360405e302d4d2c2abc03a3314f81375156 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Jul 2011 02:34:35 +0200 Subject: cgls: add pager support to systemd-cgls --- src/cgls.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'src/cgls.c') diff --git a/src/cgls.c b/src/cgls.c index 2bde743acf..aebf826c90 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; } -- cgit v1.2.3-54-g00ecf