Hi I think I have found a bug in rrd_graph.c related to the LOCALE magic mentioned in this thread. I have patched it and tested it and now it looks to be working as it should. Here is the patch:
$ svn diff Index: rrd_graph.c =================================================================== --- rrd_graph.c (wersja 2126) +++ rrd_graph.c (kopia robocza) @@ -3991,7 +3991,8 @@ char *old_locale; rrd_graph_init(&im); /* a dummy surface so that we can measure text sizes for placements */ - old_locale = setlocale(LC_NUMERIC, "C"); + old_locale = setlocale(LC_NUMERIC, NULL); + setlocale(LC_NUMERIC, "C"); rrd_graph_options(argc, argv, &im); if (rrd_test_error()) { rrd_info_free(im.grinfo); Why did I change this? setlocale() manual says here: http://www.cplusplus.com/reference/clibrary/clocale/setlocale/ """ Return Value: On success, A pointer to a C string identifying the locale currently set for the category. If category is LC_ALL and different parts of the locale are set to different values, the string returned gives this information in a format which may vary between compiler implementations. If the function failed to set a new locale, this is not modified and a null pointer is returned. """ So it returns a pointer to a C string that represents the _new_ locale that was just set, not the old one. A test on a patched version: > /tmp/RRD.py(173)draw() -> rrdtool.graph( *args ) (Pdb) import locale; locale.getlocale(locale.LC_TIME) (None, None) (Pdb) n --Return-- > /tmp/RRD.py(173)draw()->None -> rrdtool.graph( *args ) (Pdb) import locale; locale.getlocale(locale.LC_TIME) (None, None) Please note that rrdtool.graph() didn't unexpectedly set the locale. Now downgrade to debian stable (lenny): apt-get install librrd4=1.3.1-4 python-rrdtool=1.3.1-4 > /tmp/RRD.py(173)draw() -> rrdtool.graph( *args ) (Pdb) import locale; locale.getlocale(locale.LC_TIME) (None, None) (Pdb) n --Return-- > /tmp/RRD.py(173)draw()->None -> rrdtool.graph( *args ) (Pdb) import locale; locale.getlocale(locale.LC_TIME) ('pl_PL', 'UTF8') (Pdb) My code has used the python "time.strptime()" method that (indirectly, through "calendar" module) uses locale in order to parse dates. When the program gathered enough data, it wrote it to rrd, after which the date parser suddenly raised exception: ValueError: time data did not match format: data=16/Aug/2010:00:03:20 fmt=%d/%b/%Y:%H:%M:%S.</search-bot-food> -- View this message in context: http://rrd-mailinglists.937164.n2.nabble.com/getting-rid-of-some-of-the-LOCALE-magic-tp3578489p5510287.html Sent from the RRDtool Developers Mailinglist mailing list archive at Nabble.com. _______________________________________________ rrd-developers mailing list rrd-developers@lists.oetiker.ch https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers