X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Frrd_update.c;h=d853c5b166c3984b632505147be500c17025d679;hb=e50d3e46544f991e79f36d394ab632ac73205a84;hp=a66f14e4121962eb7c61b504a81d3b72cdb6c620;hpb=090e0fb8a96794b83d075a56ddf6b19fdb4e7c45;p=rrdtool.git diff --git a/src/rrd_update.c b/src/rrd_update.c index a66f14e..d853c5b 100644 --- a/src/rrd_update.c +++ b/src/rrd_update.c @@ -1,5 +1,5 @@ /***************************************************************************** - * RRDtool 1.2.15 Copyright by Tobi Oetiker, 1997-2006 + * RRDtool 1.2.19 Copyright by Tobi Oetiker, 1997-2007 ***************************************************************************** * rrd_update.c RRD Update Function ***************************************************************************** @@ -87,8 +87,8 @@ info_t *write_RRA_row (rrd_t *rrd, unsigned long rra_idx, unsigned short CDP_scratch_idx, FILE *rrd_file, info_t *pcdp_summary, time_t *rra_time); #endif -int rrd_update_r(char *filename, char *tmplt, int argc, char **argv); -int _rrd_update(char *filename, char *tmplt, int argc, char **argv, +int rrd_update_r(const char *filename, const char *tmplt, int argc, const char **argv); +int _rrd_update(const char *filename, const char *tmplt, int argc, const char **argv, info_t*); #define IFDNAN(X,Y) (isnan(X) ? (Y) : (X)); @@ -186,13 +186,13 @@ rrd_update(int argc, char **argv) } int -rrd_update_r(char *filename, char *tmplt, int argc, char **argv) +rrd_update_r(const char *filename, const char *tmplt, int argc, const char **argv) { return _rrd_update(filename, tmplt, argc, argv, NULL); } int -_rrd_update(char *filename, char *tmplt, int argc, char **argv, +_rrd_update(const char *filename, const char *tmplt, int argc, const char **argv, info_t *pcdp_summary) { @@ -364,13 +364,13 @@ _rrd_update(char *filename, char *tmplt, int argc, char **argv, /* we should work on a writeable copy here */ char *dsname; unsigned int tmpl_len; - tmplt = strdup(tmplt); - dsname = tmplt; + char *tmplt_copy = strdup(tmplt); + dsname = tmplt_copy; tmpl_cnt = 1; /* the first entry is the time */ - tmpl_len = strlen(tmplt); + tmpl_len = strlen(tmplt_copy); for(i=0;i<=tmpl_len ;i++) { - if (tmplt[i] == ':' || tmplt[i] == '\0') { - tmplt[i] = '\0'; + if (tmplt_copy[i] == ':' || tmplt_copy[i] == '\0') { + tmplt_copy[i] = '\0'; if (tmpl_cnt>rrd.stat_head->ds_cnt){ rrd_set_error("tmplt contains more DS definitions than RRD"); free(updvals); free(pdp_temp); @@ -380,23 +380,23 @@ _rrd_update(char *filename, char *tmplt, int argc, char **argv, if ((tmpl_idx[tmpl_cnt++] = ds_match(&rrd,dsname)) == -1){ rrd_set_error("unknown DS name '%s'",dsname); free(updvals); free(pdp_temp); - free(tmplt); + free(tmplt_copy); free(tmpl_idx); rrd_free(&rrd); fclose(rrd_file); return(-1); } else { /* the first element is always the time */ tmpl_idx[tmpl_cnt-1]++; - /* go to the next entry on the tmplt */ - dsname = &tmplt[i+1]; + /* go to the next entry on the tmplt_copy */ + dsname = &tmplt_copy[i+1]; /* fix the damage we did before */ if (ids_cnt))==NULL){ @@ -615,7 +615,7 @@ _rrd_update(char *filename, char *tmplt, int argc, char **argv, case DST_DERIVE: if(rrd.pdp_prep[i].last_ds[0] != 'U'){ for(ii=0;updvals[i+1][ii] != '\0';ii++){ - if(updvals[i+1][ii] < '0' || updvals[i+1][ii] > '9' || (ii==0 && updvals[i+1][ii] == '-')){ + if((updvals[i+1][ii] < '0' || updvals[i+1][ii] > '9') && (ii != 0 && updvals[i+1][ii] != '-')){ rrd_set_error("not a simple integer: '%s'",updvals[i+1]); break; }