From 320d3e06ee5b893c52b25ebd65a3ade4735c29e6 Mon Sep 17 00:00:00 2001
From: Tatsuo Ishii <ishii@postgresql.org>
Date: Mon, 21 Feb 2000 02:05:12 +0000
Subject: [PATCH] Fixes for \encoding command. 	1) freeing null pointer 
 2) invalid encoding info may be stored into psql variable 	3) fix
 indentation

---
 src/bin/psql/command.c | 33 +++++++++++++++++++--------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index c7b4577e822..07581fd82c6 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -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 */
-- 
GitLab