X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_dump.c;h=504e58316e9e7408fc5c36d4827015433ec49e4f;hb=e00381f4655492dfcd8bb8c12065eb62229b20c1;hp=9da8fd7935a77d4f1bc43f6f99ce3028f5578bdf;hpb=907f9b68f3714bc0432d2ace43a2c93d81b4bffc;p=rrdtool.git diff --git a/src/rrd_dump.c b/src/rrd_dump.c index 9da8fd7..504e583 100644 --- a/src/rrd_dump.c +++ b/src/rrd_dump.c @@ -45,6 +45,11 @@ #include "rrd_rpncalc.h" #include "rrd_client.h" +#ifdef HAVE_LOCALE_H +#include +#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("\n", out_file); @@ -105,14 +114,14 @@ static int rrd_dump_opt_r( } fprintf(out_file, "\t%lu \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%lu \n\n", - (unsigned long) rrd.live_head->last_up, somestring); + fprintf(out_file, "\t%lld \n\n", + (long long) rrd.live_head->last_up, somestring); for (i = 0; i < rrd.stat_head->ds_cnt; i++) { fprintf(out_file, "\t\n"); fprintf(out_file, "\t\t%s\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 ", somestring, - (int) now); + fprintf(out_file, "\t\t\t ", 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); } @@ -455,7 +467,7 @@ int rrd_dump( * 1 = dtd header * 2 = xsd header */ - int opt_header = 0; + int opt_header = 1; char *opt_daemon = NULL; /* init rrd clean */ @@ -463,16 +475,17 @@ int rrd_dump( 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; @@ -489,16 +502,22 @@ int rrd_dump( } 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; @@ -506,7 +525,7 @@ int rrd_dump( } /* 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); }