Skip site navigation (1) Skip section navigation (2)

Re: psql: \pset pager 'always'?

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: greg(at)turnstep(dot)com
Cc: pgsql-general(at)postgresql(dot)org, pgsql-patches(at)postgresql(dot)org,antti(dot)haapala(at)iki(dot)fi
Subject: Re: psql: \pset pager 'always'?
Date: 2002-09-12 00:59:39
Message-ID: 200209120059.g8C0xdH29348@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-generalpgsql-patches
This has been saved for the 7.4 release:

	http://candle.pha.pa.us/cgi-bin/pgpatches2

---------------------------------------------------------------------------

greg(at)turnstep(dot)com wrote:
[ There is text before PGP section. ]
> 
[ PGP not available, raw data follows ]
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> NotDashEscaped: You need GnuPG to verify this message
> 
> 
> > I'm really annoyed by that little 'feature' of psql that decides whether
> > to use pager or not. I personally use GNU 'less' with options -S -F as my
> > pager, which allows me to scroll vertically AS WELL AS horizontally on
> > long input. So a "use pager always"  option with no strange automagic
> > behaviour would be nice.
> 
> Not a bad idea. Here is a patch that does just that, while maintaining the 
> "traditional" behavior, so the change should be transparent. Use the 
> command "\pset pager always" to turn it on. Anything else does the 
> normal toggle between "on" and "off"
> 
> 
> Greg Sabino Mullane greg(at)turnstep(dot)com
> PGP Key: 0x14964AC8 200209111525
> 
> 
> Index: command.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/command.c,v
> retrieving revision 1.80
> diff -c -r1.80 command.c
> *** command.c	2002/09/04 20:31:35	1.80
> --- command.c	2002/09/11 19:24:41
> ***************
> *** 1867,1877 ****
>   	/* toggle use of pager */
>   	else if (strcmp(param, "pager") == 0)
>   	{
> ! 		popt->topt.pager = !popt->topt.pager;
>   		if (!quiet)
>   		{
> ! 			if (popt->topt.pager)
>   				puts(gettext("Using pager is on."));
>   			else
>   				puts(gettext("Using pager is off."));
>   		}
> --- 1867,1884 ----
>   	/* toggle use of pager */
>   	else if (strcmp(param, "pager") == 0)
>   	{
> ! 		if (strcasecmp(value, "always") == 0)
> ! 				popt->topt.pager = 2;
> ! 		else if (popt->topt.pager == 1)
> ! 				popt->topt.pager = 0;
> ! 		else
> ! 				popt->topt.pager = 1;
>   		if (!quiet)
>   		{
> ! 			if (popt->topt.pager == 1)
>   				puts(gettext("Using pager is on."));
> + 			else if (popt->topt.pager == 2)
> + 				puts(gettext("Using pager is always."));
>   			else
>   				puts(gettext("Using pager is off."));
>   		}
> Index: help.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/help.c,v
> retrieving revision 1.56
> diff -c -r1.56 help.c
> *** help.c	2002/09/04 20:31:35	1.56
> --- help.c	2002/09/11 19:24:41
> ***************
> *** 159,165 ****
>   #endif
>   
>   void
> ! slashUsage(bool pager)
>   {
>   	FILE	   *output,
>   			   *pagerfd = NULL;
> --- 159,165 ----
>   #endif
>   
>   void
> ! slashUsage(unsigned small int pager)
>   {
>   	FILE	   *output,
>   			   *pagerfd = NULL;
> ***************
> *** 180,186 ****
>   		struct winsize screen_size;
>   
>   		result = ioctl(fileno(stdout), TIOCGWINSZ, &screen_size);
> ! 		if (result == -1 || 50 > screen_size.ws_row)
>   		{
>   #endif
>   			pagerprog = getenv("PAGER");
> --- 180,186 ----
>   		struct winsize screen_size;
>   
>   		result = ioctl(fileno(stdout), TIOCGWINSZ, &screen_size);
> ! 		if (result == -1 || 50 > screen_size.ws_row || pager == 2)
>   		{
>   #endif
>   			pagerprog = getenv("PAGER");
> Index: help.h
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/help.h,v
> retrieving revision 1.9
> diff -c -r1.9 help.h
> *** help.h	2002/07/15 01:56:25	1.9
> --- help.h	2002/09/11 19:24:41
> ***************
> *** 10,16 ****
>   
>   void		usage(void);
>   
> ! void		slashUsage(bool pager);
>   
>   void		helpSQL(const char *topic);
>   
> --- 10,16 ----
>   
>   void		usage(void);
>   
> ! void		slashUsage(unsigned small int pager);
>   
>   void		helpSQL(const char *topic);
>   
> Index: print.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/print.c,v
> retrieving revision 1.31
> diff -c -r1.31 print.c
> *** print.c	2002/09/01 23:30:46	1.31
> --- print.c	2002/09/11 19:24:41
> ***************
> *** 1022,1028 ****
>   				lines++;
>   
>   		result = ioctl(fileno(stdout), TIOCGWINSZ, &screen_size);
> ! 		if (result == -1 || lines > screen_size.ws_row)
>   		{
>   #endif
>   			pagerprog = getenv("PAGER");
> --- 1022,1028 ----
>   				lines++;
>   
>   		result = ioctl(fileno(stdout), TIOCGWINSZ, &screen_size);
> ! 		if (result == -1 || lines > screen_size.ws_row || opt->pager == 2)
>   		{
>   #endif
>   			pagerprog = getenv("PAGER");
> Index: print.h
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/print.h,v
> retrieving revision 1.14
> diff -c -r1.14 print.h
> *** print.h	2002/09/04 20:31:36	1.14
> --- print.h	2002/09/11 19:24:41
> ***************
> *** 26,33 ****
>   	enum printFormat format;	/* one of the above */
>   	bool		expanded;		/* expanded/vertical output (if supported
>   								 * by output format) */
> ! 	bool		pager;			/* use pager for output (if to stdout and
> ! 								 * stdout is a tty) */
>   	bool		tuples_only;	/* don't output headers, row counts, etc. */
>   	unsigned short int border;	/* Print a border around the table.
>   								 * 0=none, 1=dividing lines, 2=full */
> --- 26,34 ----
>   	enum printFormat format;	/* one of the above */
>   	bool		expanded;		/* expanded/vertical output (if supported
>   								 * by output format) */
> ! 	unsigned short int pager;	/* use pager for output (if to stdout and
> ! 								 * stdout is a tty)
> !  								 * 0=off 1=on 2=always */
>   	bool		tuples_only;	/* don't output headers, row counts, etc. */
>   	unsigned short int border;	/* Print a border around the table.
>   								 * 0=none, 1=dividing lines, 2=full */
> Index: startup.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/startup.c,v
> retrieving revision 1.66
> diff -c -r1.66 startup.c
> *** startup.c	2002/09/06 02:33:47	1.66
> --- startup.c	2002/09/11 19:24:41
> ***************
> *** 137,143 ****
>   	pset.popt.topt.format = PRINT_ALIGNED;
>   	pset.queryFout = stdout;
>   	pset.popt.topt.border = 1;
> ! 	pset.popt.topt.pager = true;
>   	pset.popt.default_footer = true;
>   
>   	SetVariable(pset.vars, "VERSION", PG_VERSION_STR);
> --- 137,143 ----
>   	pset.popt.topt.format = PRINT_ALIGNED;
>   	pset.queryFout = stdout;
>   	pset.popt.topt.border = 1;
> ! 	pset.popt.topt.pager = 1;
>   	pset.popt.default_footer = true;
>   
>   	SetVariable(pset.vars, "VERSION", PG_VERSION_STR);
> 
> -----BEGIN PGP SIGNATURE-----
> Comment: http://www.turnstep.com/pgp.html
> 
> iD8DBQE9f5klvJuQZxSWSsgRAuFGAJwNsHiudvGq+Xq8WpQO4bSrd+QUtwCgo1lB
> iolPoprltuDfsb4YSjAHHs4=
> =5Kt2
> -----END PGP SIGNATURE-----
> 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
> 
> http://archives.postgresql.org
> 
[ Decrypting message... End of raw data. ]

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman(at)candle(dot)pha(dot)pa(dot)us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

In response to

pgsql-patches by date

Next:From: Serguei MokhovDate: 2002-09-12 02:07:23
Subject: Re: fix for palloc() of user-supplied length
Previous:From: Bruce MomjianDate: 2002-09-12 00:26:43
Subject: Re: fmgr.h: PG_NARGS() for number of arguments passed

pgsql-general by date

Next:From: Martijn van OosterhoutDate: 2002-09-12 01:12:28
Subject: Re: pg_dumpall between Linux and FreeBSD.
Previous:From: Justin HawkinsDate: 2002-09-12 00:50:45
Subject: Re: psql: \pset pager 'always'?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group