cygwin_conv_ functions and character encoding
Corinna Vinschen
corinna-cygwin@cygwin.com
Mon Feb 8 13:15:00 GMT 2016
On Feb 5 16:47, Thomas Wolff wrote:
> The cygwin path conversion functions ignore the current locale;
> rather they seem to always use the locale environment set when the program
> was started, see test program convloc.c:
> [...]
> In sys_wcstombs in strfuncs.cc I see:
> const char *charset = cygheap->locale.charset;
> which is set in internal_setlocale ()...
>
> In fact, the situation can be fixed by adding after setlocale():
> cygwin_internal(CW_INT_SETLOCALE); // -> internal_setlocale();
> (cf. https://sourceware.org/ml/cygwin-developers/2010-02/msg00054.html)
> but I think those functions should use the proper locale implicitly;
> according to the generic description in
> http://linux.die.net/man/3/setlocale,
> LC_CTYPE affects ... conversion ... functions, in my opinion this would
> include cygwin-specific conversion functions as well as implicitly called
> conversion (see open() below).
> The same problem applies to the open() function (involving path conversion).
> The wide string function mbstowcs behaves as expected.
Path conversion is a problem when switching locales. Typically
an application calls setlocale (LC_ALL, "") only and in that case the
conversion works as desired. We could switch cygwin_path_conv as
you said, but I'm wondering what side-effects that may have. See
the comment in internal_setlocale().
> The whole issue occurred to me while trying to work around a missing
> conversion functionality, just converting the pathname syntax between
> Unicode strings. The desired options would be like:
> CCP_POSIX_W_TO_WIN_W, /* from is wchar_t *posix, to is wchar_t *win32
> */
> CCP_WIN_W_TO_POSIX_W, /* from is wchar_t *win32, to is wchar_t *posix
> */
Those are not available because POSIX paths are always multibyte strings.
Patches welcome, though.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin/attachments/20160208/3067af40/attachment.sig>
More information about the Cygwin
mailing list