From: Bruce Momjian Date: Fri, 8 Nov 2002 19:12:21 +0000 (+0000) Subject: Here is a patch that does just that, while maintaining the X-Git-Tag: REL7_4_BETA1~1606 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b26dfbb0e3204c170e7928b7156521fa18b744bf;p=postgresql 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 --- diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index 6e3525d768..bb8d8f5eb4 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -1,5 +1,5 @@ @@ -1456,21 +1456,21 @@ lo_import 152801 pager - Toggles the use of a pager for query and psql help output. If the - environment variable PAGER is set, the output - is piped to the specified program. Otherwise a platform-dependent default (such as + Controls use of a pager for query and psql + help output. If the environment variable PAGER + is set, the output is piped to the specified program. + Otherwise a platform-dependent default (such as more) is used. - In any case, psql only uses the - pager if it seems appropriate. That means among other things - that the output is to a terminal and that the table would - normally not fit on the screen. Because of the modular nature - of the printing routines it is not always possible to predict - the number of lines that will actually be printed. For that - reason psql might not appear very - discriminating about when to use the pager. + When the pager is off, the pager is not used. When the pager + is on, the pager is used only when appropriate, i.e. the + output is to a terminal and will not fit on the screen. + (psql does not do a perfect job of estimating + when to use the pager.) \pset pager turns the + pager on and off. Pager can also be set to always, + which causes the pager to be always used. diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 83ce799e51..bfe5b45e1e 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -3,7 +3,7 @@ * * Copyright 2000-2002 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.84 2002/10/23 19:23:56 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.85 2002/11/08 19:12:21 momjian Exp $ */ #include "postgres_fe.h" #include "command.h" @@ -1873,11 +1873,18 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet) /* toggle use of pager */ else if (strcmp(param, "pager") == 0) { - popt->topt.pager = !popt->topt.pager; + if (value && 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) + 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.")); } diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index 55af65a3ae..fcd898877a 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -3,7 +3,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.51 2002/10/29 19:35:33 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.52 2002/11/08 19:12:21 momjian Exp $ */ #include "postgres_fe.h" #include "common.h" @@ -548,7 +548,7 @@ PageOutput(int lines, bool pager) struct winsize screen_size; result = ioctl(fileno(stdout), TIOCGWINSZ, &screen_size); - if (result == -1 || lines > screen_size.ws_row) + if (result == -1 || lines > screen_size.ws_row || pager > 1) { #endif pagerprog = getenv("PAGER"); diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c index 6e5323c01a..f9dd6145ae 100644 --- a/src/bin/psql/help.c +++ b/src/bin/psql/help.c @@ -3,7 +3,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/help.c,v 1.60 2002/10/24 01:33:50 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/help.c,v 1.61 2002/11/08 19:12:21 momjian Exp $ */ #include "postgres_fe.h" #include "common.h" @@ -159,7 +159,7 @@ struct winsize #endif void -slashUsage(bool pager) +slashUsage(unsigned short int pager) { FILE *output; diff --git a/src/bin/psql/help.h b/src/bin/psql/help.h index 28a8786466..7b3078dd85 100644 --- a/src/bin/psql/help.h +++ b/src/bin/psql/help.h @@ -3,14 +3,14 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/help.h,v 1.10 2002/10/23 19:23:57 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/help.h,v 1.11 2002/11/08 19:12:21 momjian Exp $ */ #ifndef HELP_H #define HELP_H void usage(void); -void slashUsage(bool pager); +void slashUsage(unsigned short int pager); void helpSQL(const char *topic, bool pager); diff --git a/src/bin/psql/print.h b/src/bin/psql/print.h index 09ec685bfe..f97bf9ead5 100644 --- a/src/bin/psql/print.h +++ b/src/bin/psql/print.h @@ -3,7 +3,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/print.h,v 1.14 2002/09/04 20:31:36 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/print.h,v 1.15 2002/11/08 19:12:21 momjian Exp $ */ #ifndef PRINT_H #define PRINT_H @@ -26,8 +26,9 @@ typedef struct _printTableOpt 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) */ + 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 */ diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 16e7ed9c28..3a9ab01e0e 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -3,7 +3,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.68 2002/10/18 22:05:36 petere Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.69 2002/11/08 19:12:21 momjian Exp $ */ #include "postgres_fe.h" @@ -137,7 +137,7 @@ main(int argc, char *argv[]) pset.popt.topt.format = PRINT_ALIGNED; pset.queryFout = stdout; pset.popt.topt.border = 1; - pset.popt.topt.pager = true; + pset.popt.topt.pager = 1; pset.popt.default_footer = true; SetVariable(pset.vars, "VERSION", PG_VERSION_STR);