On Aug 22 09:45, Andy Koppe wrote: > Corinna Vinschen: > >> > Anyway, to help support them, the attached patch adds the KOI8 > >> > charsets to newlib's Unicode conversion and ctype tables. I took the > >> > conversion tables from iconv and adapted the ctype tables from the > >> > CP1251 version. Since KOI8 has printable characters in the C1 range > >> > from 0x80 to 0x9F, it seems easiest to treat them as Windows > >> > codepages. > >> > > >> > To complete support, "KOI8-R" and "KOI8-U" would need to be recognised > >> > in _setlocale_r and mapped to codepages 20866 and 21866. > >> > >> I'd suggest to add the missing code to loadlocale() (the internally > >> used charset should be set to "CP20866"/"CP21866", but it seems you know > >> this already) and send the entire patch, together with a ChangeLog > >> entry, to the newlib list. If you could base it on my pending proposal > >> to make the charset case insensitive > >> http://sourceware.org/ml/newlib/2009/msg00840.html, that would be great. > > > > I applied this patch a couple of minutes ago, so you can simply base > > your patch on current CVS. > > Okay, will do.
Thanks! Here's a (untested) suggestion: Index: libc/locale/locale.c =================================================================== RCS file: /cvs/src/src/newlib/libc/locale/locale.c,v retrieving revision 1.23 diff -u -p -r1.23 locale.c --- libc/locale/locale.c 21 Aug 2009 20:56:13 -0000 1.23 +++ libc/locale/locale.c 22 Aug 2009 08:59:04 -0000 @@ -615,6 +615,24 @@ loadlocale(struct _reent *p, int categor return NULL; } break; + case 'K': + case 'k': + if (!strcasecmp (charset, "KOI8-R")) + strcpy (charset, "CP20866"); + else if (!strcasecmp (charset, "KOI8-U")) + strcpy (charset, "CP21866"); + else + return NULL; +#ifdef _MB_CAPABLE +#ifdef _MB_EXTENDED_CHARSETS_WINDOWS + l_wctomb = __cp_wctomb; + l_mbtowc = __cp_mbtowc; +#else /* !_MB_EXTENDED_CHARSETS_WINDOWS */ + l_wctomb = __ascii_wctomb; + l_mbtowc = __ascii_mbtowc; +#endif /* _MB_EXTENDED_CHARSETS_WINDOWS */ +#endif + break; case 'A': case 'a': if (strcasecmp (charset, "ASCII")) Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- 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