[PATCH] libc/locale/locale.c: Allow "C." additionally to "C-" prefix

View: New views
5 Messages — Rating Filter:   Alert me  

[PATCH] libc/locale/locale.c: Allow "C." additionally to "C-" prefix

by Corinna Vinschen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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

Re: [PATCH] libc/locale/locale.c: Allow "C." additionally to "C-" prefix

by Corinna Vinschen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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

Re: [PATCH] libc/locale/locale.c: Allow "C." additionally to "C-" prefix

by IWAMURO Motonori :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

2009/9/23 Corinna Vinschen <vinschen@...>:
> Ok to apply?

I think there is no problem.
--
IWAMURO Motnori <http://vmi.jp/>

Re: [PATCH] libc/locale/locale.c: Allow "C." additionally to "C-" prefix

by Jeff Johnston :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 29/09/09 12:39 PM, Corinna Vinschen wrote:

> 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
>

Ok.

-- Jeff J.

Re: [PATCH] libc/locale/locale.c: Allow "C." additionally to "C-" prefix

by Corinna Vinschen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sep 29 13:49, Jeff Johnston wrote:
> On 29/09/09 12:39 PM, Corinna Vinschen wrote:
>>> * libc/locale/locale.c (loadlocale): Allow "C." same as "C-"
>>> as locale prefix.  Add some words to documentation.
>>[...]
>
> Ok.
>
> -- Jeff J.

Thanks, applied.

Do you have any chance to look into
http://sourceware.org/ml/newlib/2009/msg00938.html ?

If this patch is acceptable, I can create a new Cygwin 1.7 test release.


Thanks,
Corinna

--
Corinna Vinschen
Cygwin Project Co-Leader
Red Hat