X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_lastupdate.c;h=79274b55c929c727e27cd5d381b507498618fcd9;hp=169c49dc69c727e9c26b2cfd359dbffe3e908061;hb=009ac7ac9dde1ba7c450b230b9118cff2cedc9f6;hpb=ec2afe5e94d9fcd72bb58e572f0251c7557325f7 diff --git a/src/rrd_lastupdate.c b/src/rrd_lastupdate.c index 169c49d..79274b5 100644 --- a/src/rrd_lastupdate.c +++ b/src/rrd_lastupdate.c @@ -8,47 +8,53 @@ #include "rrd_rpncalc.h" #include -int -rrd_lastupdate(int argc, char **argv, time_t *last_update, - unsigned long *ds_cnt, char ***ds_namv, char ***last_ds) { - unsigned long i=0; - char *filename; - FILE *in_file; - rrd_t rrd; - - if(argc < 2){ +int rrd_lastupdate( + int argc, + char **argv, + time_t *last_update, + unsigned long *ds_cnt, + char ***ds_namv, + char ***last_ds) +{ + unsigned long i = 0; + char *filename; + rrd_t rrd; + rrd_file_t *rrd_file; + + if (argc < 2) { rrd_set_error("please specify an rrd"); return -1; } filename = argv[1]; - if(rrd_open(filename,&in_file,&rrd, RRD_READONLY)==-1){ - return(-1); - } - fclose(in_file); + rrd_file = rrd_open(filename, &rrd, RRD_READONLY); + if (rrd_file == NULL) + return (-1); - *last_update=rrd.live_head->last_up; + *last_update = rrd.live_head->last_up; *ds_cnt = rrd.stat_head->ds_cnt; if (((*ds_namv) = - (char **) malloc(rrd.stat_head->ds_cnt * sizeof(char*)))==NULL){ + (char **) malloc(rrd.stat_head->ds_cnt * sizeof(char *))) == NULL) { rrd_set_error("malloc fetch ds_namv array"); - rrd_free(&rrd); - return(-1); - } + rrd_free(&rrd); + return (-1); + } if (((*last_ds) = - (char **) malloc(rrd.stat_head->ds_cnt * sizeof(char*)))==NULL){ + (char **) malloc(rrd.stat_head->ds_cnt * sizeof(char *))) == NULL) { rrd_set_error("malloc fetch last_ds array"); - rrd_free(&rrd); - free(*ds_namv); - return(-1); - } - - for(i=0;ids_cnt;i++){ - (*ds_namv)[i] = sprintf_alloc("%s", rrd.ds_def[i].ds_nam); - (*last_ds)[i] = sprintf_alloc("%s", rrd.pdp_prep[i].last_ds); + rrd_free(&rrd); + free(*ds_namv); + return (-1); + } + + for (i = 0; i < rrd.stat_head->ds_cnt; i++) { + (*ds_namv)[i] = sprintf_alloc("%s", rrd.ds_def[i].ds_nam); + (*last_ds)[i] = sprintf_alloc("%s", rrd.pdp_prep[i].last_ds); } rrd_free(&rrd); - return(0); + close(rrd_file->fd); + rrd_close(rrd_file); + return (0); }