#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
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);
} 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);
}
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);
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++;
#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)) {
if (out_file != stdout) {
fclose(out_file);
}
+#ifdef HAVE_SETLOCALE
+ setlocale(LC_NUMERIC, old_locale);
+#endif
return rrd_close(rrd_file);
}
* 1 = dtd header
* 2 = xsd header
*/
- int opt_header = 0;
+ int opt_header = 1;
char *opt_daemon = NULL;
/* init rrd clean */
optind = 0;
opterr = 0; /* initialize getopt */
- while (42) {
+ while (42) {/* ha ha */
int opt;
int option_index = 0;
static struct option long_options[] = {
{"daemon", required_argument, 0, 'd'},
{"header", required_argument, 0, 'h'},
+ {"no-header", no_argument, 0, 'n'},
{0, 0, 0, 0}
};
- opt = getopt_long(argc, argv, "d:h:", long_options, &option_index);
+ opt = getopt_long(argc, argv, "d:h:n", long_options, &option_index);
if (opt == EOF)
break;
}
break;
+ case 'n':
+ opt_header = 0;
+ break;
+
case 'h':
if (strcmp(optarg, "dtd") == 0) {
opt_header = 1;
} else if (strcmp(optarg, "xsd") == 0) {
opt_header = 2;
+ } else if (strcmp(optarg, "none") == 0) {
+ opt_header = 0;
}
break;
default:
- rrd_set_error("usage rrdtool %s [--header|-h {xsd,dtd}] "
+ rrd_set_error("usage rrdtool %s [--header|-h {none,xsd,dtd}] [--no-header]"
"file.rrd [file.xml]", argv[0]);
return (-1);
break;
} /* while (42) */
if ((argc - optind) < 1 || (argc - optind) > 2) {
- rrd_set_error("usage rrdtool %s [--header|-h {xsd,dtd}] "
+ rrd_set_error("usage rrdtool %s [--header|-h {none,xsd,dtd}] [--no-header]"
"file.rrd [file.xml]", argv[0]);
return (-1);
}