Re: [HACKERS] use of pager on Windows psql

Bruce Momjian <[email protected]>
Newsgroups gmane.comp.db.postgresql.devel.patches
Message-ID <[email protected]>
Andrew Dunstan wrote:
> > Not sure why ware are not.  Should we enabled that code on Win32 and see
> > how it works?  Can you test it? Was it some MinGW limitation?  I do see
> > isatty() being used on lots of platforms.
> >
> > This is kind of odd.  Ah, I bet it came from libpq's PQprint(), which I
> > think we had working on Win32 long before we had psql working and
> > perhaps I copied it from there.  I don't see the Win32 checks around
> > isatty() anywhere else.
> >
> >   
> >> In fact, it looks to me like it would be much more sensible to #include 
> >> "settings.h" and then simply test pset.notty for all platforms.
> >>     
> >
> > Yes, we could do that but does the isatty() value ever change while psql
> > is running?  When you do '\g filename' does stdout then have isatty as
> > false?
> >   
> 
> 
> Good point. I think the best thing would just be to remove the #ifndef 
> WIN32 / #endif lines

OK, patch applied to remove the Win32 test in both places.

I was wrong about \g filename changing stdout, I think.  It keeps stdout
but uses a different output stream.  I am just unsure, given all the
features of psql, wether it could change stdin/stdout while running in
some way.

-- 
  Bruce Momjian  <[email protected]>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +


-- 
Sent via pgsql-patches mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches
/rtmp/diff (text/x-diff, 1.7 KB)
Index: src/bin/psql/print.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/psql/print.c,v
retrieving revision 1.105
diff -c -c -r1.105 print.c
*** src/bin/psql/print.c	17 May 2008 21:40:44 -0000	1.105
--- src/bin/psql/print.c	17 May 2008 23:32:36 -0000
***************
*** 1912,1924 ****
  PageOutput(int lines, unsigned short int pager)
  {
  	/* check whether we need / can / are supposed to use pager */
! 	if (pager
! #ifndef WIN32
! 		&&
! 		isatty(fileno(stdin)) &&
! 		isatty(fileno(stdout))
! #endif
! 		)
  	{
  		const char *pagerprog;
  		FILE	   *pagerpipe;
--- 1912,1918 ----
  PageOutput(int lines, unsigned short int pager)
  {
  	/* check whether we need / can / are supposed to use pager */
! 	if (pager && isatty(fileno(stdin)) && isatty(fileno(stdout)))
  	{
  		const char *pagerprog;
  		FILE	   *pagerpipe;
Index: src/interfaces/libpq/fe-print.c
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/libpq/fe-print.c,v
retrieving revision 1.75
diff -c -c -r1.75 fe-print.c
*** src/interfaces/libpq/fe-print.c	1 Jan 2008 19:46:00 -0000	1.75
--- src/interfaces/libpq/fe-print.c	17 May 2008 23:32:36 -0000
***************
*** 147,159 ****
  
  		if (fout == NULL)
  			fout = stdout;
! 		if (po->pager && fout == stdout
! #ifndef WIN32
! 			&&
! 			isatty(fileno(stdin)) &&
! 			isatty(fileno(stdout))
! #endif
! 			)
  		{
  			/*
  			 * If we think there'll be more than one screen of output, try to
--- 147,154 ----
  
  		if (fout == NULL)
  			fout = stdout;
! 		if (po->pager && fout == stdout && isatty(fileno(stdin)) &&
! 			isatty(fileno(stdout)))
  		{
  			/*
  			 * If we think there'll be more than one screen of output, try to
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.