Fixes for \encoding command.
authorTatsuo Ishii <ishii@postgresql.org>
Mon, 21 Feb 2000 02:05:12 +0000 (02:05 +0000)
committerTatsuo Ishii <ishii@postgresql.org>
Mon, 21 Feb 2000 02:05:12 +0000 (02:05 +0000)
1) freeing null pointer
2) invalid encoding info may be stored into psql variable
3) fix indentation

src/bin/psql/command.c

index c7b4577e822779c34fbc02dfd3267bd3b61cda80..07581fd82c64108f6cbaf08274b0e2232b272c8b 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.22 2000/02/20 14:28:20 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.23 2000/02/21 02:05:12 ishii Exp $
  */
 #include "postgres.h"
 #include "command.h"
@@ -354,27 +354,32 @@ exec_command(const char *cmd,
             fputs("\n", fout);
    }
 
-   /* \encoding -- set client side encoding */
+   /* \encoding -- set/show client side encoding */
    else if (strcmp(cmd, "encoding") == 0)
    {
        char *encoding = scan_option(&string, OT_NORMAL, NULL);
 
-        if (!encoding)
-            puts(pg_encoding_to_char(pset.encoding));
-        else
-        {
+           if (!encoding)
+           /* show encoding */
+           puts(pg_encoding_to_char(pset.encoding));
+           else
+       {
 #ifdef MULTIBYTE
-            if (PQsetClientEncoding(pset.db, encoding) == -1)
-                psql_error("%s: invalid encoding name\n", encoding);
+           /* set encoding */
+           if (PQsetClientEncoding(pset.db, encoding) == -1)
+               psql_error("%s: invalid encoding name\n", encoding);
 
-            /* save encoding info into psql internal data */
-            pset.encoding = PQclientEncoding(pset.db);
-            SetVariable(pset.vars, "ENCODING", pg_encoding_to_char(pset.encoding));
+           else
+           {
+               /* save encoding info into psql internal data */
+               pset.encoding = PQclientEncoding(pset.db);
+               SetVariable(pset.vars, "ENCODING", pg_encoding_to_char(pset.encoding));
+           }
 #else
-            psql_error("\\%s: multi-byte support is not enabled\n", cmd);
+           psql_error("\\%s: multi-byte support is not enabled\n", cmd);
 #endif
-        }
-        free(encoding);
+               free(encoding);
+           }
    }
 
    /* \f -- change field separator */