X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=program%2Fsrc%2Frrd_create.c;h=186b3b40fa6e92818e759b0e63ecc998363327c6;hb=b4eb6801b793c0312f20f93de0cd147ea2bfe533;hp=9e5b0557a8fa51d1a33fa33b4ca86e47ba3d2f40;hpb=e820aecb98046c74141de0e431c36398024a7f88;p=rrdtool-all.git diff --git a/program/src/rrd_create.c b/program/src/rrd_create.c index 9e5b0557..186b3b40 100644 --- a/program/src/rrd_create.c +++ b/program/src/rrd_create.c @@ -4,6 +4,9 @@ * rrd_create.c creates new rrds *****************************************************************************/ +#include +#include + #include "rrd_tool.h" #include "rrd_rpncalc.h" #include "rrd_hw.h" @@ -13,6 +16,7 @@ unsigned long FnvHash(const char *str); int create_hw_contingent_rras(rrd_t *rrd, unsigned short period, unsigned long hashed_name); void parseGENERIC_DS(const char *def,rrd_t *rrd, int ds_idx); +long int rra_random_row(rra_def_t *); int rrd_create(int argc, char **argv) @@ -308,6 +312,8 @@ rrd_create_r(const char *filename, break; default: rrd.rra_def[rrd.stat_head->rra_cnt].pdp_cnt = atoi(token); + if (atoi(token) < 1) + rrd_set_error("Invalid step: must be >= 1"); break; } break; @@ -650,7 +656,7 @@ rrd_create_fn(const char *file_name, rrd_t *rrd) * the pointer a priori. */ for (i=0; i < rrd->stat_head->rra_cnt; i++) { - rrd->rra_ptr->cur_row = rrd->rra_def[i].row_cnt - 1; + rrd->rra_ptr->cur_row = rra_random_row(&rrd->rra_def[i]); fwrite( rrd->rra_ptr, sizeof(rra_ptr_t),1,rrd_file); } @@ -686,3 +692,17 @@ rrd_create_fn(const char *file_name, rrd_t *rrd) rrd_free(rrd); return (0); } + +static int rand_init = 0; + +long int +rra_random_row(rra_def_t *rra) +{ + if (!rand_init) + { + srandom((unsigned int)time(NULL) + (unsigned int)getpid()); + rand_init++; + } + + return random() % rra->row_cnt; +}