mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Fix \? and \pset pager handling. \? wasn't honoring pager before.
This commit is contained in:
		@@ -1,5 +1,5 @@
 | 
				
			|||||||
<!--
 | 
					<!--
 | 
				
			||||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.67 2002/06/20 16:00:43 momjian Exp $
 | 
					$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.68 2002/07/15 01:56:25 momjian Exp $
 | 
				
			||||||
PostgreSQL documentation
 | 
					PostgreSQL documentation
 | 
				
			||||||
-->
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1036,7 +1036,7 @@ lo_import 152801
 | 
				
			|||||||
	  <term><literal>pager</literal></term>
 | 
						  <term><literal>pager</literal></term>
 | 
				
			||||||
	  <listitem>
 | 
						  <listitem>
 | 
				
			||||||
	  <para>
 | 
						  <para>
 | 
				
			||||||
	  Toggles the list of a pager to do table output. If the
 | 
						  Toggles the use of a pager for query and psql help output. If the
 | 
				
			||||||
	  environment variable <envar>PAGER</envar> is set, the output
 | 
						  environment variable <envar>PAGER</envar> is set, the output
 | 
				
			||||||
	  is piped to the specified program. Otherwise
 | 
						  is piped to the specified program. Otherwise
 | 
				
			||||||
	  <filename>more</filename> is used.
 | 
						  <filename>more</filename> is used.
 | 
				
			||||||
@@ -1050,7 +1050,7 @@ lo_import 152801
 | 
				
			|||||||
	  of the printing routines it is not always possible to predict
 | 
						  of the printing routines it is not always possible to predict
 | 
				
			||||||
	  the number of lines that will actually be printed. For that
 | 
						  the number of lines that will actually be printed. For that
 | 
				
			||||||
	  reason <application>psql</application> might not appear very
 | 
						  reason <application>psql</application> might not appear very
 | 
				
			||||||
	  discriminating about when to use the pager and when not to.
 | 
						  discriminating about when to use the pager.
 | 
				
			||||||
	  </para>
 | 
						  </para>
 | 
				
			||||||
	  </listitem>
 | 
						  </listitem>
 | 
				
			||||||
	  </varlistentry>
 | 
						  </varlistentry>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * Copyright 2000 by PostgreSQL Global Development Group
 | 
					 * Copyright 2000 by PostgreSQL Global Development Group
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.72 2002/04/24 05:24:00 petere Exp $
 | 
					 * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.73 2002/07/15 01:56:25 momjian Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#include "postgres_fe.h"
 | 
					#include "postgres_fe.h"
 | 
				
			||||||
#include "command.h"
 | 
					#include "command.h"
 | 
				
			||||||
@@ -846,7 +846,7 @@ exec_command(const char *cmd,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* \? -- slash command help */
 | 
						/* \? -- slash command help */
 | 
				
			||||||
	else if (strcmp(cmd, "?") == 0)
 | 
						else if (strcmp(cmd, "?") == 0)
 | 
				
			||||||
		slashUsage();
 | 
							slashUsage(pset.popt.topt.pager);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if 0
 | 
					#if 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,9 +3,10 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * Copyright 2000 by PostgreSQL Global Development Group
 | 
					 * Copyright 2000 by PostgreSQL Global Development Group
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * $Header: /cvsroot/pgsql/src/bin/psql/help.c,v 1.51 2002/06/20 20:29:42 momjian Exp $
 | 
					 * $Header: /cvsroot/pgsql/src/bin/psql/help.c,v 1.52 2002/07/15 01:56:25 momjian Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#include "postgres_fe.h"
 | 
					#include "postgres_fe.h"
 | 
				
			||||||
 | 
					#include "print.h"
 | 
				
			||||||
#include "help.h"
 | 
					#include "help.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <signal.h>
 | 
					#include <signal.h>
 | 
				
			||||||
@@ -138,7 +139,6 @@ usage(void)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * slashUsage
 | 
					 * slashUsage
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
@@ -154,98 +154,106 @@ struct winsize
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
slashUsage(void)
 | 
					slashUsage(bool pager)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	bool		usePipe = false;
 | 
						FILE	   *output, *pagerfd = NULL;
 | 
				
			||||||
	const char *pagerenv;
 | 
					
 | 
				
			||||||
	FILE	   *fout;
 | 
						/* check whether we need / can / are supposed to use pager */
 | 
				
			||||||
	struct winsize screen_size;
 | 
						if (pager
 | 
				
			||||||
 | 
					#ifndef WIN32
 | 
				
			||||||
 | 
							&&
 | 
				
			||||||
 | 
							isatty(fileno(stdin)) &&
 | 
				
			||||||
 | 
							isatty(fileno(stdout))
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							const char *pagerprog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef TIOCGWINSZ
 | 
					#ifdef TIOCGWINSZ
 | 
				
			||||||
	if (pset.notty == 0 &&
 | 
							int			result;
 | 
				
			||||||
		(ioctl(fileno(stdout), TIOCGWINSZ, &screen_size) == -1 ||
 | 
							struct winsize screen_size;
 | 
				
			||||||
		 screen_size.ws_col == 0 ||
 | 
					
 | 
				
			||||||
		 screen_size.ws_row == 0))
 | 
							result = ioctl(fileno(stdout), TIOCGWINSZ, &screen_size);
 | 
				
			||||||
	{
 | 
							if (result == -1 || 50 > screen_size.ws_row)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		screen_size.ws_row = 24;
 | 
								pagerprog = getenv("PAGER");
 | 
				
			||||||
		screen_size.ws_col = 80;
 | 
								if (!pagerprog)
 | 
				
			||||||
 | 
									pagerprog = DEFAULT_PAGER;
 | 
				
			||||||
 | 
								pagerfd = popen(pagerprog, "w");
 | 
				
			||||||
#ifdef TIOCGWINSZ
 | 
					#ifdef TIOCGWINSZ
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pset.notty == 0 &&
 | 
						if (pagerfd)
 | 
				
			||||||
		(pagerenv = getenv("PAGER")) &&
 | 
					 | 
				
			||||||
		(pagerenv[0] != '\0') &&
 | 
					 | 
				
			||||||
		screen_size.ws_row <= 46 &&
 | 
					 | 
				
			||||||
		(fout = popen(pagerenv, "w")))
 | 
					 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		usePipe = true;
 | 
							output = pagerfd;
 | 
				
			||||||
#ifndef WIN32
 | 
					#ifndef WIN32
 | 
				
			||||||
		pqsignal(SIGPIPE, SIG_IGN);
 | 
							pqsignal(SIGPIPE, SIG_IGN);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		fout = stdout;
 | 
							output = stdout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* if you add/remove a line here, change the row test above */
 | 
						/* if you add/remove a line here, change the row test above */
 | 
				
			||||||
    /*      if this " is the start of the string then it ought to end there to fit in 80 columns >> " */
 | 
					    /*      if this " is the start of the string then it ought to end there to fit in 80 columns >> " */
 | 
				
			||||||
	fprintf(fout, _(" \\a             toggle between unaligned and aligned output mode\n"));
 | 
						fprintf(output, _(" \\a             toggle between unaligned and aligned output mode\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\c[onnect] [DBNAME|- [USER]]\n"
 | 
						fprintf(output, _(" \\c[onnect] [DBNAME|- [USER]]\n"
 | 
				
			||||||
					"                connect to new database (currently \"%s\")\n"),
 | 
										"                connect to new database (currently \"%s\")\n"),
 | 
				
			||||||
			PQdb(pset.db));
 | 
								PQdb(pset.db));
 | 
				
			||||||
	fprintf(fout, _(" \\C [STRING]    set table title, or unset if none\n"));
 | 
						fprintf(output, _(" \\C [STRING]    set table title, or unset if none\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\cd [DIR]      change the current working directory\n"));
 | 
						fprintf(output, _(" \\cd [DIR]      change the current working directory\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\copy ...      perform SQL COPY with data stream to the client host\n"));
 | 
						fprintf(output, _(" \\copy ...      perform SQL COPY with data stream to the client host\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\copyright     show PostgreSQL usage and distribution terms\n"));
 | 
						fprintf(output, _(" \\copyright     show PostgreSQL usage and distribution terms\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\d [NAME]      describe table (or view, index, sequence)\n"));
 | 
						fprintf(output, _(" \\d [NAME]      describe table (or view, index, sequence)\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\d{t|i|s|v|S} [PATTERN]\n"));
 | 
						fprintf(output, _(" \\d{t|i|s|v|S} [PATTERN]\n"));
 | 
				
			||||||
	fprintf(fout, _("                list tables/indexes/sequences/views/system tables\n"));
 | 
						fprintf(output, _("                list tables/indexes/sequences/views/system tables\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\da [PATTERN]  list aggregate functions\n"));
 | 
						fprintf(output, _(" \\da [PATTERN]  list aggregate functions\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\dd [PATTERN]  show comment for object\n"));
 | 
						fprintf(output, _(" \\dd [PATTERN]  show comment for object\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\dD [PATTERN]  list domains\n"));
 | 
						fprintf(output, _(" \\dD [PATTERN]  list domains\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\df [PATTERN]  list functions\n"));
 | 
						fprintf(output, _(" \\df [PATTERN]  list functions\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\do [NAME]     list operators\n"));
 | 
						fprintf(output, _(" \\do [NAME]     list operators\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\dl            list large objects, same as lo_list\n"));
 | 
						fprintf(output, _(" \\dl            list large objects, same as lo_list\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\dp [PATTERN]  list table access privileges\n"));
 | 
						fprintf(output, _(" \\dp [PATTERN]  list table access privileges\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\dT [PATTERN]  list data types\n"));
 | 
						fprintf(output, _(" \\dT [PATTERN]  list data types\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\du [PATTERN]  list users\n"));
 | 
						fprintf(output, _(" \\du [PATTERN]  list users\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\e [FILE]      edit the query buffer (or file) with external editor\n"));
 | 
						fprintf(output, _(" \\e [FILE]      edit the query buffer (or file) with external editor\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\echo [STRING] write string to standard output\n"));
 | 
						fprintf(output, _(" \\echo [STRING] write string to standard output\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\encoding [ENCODING]  show or set client encoding\n"));
 | 
						fprintf(output, _(" \\encoding [ENCODING]  show or set client encoding\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\f [STRING]    show or set field separator for unaligned query output\n"));
 | 
						fprintf(output, _(" \\f [STRING]    show or set field separator for unaligned query output\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\g [FILE]      send query buffer to server (and results to file or |pipe)\n"));
 | 
						fprintf(output, _(" \\g [FILE]      send query buffer to server (and results to file or |pipe)\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\h [NAME]      help on syntax of SQL commands, * for all commands\n"));
 | 
						fprintf(output, _(" \\h [NAME]      help on syntax of SQL commands, * for all commands\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\H             toggle HTML output mode (currently %s)\n"),
 | 
						fprintf(output, _(" \\H             toggle HTML output mode (currently %s)\n"),
 | 
				
			||||||
			ON(pset.popt.topt.format == PRINT_HTML));
 | 
								ON(pset.popt.topt.format == PRINT_HTML));
 | 
				
			||||||
	fprintf(fout, _(" \\i FILE        execute commands from file\n"));
 | 
						fprintf(output, _(" \\i FILE        execute commands from file\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\l             list all databases\n"));
 | 
						fprintf(output, _(" \\l             list all databases\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\lo_export, \\lo_import, \\lo_list, \\lo_unlink\n"
 | 
						fprintf(output, _(" \\lo_export, \\lo_import, \\lo_list, \\lo_unlink\n"
 | 
				
			||||||
					"                large object operations\n"));
 | 
										"                large object operations\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\o FILE        send all query results to file or |pipe\n"));
 | 
						fprintf(output, _(" \\o FILE        send all query results to file or |pipe\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\p             show the contents of the query buffer\n"));
 | 
						fprintf(output, _(" \\p             show the contents of the query buffer\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\pset NAME [VALUE]  set table output option (NAME := {format|border|expanded|\n"
 | 
						fprintf(output, _(" \\pset NAME [VALUE]  set table output option (NAME := {format|border|expanded|\n"
 | 
				
			||||||
					"                fieldsep|null|recordsep|tuples_only|title|tableattr|pager})\n"));
 | 
										"                fieldsep|null|recordsep|tuples_only|title|tableattr|pager})\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\q             quit psql\n"));
 | 
						fprintf(output, _(" \\q             quit psql\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\qecho [STRING]  write string to query output stream (see \\o)\n"));
 | 
						fprintf(output, _(" \\qecho [STRING]  write string to query output stream (see \\o)\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\r             reset (clear) the query buffer\n"));
 | 
						fprintf(output, _(" \\r             reset (clear) the query buffer\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\s [FILE]      display history or save it to file\n"));
 | 
						fprintf(output, _(" \\s [FILE]      display history or save it to file\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\set [NAME [VALUE]]  set internal variable, or list all if no parameters\n"));
 | 
						fprintf(output, _(" \\set [NAME [VALUE]]  set internal variable, or list all if no parameters\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\t             show only rows (currently %s)\n"),
 | 
						fprintf(output, _(" \\t             show only rows (currently %s)\n"),
 | 
				
			||||||
			ON(pset.popt.topt.tuples_only));
 | 
								ON(pset.popt.topt.tuples_only));
 | 
				
			||||||
	fprintf(fout, _(" \\T [STRING]    set HTML <table>-tag attributes, or unset if none\n"));
 | 
						fprintf(output, _(" \\T [STRING]    set HTML <table>-tag attributes, or unset if none\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\timing        toggle timing of queries (currently %s)\n"),
 | 
						fprintf(output, _(" \\timing        toggle timing of queries (currently %s)\n"),
 | 
				
			||||||
			ON(pset.timing));
 | 
								ON(pset.timing));
 | 
				
			||||||
	fprintf(fout, _(" \\unset NAME    unset (delete) internal variable\n"));
 | 
						fprintf(output, _(" \\unset NAME    unset (delete) internal variable\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\w [FILE]      write query buffer to file\n"));
 | 
						fprintf(output, _(" \\w [FILE]      write query buffer to file\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\x             toggle expanded output (currently %s)\n"),
 | 
						fprintf(output, _(" \\x             toggle expanded output (currently %s)\n"),
 | 
				
			||||||
			ON(pset.popt.topt.expanded));
 | 
								ON(pset.popt.topt.expanded));
 | 
				
			||||||
	fprintf(fout, _(" \\z [PATTERN]   list table access privileges (same as \\dp)\n"));
 | 
						fprintf(output, _(" \\z [PATTERN]   list table access privileges (same as \\dp)\n"));
 | 
				
			||||||
	fprintf(fout, _(" \\! [COMMAND]   execute command in shell or start interactive shell\n"));
 | 
						fprintf(output, _(" \\! [COMMAND]   execute command in shell or start interactive shell\n"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (usePipe)
 | 
						if (pagerfd)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		pclose(fout);
 | 
							pclose(pagerfd);
 | 
				
			||||||
#ifndef WIN32
 | 
					#ifndef WIN32
 | 
				
			||||||
		pqsignal(SIGPIPE, SIG_DFL);
 | 
							pqsignal(SIGPIPE, SIG_DFL);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,14 +3,14 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * Copyright 2000 by PostgreSQL Global Development Group
 | 
					 * Copyright 2000 by PostgreSQL Global Development Group
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * $Header: /cvsroot/pgsql/src/bin/psql/help.h,v 1.8 2001/10/28 06:25:58 momjian Exp $
 | 
					 * $Header: /cvsroot/pgsql/src/bin/psql/help.h,v 1.9 2002/07/15 01:56:25 momjian Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#ifndef HELP_H
 | 
					#ifndef HELP_H
 | 
				
			||||||
#define HELP_H
 | 
					#define HELP_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void		usage(void);
 | 
					void		usage(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void		slashUsage(void);
 | 
					void		slashUsage(bool pager);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void		helpSQL(const char *topic);
 | 
					void		helpSQL(const char *topic);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * Copyright 2000 by PostgreSQL Global Development Group
 | 
					 * Copyright 2000 by PostgreSQL Global Development Group
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * $Header: /cvsroot/pgsql/src/bin/psql/print.c,v 1.26 2002/04/24 15:56:38 tgl Exp $
 | 
					 * $Header: /cvsroot/pgsql/src/bin/psql/print.c,v 1.27 2002/07/15 01:56:25 momjian Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#include "postgres_fe.h"
 | 
					#include "postgres_fe.h"
 | 
				
			||||||
#include "print.h"
 | 
					#include "print.h"
 | 
				
			||||||
@@ -23,12 +23,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "settings.h"
 | 
					#include "settings.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __CYGWIN__
 | 
					 | 
				
			||||||
#define DEFAULT_PAGER "more"
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define DEFAULT_PAGER "less"
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef HAVE_TERMIOS_H
 | 
					#ifdef HAVE_TERMIOS_H
 | 
				
			||||||
#include <termios.h>
 | 
					#include <termios.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -1033,7 +1027,7 @@ printTable(const char *title,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	const char *default_footer[] = {NULL};
 | 
						const char *default_footer[] = {NULL};
 | 
				
			||||||
	unsigned short int border = opt->border;
 | 
						unsigned short int border = opt->border;
 | 
				
			||||||
	FILE	   *pager = NULL,
 | 
						FILE	   *pagerfd = NULL,
 | 
				
			||||||
			   *output;
 | 
								   *output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1090,15 +1084,15 @@ printTable(const char *title,
 | 
				
			|||||||
			pagerprog = getenv("PAGER");
 | 
								pagerprog = getenv("PAGER");
 | 
				
			||||||
			if (!pagerprog)
 | 
								if (!pagerprog)
 | 
				
			||||||
				pagerprog = DEFAULT_PAGER;
 | 
									pagerprog = DEFAULT_PAGER;
 | 
				
			||||||
			pager = popen(pagerprog, "w");
 | 
								pagerfd = popen(pagerprog, "w");
 | 
				
			||||||
#ifdef TIOCGWINSZ
 | 
					#ifdef TIOCGWINSZ
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pager)
 | 
						if (pagerfd)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		output = pager;
 | 
							output = pagerfd;
 | 
				
			||||||
#ifndef WIN32
 | 
					#ifndef WIN32
 | 
				
			||||||
		pqsignal(SIGPIPE, SIG_IGN);
 | 
							pqsignal(SIGPIPE, SIG_IGN);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -1139,13 +1133,12 @@ printTable(const char *title,
 | 
				
			|||||||
			fprintf(stderr, "+ Oops, you shouldn't see this!\n");
 | 
								fprintf(stderr, "+ Oops, you shouldn't see this!\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pager)
 | 
						if (pagerfd)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		pclose(pager);
 | 
							pclose(pagerfd);
 | 
				
			||||||
#ifndef WIN32
 | 
					#ifndef WIN32
 | 
				
			||||||
		pqsignal(SIGPIPE, SIG_DFL);
 | 
							pqsignal(SIGPIPE, SIG_DFL);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * Copyright 2000 by PostgreSQL Global Development Group
 | 
					 * Copyright 2000 by PostgreSQL Global Development Group
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * $Header: /cvsroot/pgsql/src/bin/psql/print.h,v 1.12 2001/11/05 17:46:31 momjian Exp $
 | 
					 * $Header: /cvsroot/pgsql/src/bin/psql/print.h,v 1.13 2002/07/15 01:56:25 momjian Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#ifndef PRINT_H
 | 
					#ifndef PRINT_H
 | 
				
			||||||
#define PRINT_H
 | 
					#define PRINT_H
 | 
				
			||||||
@@ -72,7 +72,12 @@ typedef struct _printQueryOpt
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * It calls the printTable above with all the things set straight.
 | 
					 * It calls the printTable above with all the things set straight.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void
 | 
					void printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout);
 | 
				
			||||||
			printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout);
 | 
					
 | 
				
			||||||
 | 
					#ifndef __CYGWIN__
 | 
				
			||||||
 | 
					#define DEFAULT_PAGER "more"
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#define DEFAULT_PAGER "less"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif   /* PRINT_H */
 | 
					#endif   /* PRINT_H */
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user