fix comments and error messages in rrd_restore patch
[rrdtool.git] / src / rrd_dump.c
index 82bc81e..504e583 100644 (file)
 #include "rrd_rpncalc.h"
 #include "rrd_client.h"
 
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+
+
 #if !(defined(NETWARE) || defined(WIN32))
 extern char *tzname[2];
 #endif
@@ -64,6 +69,7 @@ static int rrd_dump_opt_r(
     rrd_t     rrd;
     rrd_value_t value;
     struct tm tm;
+    char *old_locale = "";
 
     rrd_init(&rrd);
     rrd_file = rrd_open(filename, &rrd, RRD_READONLY | RRD_READAHEAD);
@@ -80,6 +86,9 @@ static int rrd_dump_opt_r(
     } else {
         out_file = stdout;
     }
+#ifdef HAVE_SETLOCALE
+    old_locale = setlocale(LC_NUMERIC, "C");
+#endif
 
     if (opt_header == 1) {
         fputs("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", out_file);
@@ -105,14 +114,14 @@ static 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
 # error "Need strftime"
 #endif
-    fprintf(out_file, "\t<lastupdate>%lu</lastupdate> <!-- %s -->\n\n",
-            (unsigned long) rrd.live_head->last_up, somestring);
+    fprintf(out_file, "\t<lastupdate>%lld</lastupdate> <!-- %s -->\n\n",
+            (long long) rrd.live_head->last_up, somestring);
     for (i = 0; i < rrd.stat_head->ds_cnt; i++) {
         fprintf(out_file, "\t<ds>\n");
         fprintf(out_file, "\t\t<name>%s</name>\n", rrd.ds_def[i].ds_nam);
@@ -394,7 +403,7 @@ static int rrd_dump_opt_r(
         rrd_seek(rrd_file, (rra_start + (rrd.rra_ptr[i].cur_row + 1)
                             * rrd.stat_head->ds_cnt
                             * sizeof(rrd_value_t)), SEEK_SET);
-        timer = -(rrd.rra_def[i].row_cnt - 1);
+        timer = -(long)(rrd.rra_def[i].row_cnt - 1);
         ii = rrd.rra_ptr[i].cur_row;
         for (ix = 0; ix < rrd.rra_def[i].row_cnt; ix++) {
             ii++;
@@ -414,8 +423,8 @@ static int rrd_dump_opt_r(
 #else
 # error "Need strftime"
 #endif
-            fprintf(out_file, "\t\t\t<!-- %s / %d --> <row>", somestring,
-                    (int) now);
+            fprintf(out_file, "\t\t\t<!-- %s / %lld --> <row>", somestring,
+                    (long long) now);
             for (iii = 0; iii < rrd.stat_head->ds_cnt; iii++) {
                 rrd_read(rrd_file, &my_cdp, sizeof(rrd_value_t) * 1);
                 if (isnan(my_cdp)) {
@@ -434,6 +443,9 @@ static 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);
 }