]> granicus.if.org Git - postgresql/commitdiff
Recongizing PGCLIENTENCODING has been broken since 7.0.
authorTatsuo Ishii <ishii@postgresql.org>
Fri, 17 Nov 2000 04:22:52 +0000 (04:22 +0000)
committerTatsuo Ishii <ishii@postgresql.org>
Fri, 17 Nov 2000 04:22:52 +0000 (04:22 +0000)
src/interfaces/libpq/fe-connect.c

index a26f7ac5cc0e93ac3ce121ad47da6a18aff5b90d..1703c554632277c0beb1fa99f1bf9be736786692 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.147 2000/11/14 01:15:06 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.148 2000/11/17 04:22:52 ishii Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1608,10 +1608,11 @@ keep_going:                                             /* We will come back to here until there
                        {
                                const char *env;
 
-                               /* query server encoding */
                                env = getenv(envname);
                                if (!env || *env == '\0')
                                {
+                                       /* query server encoding if PGCLIENTENCODING
+                                          is not specified */
                                        if (!PQsendQuery(conn,
                                                                         "select getdatabaseencoding()"))
                                                goto error_return;
@@ -1619,6 +1620,19 @@ keep_going:                                              /* We will come back to here until there
                                        conn->setenv_state = SETENV_STATE_ENCODINGS_WAIT;
                                        return PGRES_POLLING_READING;
                                }
+                               else
+                               {
+                                       /* otherwise set client encoding in pg_conn struct */
+                                       int encoding = pg_char_to_encoding(env);
+                                       if (encoding < 0)
+                                       {
+                                               strcpy(conn->errorMessage.data,
+                                                          "PGCLIENTENCODING has no valid encoding name.\n");
+                                               goto error_return;
+                                       }
+                                       conn->client_encoding = encoding;
+                               }
+                                       
                        }
 
                case SETENV_STATE_ENCODINGS_WAIT: