[PATCH] libc/locale/locale.c: Allow "C." additionally to "C-" prefix
Corinna Vinschen
vinschen@redhat.com
Tue Sep 29 17:49:00 GMT 2009
Ping?
Corinna
On Sep 23 11:38, Corinna Vinschen wrote:
> Hi,
>
> The C- prefix as used by newlib for a long time allows to specify
> a charset alone, while sticking to the "C" locale, thus staying
> language neutral.
>
> The Debian project is going along with the idea to allow to use the
> UTF-8 charset while keeping all other settings language neutral.
> The syntax for this locale is "C.UTF-8". For a discussion of this
> change, see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=522776
>
> The below patch allows to specify the "C." prefix alongside of ther "C-"
> prefix. That allows to stick to a language neutral setting in all
> other respects, while switching to a charset of choice.
>
> Patch below, tested on Cygwin.
>
> Ok to apply?
>
>
> Thanks,
> Corinna
>
>
> * libc/locale/locale.c (loadlocale): Allow "C." same as "C-"
> as locale prefix. Add some words to documentation.
>
>
> Index: libc/locale/locale.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/locale/locale.c,v
> retrieving revision 1.25
> diff -u -p -r1.25 locale.c
> --- libc/locale/locale.c 25 Aug 2009 18:47:24 -0000 1.25
> +++ libc/locale/locale.c 23 Sep 2009 09:38:12 -0000
> @@ -61,6 +61,11 @@ backward compatibility with older implem
> xxx in [437, 720, 737, 775, 850, 852, 855, 857, 858, 862, 866, 874, 1125,
> 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258].
>
> +Instead of <<"C-">>, you can specify also <<"C.">>. Both variations allow
> +to specify language neutral locales while using other charsets than ASCII,
> +for instance <<"C.UTF-8">>, which keeps all settings as in the C locale,
> +but uses the UTF-8 charset.
> +
> Even when using POSIX locale strings, the only charsets allowed are
> <<"UTF-8">>, <<"JIS">>, <<"EUCJP">>, <<"SJIS">>, <<KOI8-R>>, <<KOI8-U>>,
> <<"ISO-8859-x">> with 1 <= x <= 15, or <<"CPxxx">> with xxx in
> @@ -432,8 +437,14 @@ loadlocale(struct _reent *p, int categor
> strcpy (locale, "C");
> if (!strcmp (locale, "C")) /* Default "C" locale */
> strcpy (charset, "ASCII");
> - else if (locale[0] == 'C' && locale[1] == '-') /* Old newlib style */
> - strcpy (charset, locale + 2);
> + else if (locale[0] == 'C'
> + && (locale[1] == '-' /* Old newlib style */
> + || locale[1] == '.')) /* Extension for the C locale to allow
> + specifying different charsets while
> + sticking to the C locale in terms
> + of sort order, etc. Proposed in
> + the Debian project. */
> + strcpy (charset, locale + 2);
> else /* POSIX style */
> {
> char *c = locale;
>
> --
> Corinna Vinschen
> Cygwin Project Co-Leader
> Red Hat
--
Corinna Vinschen
Cygwin Project Co-Leader
Red Hat
More information about the Newlib
mailing list