Re: psql: \pset pager 'always'? - Mailing list pgsql-general

From Bruce Momjian
Subject Re: psql: \pset pager 'always'?
Date
Msg-id 200209120059.g8C0xdH29348@candle.pha.pa.us
Whole thread Raw
In response to Re: psql: \pset pager 'always'?  (greg@turnstep.com)
List pgsql-general
This has been saved for the 7.4 release:

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

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

greg@turnstep.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@turnstep.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@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

pgsql-general by date:

Previous
From: "Ligia Pimentel"
Date:
Subject: Re: Table with 90 columns
Next
From: Martijn van Oosterhout
Date:
Subject: Re: pg_dumpall between Linux and FreeBSD.