[GRASS5] [bug #3591] (grass) d.vect.thematic (and other scripts): LC_NUMERIC setting not used in my Debian

Markus Neteler neteler at itc.it
Wed Aug 31 16:22:40 EDT 2005


On Wed, Aug 31, 2005 at 09:00:17PM +0100, Glynn Clements wrote:
> 
> Moritz Lennert wrote:
> 
> > >>this bug's URL: http://intevation.de/rt/webrt?serial_num=3591
> > >>-------------------------------------------------------------------------
> > >>
> > >>Subject: d.vect.thematic (and other scripts): LC_NUMERIC setting not
> > >>used in my Debian
> > > 
> > > 
> > > GRASS doesn't use any of the locale categories except for LC_MESSAGES
> > > (if it was built using --with-nls).
> 
> Actually, I've just noticed that it also uses LC_CTYPE (again, only if
> built using --with-nls):
> 
> 	revision 1.8
> 	date: 2004/08/27 11:16:51;  author: markus;  state: Exp;  lines: +1 -0
> 	added LC_TYPE for japanese

To what file do you refer?

Aha:
2004-08-27 13:16  markus
	* lib/gis/locale.c: added LC_TYPE for japanese

The change was actually

~/grass61/lib/gis > cvs diff -r 1.7 -r 1.8 locale.c
Index: locale.c
===================================================================
RCS  /home/grass/grassrepository/grass6/lib/gis/locale.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- locale.c    13 May 2002 07:02:19 -0000      1.7
+++ locale.c    27 Aug 2004 11:16:51 -0000      1.8
@@ -35,6 +35,7 @@

        if (!initialized)
        {
+               setlocale(LC_CTYPE, "");
                setlocale(LC_MESSAGES, "");
                initialized = 1;
        }


> This looks pretty dubious, as it changes the behaviour of many of the
> <ctype.h> functions (isalpha(), tolower() etc) as well as
> strcasecmp(), but GRASS' built-in string handling always assumes ASCII
> (e.g. G_strcasecmp() only considers A-Z/a-z regardless of the locale).

So, should we remove LC_CTYPE?


> > mlennert at moritz:~/CVS/GRASS/grass6/scripts$ grep -R LC_NUMERIC *
> > d.correlate/d.correlate:export LC_NUMERIC=C
> > d.out.png/d.out.png:export LC_NUMERIC=C
> > d.resize/d.resize:export LC_NUMERIC=C
> > d.vect.thematic/d.vect.thematic:export LC_NUMERIC=C
> > i.fusion.brovey/i.fusion.brovey:export LC_NUMERIC=C
> 
> [snip]
> 
> > So it is used quite a lot in scripts.
> 
> In all cases, it's forced to "C", which is the same as it not being
> used. Scripts do this to prevent other programs (e.g. awk) from using
> the user's LC_NUMERIC settings, so that they don't end up passing
> floating-point values which use a comma to programs which expect a
> dot.
> 

I have added it everywhere upon your suggestion:
 http://grass.itc.it/pipermail/grass5/2005-March/017637.html

Maybe a misunderstanding. What do do now?

Markus




More information about the grass-dev mailing list