X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_update.c;h=0b18964e3c18fce1d47df3b7e971ddcb1e33b80b;hb=6801c3fb1c505c5534218100fab7888e140ca359;hp=da8f56a6814cebefc0044d63f588b00d8219b88e;hpb=96d6811ee7cb3770870d5511d27b17a0d70252e7;p=rrdtool.git diff --git a/src/rrd_update.c b/src/rrd_update.c index da8f56a..0b18964 100644 --- a/src/rrd_update.c +++ b/src/rrd_update.c @@ -1,5 +1,5 @@ /***************************************************************************** - * RRDtool 1.2.12 Copyright by Tobi Oetiker, 1997-2005 + * RRDtool 1.2.18 Copyright by Tobi Oetiker, 1997-2006 ***************************************************************************** * rrd_update.c RRD Update Function ***************************************************************************** @@ -94,31 +94,12 @@ int _rrd_update(char *filename, char *tmplt, int argc, char **argv, #define IFDNAN(X,Y) (isnan(X) ? (Y) : (X)); -#ifdef STANDALONE -int -main(int argc, char **argv){ - rrd_update(argc,argv); - if (rrd_test_error()) { - printf("RRDtool " PACKAGE_VERSION " Copyright by Tobi Oetiker, 1997-2005\n\n" - "Usage: rrdupdate filename\n" - "\t\t\t[--template|-t ds-name:ds-name:...]\n" - "\t\t\ttime|N:value[:value...]\n\n" - "\t\t\tat-time@value[:value...]\n\n" - "\t\t\t[ time:value[:value...] ..]\n\n"); - - printf("ERROR: %s\n",rrd_get_error()); - rrd_clear_error(); - return 1; - } - return 0; -} -#endif - info_t *rrd_update_v(int argc, char **argv) { char *tmplt = NULL; info_t *result = NULL; infoval rc; + rc.u_int = -1; optind = 0; opterr = 0; /* initialize getopt */ while (1) { @@ -142,7 +123,6 @@ info_t *rrd_update_v(int argc, char **argv) case '?': rrd_set_error("unknown option '%s'",argv[optind-1]); - rc.u_int = -1; goto end_tag; } } @@ -150,9 +130,9 @@ info_t *rrd_update_v(int argc, char **argv) /* need at least 2 arguments: filename, data. */ if (argc-optind < 2) { rrd_set_error("Not enough arguments"); - rc.u_int = -1; goto end_tag; } + rc.u_int = 0; result = info_push(NULL,sprintf_alloc("return_value"),RD_I_INT,rc); rc.u_int = _rrd_update(argv[optind], tmplt, argc - optind - 1, argv + optind + 1, result); @@ -286,6 +266,7 @@ _rrd_update(char *filename, char *tmplt, int argc, char **argv, unsigned long rrd_filesize; #endif + rpnstack_init(&rpnstack); /* need at least 1 arguments: data. */ @@ -447,7 +428,7 @@ _rrd_update(char *filename, char *tmplt, int argc, char **argv, #endif /* loop through the arguments. */ for(arg_i=0; arg_ids_cnt;ii++) updvals[ii] = "U"; - strcpy(stepper,argv[arg_i]); updvals[0]=stepper; /* separate all ds elements; first must be examined separately due to alternate time syntax */ @@ -481,7 +462,7 @@ _rrd_update(char *filename, char *tmplt, int argc, char **argv, *p = '\0'; stepper = p+1; } else { - rrd_set_error("expected timestamp not found in data source from %s:...", + rrd_set_error("expected timestamp not found in data source from %s", argv[arg_i]); free(step_start); break; @@ -500,7 +481,7 @@ _rrd_update(char *filename, char *tmplt, int argc, char **argv, } if (ii != tmpl_cnt-1) { - rrd_set_error("expected %lu data source readings (got %lu) from %s:...", + rrd_set_error("expected %lu data source readings (got %lu) from %s", tmpl_cnt-1, ii, argv[arg_i]); free(step_start); break; @@ -609,9 +590,9 @@ _rrd_update(char *filename, char *tmplt, int argc, char **argv, dst_idx= dst_conv(rrd.ds_def[i].dst); /* make sure we do not build diffs with old last_ds values */ - if(rrd.ds_def[i].par[DS_mrhb_cnt].u_cnt < interval - && ( dst_idx == DST_COUNTER || dst_idx == DST_DERIVE)){ + if(rrd.ds_def[i].par[DS_mrhb_cnt].u_cnt < interval) { strncpy(rrd.pdp_prep[i].last_ds,"U",LAST_DS_LEN-1); + rrd.pdp_prep[i].last_ds[LAST_DS_LEN-1]='\0'; } /* NOTE: DST_CDEF should never enter this if block, because @@ -720,11 +701,8 @@ _rrd_update(char *filename, char *tmplt, int argc, char **argv, rrd.pdp_prep[i].last_ds, updvals[i+1], pdp_new[i]); #endif - if(dst_idx == DST_COUNTER || dst_idx == DST_DERIVE){ - strncpy(rrd.pdp_prep[i].last_ds, - updvals[i+1],LAST_DS_LEN-1); - rrd.pdp_prep[i].last_ds[LAST_DS_LEN-1]='\0'; - } + strncpy(rrd.pdp_prep[i].last_ds, updvals[i+1],LAST_DS_LEN-1); + rrd.pdp_prep[i].last_ds[LAST_DS_LEN-1]='\0'; } /* break out of the argument parsing loop if the error_string is set */ if (rrd_test_error()){