Re: pgsql: Explicitly bind gettext() to the UTF8 locale when in use.

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Hiroshi Inoue <inoue(at)tpf(dot)co(dot)jp>
Cc: mha(at)postgresql(dot)org, pgsql-committers(at)postgresql(dot)org, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Hiroshi Saito <z-saito(at)guitar(dot)ocn(dot)ne(dot)jp>
Subject: Re: pgsql: Explicitly bind gettext() to the UTF8 locale when in use.
Date: 2009-01-14 22:19:59
Message-ID: 200901142219.n0EMJxH16527@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers


Is this patch still needed?

---------------------------------------------------------------------------

Hiroshi Inoue wrote:
> Hi Magnus and all,
>
> Magnus Hagander wrote:
> > Log Message:
> > -----------
> > Explicitly bind gettext() to the UTF8 locale when in use.
> > This is required on Windows due to the special locale
> > handling for UTF8 that doesn't change the full environment.
>
> Thanks to this change UTF-8 case was solved but Japanese users
> are still unhappy with Windows databases with EUC_JP encoding.
> Shift_JIS which is a Japanese encoding under Windows doesn't
> match any server encoding and causes a crash with the use of
> gettext. So Saito-san removed ja message catalog just before
> the 8.3 release.
>
> Attached is a simple patch to avoid the crash and enable the
> use of Japanese message catalog.
> Please apply the patch if there's no problem.
>
> regards,
> Hiroshi Inoue
>
> > Fixes crash with translated error messages per bugs 4180
> > and 4196.
> >
> > Tom Lane
> >
> > Modified Files:
> > --------------
> > pgsql/src/backend/utils/mb:
> > mbutils.c (r1.70 -> r1.71)
> > (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/mb/mbutils.c?r1=1.70&r2=1.71)
>
>

> *** mbutils.c.orig Sun Nov 23 08:42:57 2008
> --- mbutils.c Sun Nov 23 13:52:41 2008
> ***************
> *** 825,830 ****
> --- 825,832 ----
> void
> SetDatabaseEncoding(int encoding)
> {
> + const char *target_codeset = NULL;
> +
> if (!PG_VALID_BE_ENCODING(encoding))
> elog(ERROR, "invalid database encoding: %d", encoding);
>
> ***************
> *** 846,852 ****
> */
> #ifdef ENABLE_NLS
> if (encoding == PG_UTF8)
> ! if (bind_textdomain_codeset("postgres", "UTF-8") == NULL)
> elog(LOG, "bind_textdomain_codeset failed");
> #endif
> }
> --- 848,860 ----
> */
> #ifdef ENABLE_NLS
> if (encoding == PG_UTF8)
> ! target_codeset = "UTF-8";
> ! #ifdef WIN32
> ! else if (encoding == PG_EUC_JP)
> ! target_codeset = "EUC_JP";
> ! #endif /* WIN32 */
> ! if (NULL != target_codeset)
> ! if (bind_textdomain_codeset("postgres", target_codeset) == NULL)
> elog(LOG, "bind_textdomain_codeset failed");
> #endif
> }
>
>
> --
> Sent via pgsql-committers mailing list (pgsql-committers(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-committers

--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2009-01-14 22:23:37 Re: pgsql: Explicitly bind gettext() to the UTF8 locale when in use.
Previous Message Bruce Momjian 2009-01-14 21:59:19 pgsql: Make 'find' syntax consistent; add .git exclusion to make_ctags.

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2009-01-14 22:23:37 Re: pgsql: Explicitly bind gettext() to the UTF8 locale when in use.
Previous Message Tom Lane 2009-01-14 22:17:01 Re: solaris libpq threaded build fails