/*****************************************************************************
- * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007
+ * RRDtool 1.3.0 Copyright by Tobi Oetiker, 1997-2008
*****************************************************************************
* rrd_dump Display a RRD
*****************************************************************************
extern char *tzname[2];
#endif
-int rrd_dump(
- int argc,
- char **argv)
-{
- int rc;
-
- if (argc < 2) {
- rrd_set_error("Not enough arguments");
- return -1;
- }
- if (argc == 3) {
- rc = rrd_dump_r(argv[1], argv[2]);
- } else {
- rc = rrd_dump_r(argv[1], NULL);
- }
-
- return rc;
-}
-
-int rrd_dump_r(
+int rrd_dump_opt_r(
const char *filename,
- char *outname)
+ char *outname,
+ int opt_noheader)
{
unsigned int i, ii, ix, iii = 0;
time_t now;
out_file = stdout;
}
+ if (!opt_noheader) {
+ fputs("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", out_file);
+ fputs
+ ("<!DOCTYPE rrd SYSTEM \"http://oss.oetiker.ch/rrdtool/rrdtool.dtd\">\n",
+ out_file);
+ }
fputs("<!-- Round Robin Database Dump -->", out_file);
fputs("<rrd>", out_file);
- fprintf(out_file, "\t<version> %s </version>\n", RRD_VERSION);
+ if (atoi(rrd.stat_head->version) <= 3) {
+ fprintf(out_file, "\t<version> %s </version>\n", RRD_VERSION3);
+ } else {
+ fprintf(out_file, "\t<version> %s </version>\n", RRD_VERSION);
+ }
fprintf(out_file, "\t<step> %lu </step> <!-- Seconds -->\n",
rrd.stat_head->pdp_step);
#if HAVE_STRFTIME
#else
# error "Need strftime"
#endif
- fprintf(out_file, "\t<lastupdate> %ld </lastupdate> <!-- %s -->\n\n",
- rrd.live_head->last_up, somestring);
+ fprintf(out_file, "\t<lastupdate> %lu </lastupdate> <!-- %s -->\n\n",
+ (unsigned 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);
fprintf(out_file,
"\t\t<seasonal_smooth_idx> %lu </seasonal_smooth_idx>\n",
rrd.rra_def[i].par[RRA_seasonal_smooth_idx].u_cnt);
+ if (atoi(rrd.stat_head->version) >= 4) {
+ fprintf(out_file,
+ "\t\t<smoothing_window> %0.10e </smoothing_window>\n",
+ rrd.rra_def[i].par[RRA_seasonal_smoothing_window].
+ u_val);
+ }
fprintf(out_file,
"\t\t<dependent_rra_idx> %lu </dependent_rra_idx>\n",
rrd.rra_def[i].par[RRA_dependent_rra_idx].u_cnt);
}
return rrd_close(rrd_file);
}
+
+/* backward compatibility with 1.2.x */
+int rrd_dump_r(
+ const char *filename,
+ char *outname)
+{
+ return rrd_dump_opt_r(filename, outname, 0);
+}
+
+int rrd_dump(
+ int argc,
+ char **argv)
+{
+ int rc;
+ int opt_noheader = 0;
+
+ /* init rrd clean */
+
+ optind = 0;
+ opterr = 0; /* initialize getopt */
+
+ while (42) {
+ int opt;
+ int option_index = 0;
+ static struct option long_options[] = {
+ {"no-header", no_argument, 0, 'n'},
+ {0, 0, 0, 0}
+ };
+
+ opt = getopt_long(argc, argv, "n", long_options, &option_index);
+
+ if (opt == EOF)
+ break;
+
+ switch (opt) {
+ case 'n':
+ opt_noheader = 1;
+ break;
+
+ default:
+ rrd_set_error("usage rrdtool %s [--no-header|-n] "
+ "file.rrd [file.xml]", argv[0]);
+ return (-1);
+ break;
+ }
+ } /* while (42) */
+
+ if ((argc - optind) < 1 || (argc - optind) > 2) {
+ rrd_set_error("usage rrdtool %s [--no-header|-n] "
+ "file.rrd [file.xml]", argv[0]);
+ return (-1);
+ }
+
+ if ((argc - optind) == 2) {
+ rc = rrd_dump_opt_r(argv[optind], argv[optind + 1], opt_noheader);
+ } else {
+ rc = rrd_dump_opt_r(argv[optind], NULL, opt_noheader);
+ }
+
+ return rc;
+}