Re: Patch to change psql default banner v6 - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: Patch to change psql default banner v6
Date
Msg-id 200805151921.m4FJLb621494@momjian.us
Whole thread Raw
In response to Re: Patch to change psql default banner v6  (Alvaro Herrera <alvherre@commandprompt.com>)
Responses Re: Patch to change psql default banner v6  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: Patch to change psql default banner v6  (David Fetter <david@fetter.org>)
List pgsql-patches
Alvaro Herrera wrote:
>
> I'm OK with thisG but please move the printSSLInfo() call just before
> echoing the help line.

Oh, good catch, moved.  I also moved the Win32 code page message up too.
Patch attached.

I hacked up an example that shows both SSL and Win32 code page messages:

    $ psql test
    psql (8.4devel)
            SSL connection (cipher: 2343, bits: 512)
            WARNING: Console code page (323) differs from Windows code page (2323)
                     8-bit characters might not work correctly. See psql reference
                     page "Notes for Windows users" for details.
    Type "help" for help.

    test=>

With major version mismatches it looks like this:

    $ psql test
    psql (8.4devel)
            SSL connection (cipher: 2343, bits: 512)
            WARNING: Console code page (323) differs from Windows code page (2323)
                     8-bit characters might not work correctly. See psql reference
                     page "Notes for Windows users" for details.
        WARNING: psql version 8.4.0, server version 8.3.1.
             Some psql features might not work.
    Type "help" for help.

    test=>

By indenting those messages the 'help' message still stands out.
Adjustments?

--
  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/help.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/psql/help.c,v
retrieving revision 1.127
diff -c -c -r1.127 help.c
*** src/bin/psql/help.c    14 May 2008 15:30:22 -0000    1.127
--- src/bin/psql/help.c    15 May 2008 19:17:27 -0000
***************
*** 170,182 ****
       */
      fprintf(output, _("General\n"));
      fprintf(output, _("  \\copyright     show PostgreSQL usage and distribution terms\n"));
      fprintf(output, _("  \\h [NAME]      help on syntax of SQL commands, * for all commands\n"));
      fprintf(output, _("  \\q             quit psql\n"));
      fprintf(output, "\n");

      fprintf(output, _("Query Buffer\n"));
      fprintf(output, _("  \\e [FILE]      edit the query buffer (or file) with external editor\n"));
-     fprintf(output, _("  \\g [FILE]      send query buffer to server (and results to file or |pipe)\n"));
      fprintf(output, _("  \\p             show the contents of the query buffer\n"));
      fprintf(output, _("  \\r             reset (clear) the query buffer\n"));
  #ifdef USE_READLINE
--- 170,182 ----
       */
      fprintf(output, _("General\n"));
      fprintf(output, _("  \\copyright     show PostgreSQL usage and distribution terms\n"));
+     fprintf(output, _("  \\g [FILE] or ; execute query (and send results to file or |pipe)\n"));
      fprintf(output, _("  \\h [NAME]      help on syntax of SQL commands, * for all commands\n"));
      fprintf(output, _("  \\q             quit psql\n"));
      fprintf(output, "\n");

      fprintf(output, _("Query Buffer\n"));
      fprintf(output, _("  \\e [FILE]      edit the query buffer (or file) with external editor\n"));
      fprintf(output, _("  \\p             show the contents of the query buffer\n"));
      fprintf(output, _("  \\r             reset (clear) the query buffer\n"));
  #ifdef USE_READLINE
Index: src/bin/psql/mainloop.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/psql/mainloop.c,v
retrieving revision 1.90
diff -c -c -r1.90 mainloop.c
*** src/bin/psql/mainloop.c    5 Apr 2008 03:40:15 -0000    1.90
--- src/bin/psql/mainloop.c    15 May 2008 19:17:27 -0000
***************
*** 177,186 ****
              (line[4] == '\0' || line[4] == ';' || isspace((unsigned char) line[4])))
          {
              free(line);
!             puts(_("You are using psql, the command-line interface to PostgreSQL."));
!             puts(_("Enter SQL commands, or type \\? for a list of backslash options."));
!             puts(_("Use \\h for SQL command help."));
!             puts(_("Use \\q to quit."));
              fflush(stdout);
              continue;
          }
--- 177,189 ----
              (line[4] == '\0' || line[4] == ';' || isspace((unsigned char) line[4])))
          {
              free(line);
!             puts(_("\nYou are using psql, the command-line interface to PostgreSQL."));
!             puts(_("\t\\? for psql help"));
!             puts(_("\t\\h or \\help for SQL help\n"));
!             puts(_("\t\\g or \";\" to execute a query"));
!             puts(_("\t\\q to quit psql\n"));
!             puts(_("\t\\copyright to view the copyright\n"));
!
              fflush(stdout);
              continue;
          }
Index: src/bin/psql/startup.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/psql/startup.c,v
retrieving revision 1.147
diff -c -c -r1.147 startup.c
*** src/bin/psql/startup.c    8 May 2008 17:04:26 -0000    1.147
--- src/bin/psql/startup.c    15 May 2008 19:17:27 -0000
***************
*** 300,305 ****
--- 300,312 ----
          {
              int            client_ver = parse_version(PG_VERSION);

+ #ifdef USE_SSL
+             printSSLInfo();
+ #endif
+ #ifdef WIN32
+             checkWin32Codepage();
+ #endif
+
              if (pset.sversion != client_ver)
              {
                  const char *server_version;
***************
*** 317,349 ****
                      server_version = server_ver_str;
                  }

!                 printf(_("Welcome to %s %s (server %s), the PostgreSQL interactive terminal.\n\n"),
!                        pset.progname, PG_VERSION, server_version);
              }
              else
!                 printf(_("Welcome to %s %s, the PostgreSQL interactive terminal.\n\n"),
!                        pset.progname, PG_VERSION);
!
!             printf(_("Type:  \\copyright for distribution terms\n"
!                      "       \\h for help with SQL commands\n"
!                      "       \\? for help with psql commands\n"
!                   "       \\g or terminate with semicolon to execute query\n"
!                      "       \\q to quit\n\n"));

              if (pset.sversion / 100 != client_ver / 100)
!                 printf(_("WARNING:  You are connected to a server with major version %d.%d,\n"
!                          "but your %s client is major version %d.%d.  Some backslash commands,\n"
!                          "such as \\d, might not work properly.\n\n"),
!                        pset.sversion / 10000, (pset.sversion / 100) % 100,
!                        pset.progname,
!                        client_ver / 10000, (client_ver / 100) % 100);

! #ifdef USE_SSL
!             printSSLInfo();
! #endif
! #ifdef WIN32
!             checkWin32Codepage();
! #endif
          }

          if (!pset.notty)
--- 324,342 ----
                      server_version = server_ver_str;
                  }

!                 printf(_("%s (%s, server %s)\n"),
!                 pset.progname, PG_VERSION, server_version);
              }
              else
!                 printf("%s (%s)\n", pset.progname, PG_VERSION);

              if (pset.sversion / 100 != client_ver / 100)
!                 printf(_("\tWARNING: %s version %d.%d, server version %d.%d.\n"
!                      "\t         Some psql features might not work.\n"),
!                     pset.progname, client_ver / 10000, (client_ver / 100) % 100,
!                     pset.sversion / 10000, (pset.sversion / 100) % 100);

!             printf(_("Type \"help\" for help.\n\n"));
          }

          if (!pset.notty)
***************
*** 707,713 ****
          return;                    /* no SSL */

      SSL_get_cipher_bits(ssl, &sslbits);
!     printf(_("SSL connection (cipher: %s, bits: %i)\n\n"),
             SSL_get_cipher(ssl), sslbits);
  }
  #endif
--- 700,706 ----
          return;                    /* no SSL */

      SSL_get_cipher_bits(ssl, &sslbits);
!     printf(_("\tSSL connection (cipher: %s, bits: %i)\n"),
             SSL_get_cipher(ssl), sslbits);
  }
  #endif
***************
*** 729,737 ****
      concp = GetConsoleCP();
      if (wincp != concp)
      {
!         printf(_("Warning: Console code page (%u) differs from Windows code page (%u)\n"
!                  "         8-bit characters might not work correctly. See psql reference\n"
!                "         page \"Notes for Windows users\" for details.\n\n"),
                 concp, wincp);
      }
  }
--- 722,730 ----
      concp = GetConsoleCP();
      if (wincp != concp)
      {
!         printf(_("\tWARNING: Console code page (%u) differs from Windows code page (%u)\n"
!                  "\t         8-bit characters might not work correctly. See psql reference\n"
!                  "\t         page \"Notes for Windows users\" for details.\n"),
                 concp, wincp);
      }
  }

pgsql-patches by date:

Previous
From: pgsql@mohawksoft.com
Date:
Subject: SSL client configuration patch
Next
From: Tom Lane
Date:
Subject: Re: Patch to change psql default banner v6