Code

make sure rrd_dump outputs numbers with C locale so that . does not suddenly become...
authoroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Tue, 7 Apr 2009 06:03:49 +0000 (06:03 +0000)
committeroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Tue, 7 Apr 2009 06:03:49 +0000 (06:03 +0000)
git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.3@1772 a5681a0c-68f1-0310-ab6d-d61299d08faa

program/src/rrd_dump.c

index 8e5049ff27a6885721a02934031db1b28ba13724..26f267d873b44bc0f2df1fa70c787f41842f6096 100644 (file)
 #include <stdlib.h>
 #endif
 
+
 #include "rrd_tool.h"
 #include "rrd_rpncalc.h"
 
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+
 #if !(defined(NETWARE) || defined(WIN32))
 extern char *tzname[2];
 #endif
@@ -69,7 +74,7 @@ int rrd_dump_opt_r(
     rrd_t     rrd;
     rrd_value_t value;
     struct tm tm;
-
+    char *old_locale = "";
     rrd_file = rrd_open(filename, &rrd, RRD_READONLY | RRD_READAHEAD);
     if (rrd_file == NULL) {
         rrd_free(&rrd);
@@ -84,7 +89,9 @@ int rrd_dump_opt_r(
     } else {
         out_file = stdout;
     }
-
+#ifdef HAVE_SETLOCALE
+    old_locale = setlocale(LC_NUMERIC, "C");
+#endif
     if (!opt_noheader) {
         fputs("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", out_file);
         fputs
@@ -100,7 +107,7 @@ int rrd_dump_opt_r(
     }
     fprintf(out_file, "\t<step> %lu </step> <!-- Seconds -->\n",
             rrd.stat_head->pdp_step);
-#if HAVE_STRFTIME
+#ifdef HAVE_STRFTIME
     localtime_r(&rrd.live_head->last_up, &tm);
     strftime(somestring, 200, "%Y-%m-%d %H:%M:%S %Z", &tm);
 #else
@@ -429,6 +436,9 @@ int rrd_dump_opt_r(
     if (out_file != stdout) {
         fclose(out_file);
     }
+#ifdef HAVE_SETLOCALE
+    setlocale(LC_NUMERIC, old_locale);
+#endif
     return rrd_close(rrd_file);
 }