X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_rrdcreate.c;h=4ecec59dae1cdad9d3128b25f241920d888d6fce;hb=0cc57e3f854e7903d7ec46d8d4b0e46bba4a8739;hp=f006d13f09b604738eb45f6f869c539456a20509;hpb=98062438c25226e2e4a28ab629de5dfa27a79913;p=collectd.git diff --git a/src/utils_rrdcreate.c b/src/utils_rrdcreate.c index f006d13f..4ecec59d 100644 --- a/src/utils_rrdcreate.c +++ b/src/utils_rrdcreate.c @@ -148,12 +148,15 @@ static int rra_get (char ***ret, const value_list_t *vl, /* {{{ */ for (j = 0; j < rra_types_num; j++) { + int status; + if (rra_num >= rra_max) break; - if (ssnprintf (buffer, sizeof (buffer), "RRA:%s:%3.1f:%u:%u", - rra_types[j], cfg->xff, - cdp_len, cdp_num) >= sizeof (buffer)) + status = ssnprintf (buffer, sizeof (buffer), "RRA:%s:%3.1f:%u:%u", + rra_types[j], cfg->xff, cdp_len, cdp_num); + + if ((status < 0) || ((size_t) status >= sizeof (buffer))) { ERROR ("rra_get: Buffer would have been truncated."); continue; @@ -210,6 +213,10 @@ static int ds_get (char ***ret, /* {{{ */ type = "COUNTER"; else if (d->type == DS_TYPE_GAUGE) type = "GAUGE"; + else if (d->type == DS_TYPE_DERIVE) + type = "DERIVE"; + else if (d->type == DS_TYPE_ABSOLUTE) + type = "ABSOLUTE"; else { ERROR ("rrdtool plugin: Unknown DS type: %i", @@ -222,21 +229,21 @@ static int ds_get (char ***ret, /* {{{ */ sstrncpy (min, "U", sizeof (min)); } else - ssnprintf (min, sizeof (min), "%lf", d->min); + ssnprintf (min, sizeof (min), "%f", d->min); if (isnan (d->max)) { sstrncpy (max, "U", sizeof (max)); } else - ssnprintf (max, sizeof (max), "%lf", d->max); + ssnprintf (max, sizeof (max), "%f", d->max); status = ssnprintf (buffer, sizeof (buffer), "DS:%s:%s:%i:%s:%s", d->name, type, (cfg->heartbeat > 0) ? cfg->heartbeat : (2 * vl->interval), min, max); - if ((status < 1) || (status >= sizeof (buffer))) + if ((status < 1) || ((size_t) status >= sizeof (buffer))) break; ds_def[ds_num] = sstrdup (buffer);