X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_dump.c;h=a32f4fb32768dd75c4ef94592b252d5c062dcffb;hb=5fe8a76ab35012a0a5e1bd8cc5ff4a6f059f37f5;hp=0f69e4f93731efd0e96148311d445cd240537eb7;hpb=6396ef12edf2fb8fc5364ae5a8b782e6ef77d64b;p=rrdtool.git diff --git a/src/rrd_dump.c b/src/rrd_dump.c index 0f69e4f..a32f4fb 100644 --- a/src/rrd_dump.c +++ b/src/rrd_dump.c @@ -1,5 +1,5 @@ /***************************************************************************** - * RRDtool 1.3rc2 Copyright by Tobi Oetiker, 1997-2008 + * RRDtool 1.3.2 Copyright by Tobi Oetiker, 1997-2008 ***************************************************************************** * rrd_dump Display a RRD ***************************************************************************** @@ -43,6 +43,7 @@ *****************************************************************************/ #include "rrd_tool.h" #include "rrd_rpncalc.h" +#include "rrd_client.h" #if !(defined(NETWARE) || defined(WIN32)) extern char *tzname[2]; @@ -52,8 +53,7 @@ extern char *tzname[2]; int rrd_dump_opt_r( const char *filename, char *outname, - int opt_noheader -) + int opt_noheader) { unsigned int i, ii, ix, iii = 0; time_t now; @@ -81,11 +81,11 @@ int rrd_dump_opt_r( out_file = stdout; } - if (opt_noheader){ - fputs("\n", out_file); - fputs - ("\n", - out_file); + if (!opt_noheader) { + fputs("\n", out_file); + fputs + ("\n", + out_file); } fputs("", out_file); fputs("", out_file); @@ -433,7 +433,7 @@ int rrd_dump_r( const char *filename, char *outname) { - return rrd_dump_opt_r(filename,outname,0); + return rrd_dump_opt_r(filename, outname, 0); } int rrd_dump( @@ -442,49 +442,66 @@ int rrd_dump( { int rc; int opt_noheader = 0; + char *opt_daemon = NULL; + /* init rrd clean */ optind = 0; opterr = 0; /* initialize getopt */ - + while (42) { - int opt; + int opt; int option_index = 0; static struct option long_options[] = { + {"daemon", required_argument, 0, 'd'}, {"no-header", no_argument, 0, 'n'}, {0, 0, 0, 0} }; - opt = getopt_long(argc, argv, "n", long_options, &option_index); + opt = getopt_long(argc, argv, "d:n", long_options, &option_index); if (opt == EOF) break; switch (opt) { + case 'd': + if (opt_daemon != NULL) + free (opt_daemon); + opt_daemon = strdup (optarg); + if (opt_daemon == NULL) + { + rrd_set_error ("strdup failed."); + return (-1); + } + break; + case 'n': opt_noheader = 1; break; - default: + default: rrd_set_error("usage rrdtool %s [--no-header|-n] " - "file.rrd [file.xml]", argv[0]); + "file.rrd [file.xml]", argv[0]); return (-1); break; } } /* while (42) */ - if ((argc - optind) < 2) { + 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 == 3) { - rc = rrd_dump_opt_r(argv[1], argv[2],opt_noheader); + rc = rrdc_flush_if_daemon(opt_daemon, argv[optind]); + if (opt_daemon) free(opt_daemon); + if (rc) return (rc); + + if ((argc - optind) == 2) { + rc = rrd_dump_opt_r(argv[optind], argv[optind + 1], opt_noheader); } else { - rc = rrd_dump_opt_r(argv[1], NULL,opt_noheader); + rc = rrd_dump_opt_r(argv[optind], NULL, opt_noheader); } return rc; } -