Hmm well the KOI8 tests unsurprisingly produce random results on non-
KOI8 input. It's pure chance you didn't get EILSEQ.
What errno did you get for the C locale test? On which input character?
Perhaps it's sihnalljng EILSEQ for every byte >0x80 ? That seems
broken to me but perhaps not to a glibc pedant out there.
--
Greg
On 2 Mar 2009, at 19:17, Teodor Sigaev <teodor@sigaev.ru> wrote:
>> Say what? What OSes is that?
> See attached test program. It tries to convert multibyte russian
> word in UTF8 to wide char with C, ru_RU-KOI8-R and ru_RU.UTF-8
> locales. The word contains 6 letters.
>
> FreeBSD 7.2 (short output):
> ========C==========
> mbstowcs returns 12
> ========ru_RU.KOI8-R==========
> mbstowcs returns 12
> ========ru_RU.UTF-8==========
> mbstowcs returns 6
>
> Linux 2.6.23 libc 2.5 (short output):
> ========C==========
> mbstowcs returns -1
> ========ru_RU.KOI8-R==========
> mbstowcs returns 12
> ========ru_RU.UTF-8==========
> mbstowcs returns 6
>
>
> The program also prints test of iswalpha:
> Linux 2.6.23 libc 2.5 (full output):
> ========C==========
> mbstowcs returns -1
> ERROR
> ========ru_RU.KOI8-R==========
> mbstowcs returns 12
> 0-th chacter is alpha
> 1-th chacter is NOT alpha
> 2-th chacter is alpha
> 3-th chacter is NOT alpha
> 4-th chacter is alpha
> 5-th chacter is NOT alpha
> 6-th chacter is alpha
> 7-th chacter is NOT alpha
> 8-th chacter is alpha
> 9-th chacter is NOT alpha
> 10-th chacter is alpha
> 11-th chacter is NOT alpha
> ========ru_RU.UTF-8==========
> mbstowcs returns 6
> 0-th chacter is alpha
> 1-th chacter is alpha
> 2-th chacter is alpha
> 3-th chacter is alpha
> 4-th chacter is alpha
> 5-th chacter is alpha
> <t.c.gz>