This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: mbrtowc bug


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

According to Corinna Vinschen on 7/20/2009 6:08 AM:
> I'm running the testcase on XP SP3.  I have an idea why it fails for
> you.  The eucJP codepage 20932 is not installed by default on US and
> other western language systems by default up to Windows 2003.  What you
> have to do is, open the "Regional and Language Options" control panel,
> go to the "Advanced" tab, scroll the "Code page conversion tables" list
> down to the 20932 entry, select it and install it.
> 
> This is not necessary anymore startying with Vista, which comes with
> almost all important conversion tables preinstalled.

Hmm.  That means we should probably teach setlocale to fail when trying to
select an eucJP codeset if we detect that the eucJP tables are not (yet)
installed.  The current situation for packages that use gnulib and gettext
(such as coreutils, tar, findutils, ...) is that:

if I build a cygwin package on a system with the code page installed, the
gnulib test passes, and gnulib does not inject any replacement code.
However, this build could fail in an unpredictable manner if installed on
a user's machine that lacks the code page, because users can select the
charset without any error indication.

if I build a cygwin package on a system without the code page, the gnulib
test fails, so gnulib injects replacement code.  This build will work on
all user's machines, but contains a lot of code bloat for users that have
the code page installed.


Changing the situation to make setlocale reject unsupported charsets would
mean:

if I build a cygwin package on a system with the code page installed, the
gnulib test passes, and no code is injected.

if I build a cygwin package on a system without the code page, the gnulib
test skips, but knows (or can be taught) to assume that cygwin's mbrtowc
is not broken, so no replacement code is injected.

either way, users with the code page have a minimal binary size, and users
without the code page can't use the locale in the first place, so they
don't have any problems.

- --
Don't work too hard, make some time for fun as well!

Eric Blake             ebb9@byu.net
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkpkYUQACgkQ84KuGfSFAYCTQgCgrUFRy9pAL8uV4HfV2WL1ZEX2
IYsAnAsAqStHhtAiTMBcvVEJlVc8YUKs
=xSRD
-----END PGP SIGNATURE-----

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]