From 43f2cb8b491d95eb79b6b6d404865135971fe642 Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Tue, 18 Jul 2023 14:02:52 +0200 Subject: [PATCH] mscan: only spawn pager when stdout is a tty We still get the terminal size for when users manually page, e.g. mscan | less This is consistent with how mshow already works. Fixes #243. --- mscan.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mscan.c b/mscan.c index 0494409..4052f1f 100644 --- a/mscan.c +++ b/mscan.c @@ -575,9 +575,13 @@ main(int argc, char *argv[]) struct winsize w; int ttyfd = open("/dev/tty", O_RDONLY | O_NOCTTY); - if (ttyfd >= 0 && ioctl(ttyfd, TIOCGWINSZ, &w) == 0) { - cols = w.ws_col; + if (ttyfd >= 0) { + if (ioctl(ttyfd, TIOCGWINSZ, &w) == 0) + cols = w.ws_col; + close(ttyfd); + } + if (isatty(1)) { char *pg; pg = getenv("MBLAZE_PAGER"); if (!pg) @@ -590,8 +594,6 @@ main(int argc, char *argv[]) pg, strerror(errno)); } } - if (ttyfd >= 0) - close(ttyfd); xpledge("stdio rpath", "");