X-Git-Url: https://git.octo.it/?a=blobdiff_plain;ds=sidebyside;f=src%2Frrd_info.c;h=f9c4604274ab80325c679512e30b04f7f619c2e1;hb=ea8c705cc27ef33dee2cc6561ed51e16ddc5d0a9;hp=ff3e35be452e704a55a2fc954feb037a877b7a4f;hpb=6a4c9f4045859f5dd1096464f4cdf2e8b862147b;p=rrdtool.git diff --git a/src/rrd_info.c b/src/rrd_info.c index ff3e35b..f9c4604 100644 --- a/src/rrd_info.c +++ b/src/rrd_info.c @@ -71,6 +71,11 @@ info_t 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); } @@ -323,3 +328,58 @@ info_t *rrd_info_r( rrd_free(&rrd); return (data); } + + +void info_print( + info_t *data) +{ + long image_length = 0; + + 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); + } +}