diff options
Diffstat (limited to 'tools/intel_error_decode.c')
-rw-r--r-- | tools/intel_error_decode.c | 27 |
1 files changed, 27 insertions, 0 deletions
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"; |