OSDN Git Service

No need for screen_size to be static.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 6 Jan 2001 17:43:01 +0000 (17:43 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 6 Jan 2001 17:43:01 +0000 (17:43 +0000)
src/interfaces/libpq/fe-print.c

index 75418fc..192e89b 100644 (file)
  * didn't really belong there.
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-print.c,v 1.38 2000/05/29 21:25:04 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-print.c,v 1.39 2001/01/06 17:43:01 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "postgres.h"
 
 #include <signal.h>
-#include "libpq-fe.h"
-#include "libpq-int.h"
-#include "pqsignal.h"
 
 #ifdef WIN32
 #include "win32.h"
 #endif
 #endif
 
-#ifdef TIOCGWINSZ
-static struct winsize screen_size;
-
-#else
-static struct winsize
-{
-       int                     ws_row;
-       int                     ws_col;
-}                      screen_size;
-
-#endif
+#include "libpq-fe.h"
+#include "libpq-int.h"
+#include "pqsignal.h"
 
 
 static void do_field(const PQprintOpt *po, const PGresult *res,
@@ -103,6 +92,15 @@ PQprint(FILE *fout,
                int                     usePipe = 0;
                pqsigfunc       oldsigpipehandler = NULL;
                char       *pagerenv;
+#ifdef TIOCGWINSZ
+               struct winsize screen_size;
+#else
+               struct winsize
+               {
+                       int                     ws_row;
+                       int                     ws_col;
+               }                       screen_size;
+#endif
 
                nTups = PQntuples(res);
                if (!(fieldNames = (const char **) calloc(nFields, sizeof(char *))))
@@ -151,17 +149,21 @@ PQprint(FILE *fout,
 #endif
                        )
                {
-                       /* try to pipe to the pager program if possible */
+                       /*
+                        * If we think there'll be more than one screen of output,
+                        * try to pipe to the pager program.
+                        */
 #ifdef TIOCGWINSZ
                        if (ioctl(fileno(stdout), TIOCGWINSZ, &screen_size) == -1 ||
                                screen_size.ws_col == 0 ||
                                screen_size.ws_row == 0)
                        {
-#endif
                                screen_size.ws_row = 24;
                                screen_size.ws_col = 80;
-#ifdef TIOCGWINSZ
                        }
+#else
+                       screen_size.ws_row = 24;
+                       screen_size.ws_col = 80;
 #endif
                        pagerenv = getenv("PAGER");
                        if (pagerenv != NULL &&