Re: [HACKERS] use of pager on Windows psql

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: [HACKERS] use of pager on Windows psql
Дата
Msg-id 200805172336.m4HNa7G22034@momjian.us
обсуждение исходный текст
Ответы Re: [HACKERS] use of pager on Windows psql  (Andrew Dunstan <andrew@dunslane.net>)
Список pgsql-patches
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  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
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

В списке pgsql-patches по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: psql command aliases support
Следующее
От: daveg
Дата:
Сообщение: Re: pg_dump lock timeout - resend