I wrote:
> * Where they're not, install the locale_t with uselocale(), do
> mbstowcs or wcstombs, and revert to the former locale_t setting.
> This is ugly as sin, and not thread-safe, but of course lots of
> the backend is not thread-safe.
I've been corrected on that: uselocale() *is* thread safe, at least in
glibc (it only affects the locale used by the current thread). And it's
"only a few instructions" according to Jakub Jelinek. So a temporary
setting via uselocale is exactly what you're supposed to do for any
locale-sensitive function that hasn't got a *_l variant.
regards, tom lane