On Mar 20, 2019, at 10:02 AM, Chip Davis cdavis@codeweavers.com wrote:
March 20, 2019 9:58 AM, "Ken Thomases" ken@codeweavers.com wrote:
On Mar 20, 2019, at 8:28 AM, Piotr Caban piotr.caban@gmail.com wrote:
I've looked for the solution of this problem and I failed to find one that works with C locale. It looks like XIM is not working when it's initialized in C or POSIX locale even if wchar_t or utf8 variant of lookup functions is used (XwcLookupString, Xutf8LookupString).
[…]
I see 2 possible solutions for that:
- go with the ascii_{tolower,toupper,strcasecmp,strncasecmp} helpers and use them instead of glibc
functions
What about the xlocale functions (e.g. tolower_l())? If you pass a NULL locale_t to them, they operate in the C locale.
Only the POSIX ones do that. The Microsoft ones use the global locale. Also, I suspect those functions aren't available everywhere--even though POSIX 2008 has been a thing for over a decade.
But aren't we only interested in changing the behavior of the POSIX ones?
An alternative approach might be to leave LC_CTYPE set to the C locale but wrap the XIM functions in uselocale() calls to set the locale to the one that Wine had been using before this change and then set it back. I don't know if that will be enough to get things to work.
-Ken