X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_last.c;h=d3e4b4ccb8088e7d7f8f34cd4880871cef8487fb;hp=0b6a0ed67ca2802a95d6b85159b8d53185eb6afb;hb=210e991460e82d01d086f853e65485040eb2fffb;hpb=d49e24866f6f989a0e3a00a29281f1f9a1a1d54c diff --git a/src/rrd_last.c b/src/rrd_last.c index 0b6a0ed..d3e4b4c 100644 --- a/src/rrd_last.c +++ b/src/rrd_last.c @@ -7,19 +7,96 @@ *****************************************************************************/ #include "rrd_tool.h" +#include "rrd_client.h" time_t rrd_last( int argc, char **argv) { - if (argc < 2) { - rrd_set_error("please specify an rrd"); + char *opt_daemon = NULL; + + optind = 0; + opterr = 0; /* initialize getopt */ + + while (42) { + int opt; + int option_index = 0; + static struct option long_options[] = { + {"daemon", required_argument, 0, 'd'}, + {0, 0, 0, 0} + }; + + opt = getopt_long(argc, argv, "d:", 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; + + default: + rrd_set_error ("Usage: rrdtool %s [--daemon ] ", + argv[0]); + return (-1); + break; + } + } /* while (42) */ + + if ((argc - optind) != 1) { + rrd_set_error ("Usage: rrdtool %s [--daemon ] ", + argv[0]); return (-1); } - return (rrd_last_r(argv[1])); -} + if (opt_daemon == NULL) + { + char *temp; + temp = getenv (ENV_RRDCACHED_ADDRESS); + if (temp != NULL) + { + opt_daemon = strdup (temp); + if (opt_daemon == NULL) + { + rrd_set_error("strdup failed."); + return (-1); + } + } + } + + if (opt_daemon != NULL) + { + int status; + + status = rrdc_connect (opt_daemon); + if (status != 0) + { + rrd_set_error ("rrdc_connect failed with status %i.", status); + return (-1); + } + + status = rrdc_flush (argv[optind]); + if (status != 0) + { + rrd_set_error ("rrdc_flush (%s) failed with status %i.", + argv[optind], status); + return (-1); + } + + rrdc_disconnect (); + } /* if (opt_daemon) */ + + return (rrd_last_r (argv[optind])); +} time_t rrd_last_r( const char *filename)