diff --git a/program/src/rrd_info.c b/program/src/rrd_info.c
index 8f88d6898f68a89b037b35059b86b18d2316e968..5bfe9ffe4428ec13aac2f20c6983724b1fdb61d7 100644 (file)
--- a/program/src/rrd_info.c
+++ b/program/src/rrd_info.c
next->value.u_str = malloc(sizeof(char) * (strlen(value.u_str) + 1));
strcpy(next->value.u_str, value.u_str);
break;
+ case RD_I_BLO:
+ next->value.u_blo.size = value.u_blo.size;
+ next->value.u_blo.ptr =
+ malloc(sizeof(unsigned char) * value.u_blo.size);
+ memcpy(next->value.u_blo.ptr, value.u_blo.ptr, value.u_blo.size);
+ break;
}
return (next);
}
info.u_cnt = rrd.rra_def[i].row_cnt;
cd = info_push(cd, sprintf_alloc("rra[%d].rows", i), RD_I_CNT, info);
+ info.u_cnt = rrd.rra_ptr[i].cur_row;
+ cd = info_push(cd, sprintf_alloc("rra[%d].cur_row", i), RD_I_CNT,
+ info);
+
info.u_cnt = rrd.rra_def[i].pdp_cnt;
cd = info_push(cd, sprintf_alloc("rra[%d].pdp_per_row", i), RD_I_CNT,
info);
cd = info_push(cd, sprintf_alloc("rra[%d].gamma", i), RD_I_VAL,
info);
if (atoi(rrd.stat_head->version) >= 4) {
- info.u_val = rrd.rra_def[i].par[RRA_seasonal_smoothing_window].u_val;
- cd = info_push(cd, sprintf_alloc("rra[%d].smoothing_window", i), RD_I_VAL,
- info);
+ info.u_val =
+ rrd.rra_def[i].par[RRA_seasonal_smoothing_window].u_val;
+ cd = info_push(cd,
+ sprintf_alloc("rra[%d].smoothing_window", i),
+ RD_I_VAL, info);
}
break;
case CF_FAILURES:
rrd_free(&rrd);
return (data);
}
+
+
+void info_print(
+ info_t *data)
+{
+ while (data) {
+ printf("%s = ", data->key);
+
+ switch (data->type) {
+ case RD_I_VAL:
+ if (isnan(data->value.u_val))
+ printf("NaN\n");
+ else
+ printf("%0.10e\n", data->value.u_val);
+ break;
+ case RD_I_CNT:
+ printf("%lu\n", data->value.u_cnt);
+ break;
+ case RD_I_INT:
+ printf("%d\n", data->value.u_int);
+ break;
+ case RD_I_STR:
+ printf("\"%s\"\n", data->value.u_str);
+ break;
+ case RD_I_BLO:
+ printf("BLOB_SIZE:%lu\n", data->value.u_blo.size);
+ fwrite(data->value.u_blo.ptr, data->value.u_blo.size, 1, stdout);
+ break;
+ }
+ data = data->next;
+ }
+}
+
+void info_free(
+ info_t *data)
+{
+ info_t *save;
+
+ while (data) {
+ save = data;
+ if (data->key) {
+ if (data->type == RD_I_STR) {
+ free(data->value.u_str);
+ }
+ if (data->type == RD_I_BLO) {
+ free(data->value.u_blo.ptr);
+ }
+ free(data->key);
+ }
+ data = data->next;
+ free(save);
+ }
+}