X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Frrd_update.c;h=fa60c0b47d21c26904a1dc1b3e3ce59e04a992f4;hb=271be77064640b1daa3408885d60b8bead1126ad;hp=78f9a572e02e3bd70bedcdb6022899a61195fcc1;hpb=2815c8a96b82730e41cebf8a5065e00666c560b8;p=rrdtool.git diff --git a/src/rrd_update.c b/src/rrd_update.c index 78f9a57..fa60c0b 100644 --- a/src/rrd_update.c +++ b/src/rrd_update.c @@ -135,16 +135,16 @@ info_t *rrd_update_v( char *tmplt = NULL; info_t *result = NULL; infoval rc; + struct option long_options[] = { + {"template", required_argument, 0, 't'}, + {0, 0, 0, 0} + }; rc.u_int = -1; optind = 0; opterr = 0; /* initialize getopt */ while (1) { - static struct option long_options[] = { - {"template", required_argument, 0, 't'}, - {0, 0, 0, 0} - }; int option_index = 0; int opt; @@ -183,6 +183,12 @@ int rrd_update( int argc, char **argv) { + struct option long_options[] = { + {"template", required_argument, 0, 't'}, + {0, 0, 0, 0} + }; + int option_index = 0; + int opt; char *tmplt = NULL; int rc; @@ -190,13 +196,6 @@ int rrd_update( opterr = 0; /* initialize getopt */ while (1) { - static struct option long_options[] = { - {"template", required_argument, 0, 't'}, - {0, 0, 0, 0} - }; - int option_index = 0; - int opt; - opt = getopt_long(argc, argv, "t:", long_options, &option_index); if (opt == EOF) @@ -204,7 +203,7 @@ int rrd_update( switch (opt) { case 't': - tmplt = optarg; + tmplt = strdup(optarg); break; case '?': @@ -222,6 +221,7 @@ int rrd_update( rc = rrd_update_r(argv[optind], tmplt, argc - optind - 1, (const char **) (argv + optind + 1)); + free(tmplt); return rc; } @@ -433,7 +433,8 @@ int _rrd_update( } /* initialize all ds input to unknown except the first one which has always got to be set */ - memset(updvals + 1, 'U', rrd.stat_head->ds_cnt); + for (ii = 1; ii <= rrd.stat_head->ds_cnt; ii++) + updvals[ii] = "U"; updvals[0] = stepper; /* separate all ds elements; first must be examined separately due to alternate time syntax */ @@ -1197,6 +1198,7 @@ int _rrd_update( u_val = seasonal_coef[ii]; break; case CF_HWPREDICT: + case CF_MHWPREDICT: /* need to update the null_count and last_null_count. * even do this for non-DNAN pdp_temp because the * algorithm is not learning from batch updates. */