From 93f29f37a0df5ffdc3933c97075c111be091aaad Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 6 Apr 2017 23:01:29 +0100 Subject: tools/intel_error_decode: Automatically open a pager A feature I've wanted for a long time, just to save typing | less every time. Implementation nabbed from aubinator_error_decode. Signed-off-by: Chris Wilson --- tools/intel_error_decode.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'tools/intel_error_decode.c') diff --git a/tools/intel_error_decode.c b/tools/intel_error_decode.c index 363cd902..d49f4799 100644 --- a/tools/intel_error_decode.c +++ b/tools/intel_error_decode.c @@ -772,6 +772,30 @@ read_data_file(FILE *file) free(ring_name); } +static void setup_pager(void) +{ + int fds[2]; + + if (pipe(fds) == -1) + return; + + switch (fork()) { + case -1: + break; + case 0: + close(fds[1]); + dup2(fds[0], 0); + execlp("less", "less", "-FRSi", NULL); + break; + + default: + close(fds[0]); + dup2(fds[1], 1); + close(fds[1]); + break; + } +} + int main(int argc, char *argv[]) { @@ -797,6 +821,9 @@ main(int argc, char *argv[]) return 1; } + if (isatty(1)) + setup_pager(); + if (argc == 1) { if (isatty(0)) { path = "/sys/class/drm/card0/error"; -- cgit v1.2.3