/****************************************************************************
- * 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
****************************************************************************/
#include "rrd_graph.h"
#include "rrd_xport.h"
#include "unused.h"
+#include "rrd_client.h"
#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
#include <io.h>
* 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;
- opt = getopt_long(argc, argv, "s:e:m:", long_options, &option_index);
+ opt = getopt_long(argc, argv, "s:e:m:d:", long_options, &option_index);
if (opt == EOF)
break;
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;
}
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;
}
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;
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 */
* 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;
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;
break;
}
}
-
if (nof_xports == 0) {
rrd_set_error("no XPORT found, nothing to do");
return -1;