X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_xport.c;h=935a2cc0afd70541202e5941de17b93a642cdec5;hb=7dec93900504d48edecc2e0a93b4b8f5949d0331;hp=10c020f0d09736d9e2009f2860e0a8dd36b6d33d;hpb=2a6a270edfda89b04722b42b57992907f871c671;p=rrdtool.git diff --git a/src/rrd_xport.c b/src/rrd_xport.c index 10c020f..935a2cc 100644 --- a/src/rrd_xport.c +++ b/src/rrd_xport.c @@ -1,5 +1,5 @@ /**************************************************************************** - * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007 + * RRDtool 1.3.0 Copyright by Tobi Oetiker, 1997-2008 **************************************************************************** * rrd_xport.c export RRD data ****************************************************************************/ @@ -10,6 +10,7 @@ #include "rrd_graph.h" #include "rrd_xport.h" #include "unused.h" +#include "rrd_client.h" #if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) #include @@ -51,31 +52,31 @@ int rrd_xport( * will be changed to represent reality */ unsigned long *col_cnt, /* number of data columns in the result */ char ***legend_v, /* legend entries */ - rrd_value_t ** data) + rrd_value_t **data) { /* two dimensional array containing the data */ - image_desc_t im; time_t start_tmp = 0, end_tmp = 0; - struct rrd_time_value start_tv, end_tv; + rrd_time_value_t start_tv, end_tv; char *parsetime_error = NULL; + struct option long_options[] = { + {"start", required_argument, 0, 's'}, + {"end", required_argument, 0, 'e'}, + {"maxrows", required_argument, 0, 'm'}, + {"step", required_argument, 0, 261}, + {"enumds", no_argument, 0, 262}, /* these are handled in the frontend ... */ + {"daemon", required_argument, 0, 'd'}, + {0, 0, 0, 0} + }; optind = 0; opterr = 0; /* initialize getopt */ rrd_graph_init(&im); - parsetime("end-24h", &start_tv); - parsetime("now", &end_tv); + rrd_parsetime("end-24h", &start_tv); + rrd_parsetime("now", &end_tv); while (1) { - static struct option long_options[] = { - {"start", required_argument, 0, 's'}, - {"end", required_argument, 0, 'e'}, - {"maxrows", required_argument, 0, 'm'}, - {"step", required_argument, 0, 261}, - {"enumds", no_argument, 0, 262}, /* these are handled in the frontend ... */ - {0, 0, 0, 0} - }; int option_index = 0; int opt; @@ -91,13 +92,13 @@ int rrd_xport( case 262: break; case 's': - if ((parsetime_error = parsetime(optarg, &start_tv))) { + if ((parsetime_error = rrd_parsetime(optarg, &start_tv))) { rrd_set_error("start time: %s", parsetime_error); return -1; } break; case 'e': - if ((parsetime_error = parsetime(optarg, &end_tv))) { + if ((parsetime_error = rrd_parsetime(optarg, &end_tv))) { rrd_set_error("end time: %s", parsetime_error); return -1; } @@ -109,13 +110,33 @@ int rrd_xport( return -1; } break; + case 'd': + { + int status; + if (im.use_rrdcached) + { + rrd_set_error ("You cannot specify --daemon " + "more than once."); + return (-1); + } + status = rrdc_connect (optarg); + if (status != 0) + { + rrd_set_error ("rrdc_connect(%s) failed with status %i.", + optarg, status); + return (-1); + } + im.use_rrdcached = 1; + break; + } + case '?': rrd_set_error("unknown option '%s'", argv[optind - 1]); return -1; } } - if (proc_start_end(&start_tv, &end_tv, &start_tmp, &end_tmp) == -1) { + if (rrd_proc_start_end(&start_tv, &end_tv, &start_tmp, &end_tmp) == -1) { return -1; } @@ -147,6 +168,26 @@ int rrd_xport( return (-1); } + if (im.use_rrdcached == 0) + { + char *temp; + + temp = getenv (ENV_RRDCACHED_ADDRESS); + if (temp != NULL) + { + int status; + + status = rrdc_connect (temp); + if (status != 0) + { + rrd_set_error ("rrdc_connect(%s) failed with status %i.", + temp, status); + return (-1); + } + im.use_rrdcached = 1; + } + } + if (rrd_xport_fn(&im, start, end, step, col_cnt, legend_v, data) == -1) { im_free(&im); return -1; @@ -159,7 +200,7 @@ int rrd_xport( int rrd_xport_fn( - image_desc_t * im, + image_desc_t *im, time_t *start, time_t *end, /* which time frame do you want ? * will be changed to represent reality */ @@ -167,7 +208,7 @@ int rrd_xport_fn( * will be changed to represent reality */ unsigned long *col_cnt, /* number of data columns in the result */ char ***legend_v, /* legend entries */ - rrd_value_t ** data) + rrd_value_t **data) { /* two dimensional array containing the data */ int i = 0, j = 0; @@ -177,7 +218,7 @@ int rrd_xport_fn( unsigned long nof_xports = 0; unsigned long xport_counter = 0; - unsigned long *ref_list; + int *ref_list; rrd_value_t **srcptr_list; char **legend_list; int ii = 0; @@ -204,7 +245,6 @@ int rrd_xport_fn( break; } } - if (nof_xports == 0) { rrd_set_error("no XPORT found, nothing to do"); return -1;