I believe that the attached patch may solve this setlocale() problem, but I do not have a Windows box handy on which to test it. Can somebody who does please try and let us know the results?

thanks

andrew



Andrew Dunstan wrote:
the answer is very probably here:
http://archives.postgresql.org/pgsql-hackers-win32/2003-10/msg00024.php

I thought Bruce said he had this covered, but it hasn't been fixed. I
will prepare a patch in the next day or so if someone else doesn't beat
me to it.

cheers

andrew

Korea PostgreSQL Users' Group wrote:

  
it works still problem.

setlocale() function is not equivalent between unix and win32

plz check.

multibyte text is not sorted. 


----- Original Message ----- 
From: "Claudio Natoli" <[EMAIL PROTECTED]>
To: "'Korea PostgreSQL Users' Group'" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Friday, March 12, 2004 5:04 PM
Subject: RE: [pgsql-hackers-win32] initdb problen


 

    
What if you instead try:

initdb --locale=C

Looks like "--no-locale" is not "equivalent to --locale=C", at least under
win32.

Cheers,
Claudio


   

      
---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
     subscribe-nomail command to [EMAIL PROTECTED] so that your
     message can get through to the mailing list cleanly

 

    


---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [EMAIL PROTECTED] so that your
      message can get through to the mailing list cleanly

  

Index: src/backend/main/main.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/backend/main/main.c,v
retrieving revision 1.75
diff -c -r1.75 main.c
*** src/backend/main/main.c     5 Mar 2004 01:11:04 -0000       1.75
--- src/backend/main/main.c     12 Mar 2004 16:27:13 -0000
***************
*** 74,79 ****
--- 74,83 ----
  #endif   /* NOPRINTADE */
  #endif   /* __alpha */
  
+ #ifdef WIN32
+       char *env_locale;
+ #endif
+ 
  #if defined(NOFIXADE) || defined(NOPRINTADE)
  
  #if defined(ultrix4)
***************
*** 143,150 ****
--- 147,176 ----
         * set later during GUC option processing, but we set it here to allow
         * startup error messages to be localized.
         */
+ 
+ #ifdef WIN32
+       /* 
+        * Windows uses codepages rather than the environment, so we work around
+        * that by querying the environment explicitly first for LC_COLLATE
+        * and LC_CTYPE. We have to do this because initdb passes those values
+        * in the environment. If there is nothing there we fall back on the
+        * codepage.
+        */
+ 
+       if ((env_locale = getenv("LC_COLLATE")) != NULL)
+           setlocale(LC_COLLATE,env_locale);
+       else
+         setlocale(LC_COLLATE, "");
+ 
+       if ((env_locale = getenv("LC_CTYPE")) != NULL)
+           setlocale(LC_CTYPE,env_locale);
+       else
+         setlocale(LC_CTYPE, "");
+ #else
        setlocale(LC_COLLATE, "");
        setlocale(LC_CTYPE, "");
+ #endif
+ 
  #ifdef LC_MESSAGES
        setlocale(LC_MESSAGES, "");
  #endif
---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to