On May 14 19:23, Corinna Vinschen wrote: > On May 15 01:34, IWAMURO Motonori wrote: > > 2009/5/15 Corinna Vinschen <corinna-cyg...@cygwin.com>: > > > Here's one problem. What if an application uses setenv("LANG", ...)? > > > > Oh. Hmmm, I think that anything should not occur. > > > > > Do you want Cygwin to intercept all calls to setenv() to check for > > > setting $LC_ALL/LC_CTYPE/LANG? > > > > No. I think that only setlocale() has to do the check. > > The reason: > > - setlocale(LC_CTYPE, "C") is called from Cygwin startup. > > - The following code become valid. > > setenv("LANG", "..."); > > setlocale(LC_ALL, ""); > > Ok, that makes sense. I'm just testing a patch which use the > environment settings internally as you proposed (still keeping UTF-8 the > default for the "C" locale). So far it works fine, I have just trouble > with SJIS, but that's not something I can easily test. I'm simply > lacking a real understanding of the SJIS encoding. Maybe you can look > into that in the next couple of days? I'll be mostly offline next week > and the week after so there's a lot time for testing ;-)
I applied the patch. The charset used by Cygwin now only depends on the last call to setlocale in an application and eventually on the setting of the internationalization environment variables LC_ALL/LC_CTYPE/LANG. A side effect of this change is that the console charset depends solely on the environment setting again. So you can change the console charset used in an application on the fly again by changing the LC_ALL/LC_CTYPE/LANG setting in the environment(*), instead of setting it only once at startup of the first Cygwin process in the console. The (in)famous "ssh to a remote machine from a UTF-8 console doesn't work" problem(**) should be unaffected by this change and still work now, if, for instance, LANG is set to "en_US.UTF-8" in the calling shell. Just the documentation needs to be updated again. I really hope this change makes it finally easier to use Cygwin with native characters. I'll create a new Cygwin package tomorrow. Corinna (*) Still depends on a call to setlocale, but the Cygwin shells do that anyway. (**) http://cygwin.com/ml/cygwin/2009-04/msg00055.html -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/