diff options
Diffstat (limited to 'tools/lib/subcmd/pager.c')
| -rw-r--r-- | tools/lib/subcmd/pager.c | 16 | 
1 files changed, 16 insertions, 0 deletions
diff --git a/tools/lib/subcmd/pager.c b/tools/lib/subcmd/pager.c index d50f3b58606b..6518bea926d6 100644 --- a/tools/lib/subcmd/pager.c +++ b/tools/lib/subcmd/pager.c @@ -3,6 +3,7 @@  #include <stdio.h>  #include <string.h>  #include <signal.h> +#include <sys/ioctl.h>  #include "pager.h"  #include "run-command.h"  #include "sigchain.h" @@ -14,6 +15,7 @@   */  static int spawned_pager; +static int pager_columns;  void pager_init(const char *pager_env)  { @@ -58,9 +60,12 @@ static void wait_for_pager_signal(int signo)  void setup_pager(void)  {  	const char *pager = getenv(subcmd_config.pager_env); +	struct winsize sz;  	if (!isatty(1))  		return; +	if (ioctl(1, TIOCGWINSZ, &sz) == 0) +		pager_columns = sz.ws_col;  	if (!pager)  		pager = getenv("PAGER");  	if (!(pager || access("/usr/bin/pager", X_OK))) @@ -98,3 +103,14 @@ int pager_in_use(void)  {  	return spawned_pager;  } + +int pager_get_columns(void) +{ +	char *s; + +	s = getenv("COLUMNS"); +	if (s) +		return atoi(s); + +	return (pager_columns ? pager_columns : 80) - 2; +}  |