X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_first.c;h=80b9e17df6113d28b8114baa13dfa70132e67187;hp=d55c129b3b83d8330879417aa63e000b1b5eaa37;hb=96b0f4aace0deef034a792a08dc2d426cd2b61a4;hpb=daf8e7ff715a59e1f9827080d1b785ffb3c5a4b1 diff --git a/src/rrd_first.c b/src/rrd_first.c index d55c129..80b9e17 100644 --- a/src/rrd_first.c +++ b/src/rrd_first.c @@ -1,12 +1,14 @@ /***************************************************************************** - * RRDtool 1.3rc7 Copyright by Tobi Oetiker, 1997-2008 + * RRDtool 1.4.3 Copyright by Tobi Oetiker, 1997-2010 ***************************************************************************** * rrd_first Return ***************************************************************************** * Initial version by Burton Strauss, ntopSupport.com - 3/2005 *****************************************************************************/ +#include #include "rrd_tool.h" +#include "rrd_client.h" time_t rrd_first( @@ -15,8 +17,10 @@ time_t rrd_first( { int target_rraindex = 0; char *endptr; + char *opt_daemon = NULL; struct option long_options[] = { {"rraindex", required_argument, 0, 129}, + {"daemon", required_argument, 0, 'd'}, {0, 0, 0, 0} }; @@ -27,7 +31,7 @@ time_t rrd_first( int option_index = 0; int opt; - opt = getopt_long(argc, argv, "", long_options, &option_index); + opt = getopt_long(argc, argv, "d:F", long_options, &option_index); if (opt == EOF) break; @@ -40,19 +44,35 @@ time_t rrd_first( return (-1); } break; + 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; default: - rrd_set_error("usage rrdtool %s [--rraindex number] file.rrd", + rrd_set_error("usage rrdtool %s [--rraindex number] [--daemon ] file.rrd", argv[0]); return (-1); } } if (optind >= argc) { - rrd_set_error("not enough arguments"); + rrd_set_error("usage rrdtool %s [--rraindex number] [--daemon ] file.rrd", + argv[0]); return -1; } + rrdc_connect (opt_daemon); + if (rrdc_is_connected (opt_daemon)) { + return (rrdc_first (argv[optind], target_rraindex)); + } else { return (rrd_first_r(argv[optind], target_rraindex)); + } } @@ -65,6 +85,7 @@ time_t rrd_first_r( rrd_t rrd; rrd_file_t *rrd_file; + rrd_init(&rrd); rrd_file = rrd_open(filename, &rrd, RRD_READONLY); if (rrd_file == NULL) { goto err_free; @@ -80,7 +101,7 @@ time_t rrd_first_r( (rra_start + (rrd.rra_ptr[rraindex].cur_row + 1) * rrd.stat_head->ds_cnt * sizeof(rrd_value_t)), SEEK_SET); - timer = -(rrd.rra_def[rraindex].row_cnt - 1); + timer = -(long)(rrd.rra_def[rraindex].row_cnt - 1); if (rrd.rra_ptr[rraindex].cur_row + 1 > rrd.rra_def[rraindex].row_cnt) { rrd_seek(rrd_file, rra_start, SEEK_SET); }