[Bug 7235] locale specified in LANG is not respected in wine 0.9.29

Wine Bugs wine-bugs at winehq.org
Tue Mar 6 16:30:32 CST 2007


------- Additional Comments From bdonlan at gmail.com  2007-06-03 16:30 -------
Setting the second parameter to NULL returns the C locale. By my reading of the
manpage, setlocale() will not respect environment variables at all unless called
with an empty string:

       If locale is "", each part of the locale that should be modified is set
       according  to the environment variables. The details are implementation
       dependent.  For glibc, first (regardless of category), the  environment
       variable  LC_ALL  is  inspected, next the environment variable with the
       same name as the category (LC_COLLATE, LC_CTYPE, LC_MESSAGES,  LC_MONE‐
       TARY,  LC_NUMERIC,  LC_TIME) and finally the environment variable LANG.
       The first existing environment variable is used.  If its value is not a
       valid  locale  specification,  the locale is unchanged, and setlocale()
       returns NULL.
       If locale is NULL, the current locale is only queried, not modified.

       On  startup of the main program, the portable "C" locale is selected as
       default.  A program may be made portable to all locales by calling set‐
       locale(LC_ALL,  "" ) after program  initialization, by using the values
       returned from a localeconv() call for locale-dependent information,  by
       using  the  multi-byte and wide character functions for text processing
       if MB_CUR_MAX > 1, and by  using  strcoll(),  wcscoll()  or  strxfrm(),
       wcsxfrm() to compare strings.

Therefore, if wine merely calls setlocale(LC_*, NULL), it is incorrect. It must
call locale(LC_ALL, "") during initialization.

Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

More information about the wine-bugs mailing list