From: Florian Forster Date: Wed, 7 Aug 2013 06:39:08 +0000 (+0200) Subject: Merge branch 'pr/381' X-Git-Tag: collectd-5.4.0~14 X-Git-Url: https://git.tokkee.org/?p=collectd.git;a=commitdiff_plain;h=f47430fa93cc9fd374dbb998a4b68c3e3f454c95;hp=a1e1d77f21f3568f6392d5bba5c1dfec187c728b Merge branch 'pr/381' --- diff --git a/src/rrdtool.c b/src/rrdtool.c index 80833902..2f28329f 100644 --- a/src/rrdtool.c +++ b/src/rrdtool.c @@ -198,7 +198,7 @@ static int srrd_update (char *filename, char *template, } /* int srrd_update */ #endif /* !HAVE_THREADSAFE_LIBRRD */ -static int value_list_to_string (char *buffer, int buffer_len, +static int value_list_to_string_multiple (char *buffer, int buffer_len, const data_set_t *ds, const value_list_t *vl) { int offset; @@ -241,6 +241,45 @@ static int value_list_to_string (char *buffer, int buffer_len, offset += status; } /* for ds->ds_num */ + return (0); +} /* int value_list_to_string_multiple */ + +static int value_list_to_string (char *buffer, int buffer_len, + const data_set_t *ds, const value_list_t *vl) +{ + int status; + time_t tt; + + if (ds->ds_num != 1) + return (value_list_to_string_multiple (buffer, buffer_len, + ds, vl)); + + tt = CDTIME_T_TO_TIME_T (vl->time); + switch (ds->ds[0].type) + { + case DS_TYPE_DERIVE: + status = ssnprintf (buffer, buffer_len, "%u:%"PRIi64, + (unsigned) tt, vl->values[0].derive); + break; + case DS_TYPE_GAUGE: + status = ssnprintf (buffer, buffer_len, "%u:%lf", + (unsigned) tt, vl->values[0].gauge); + break; + case DS_TYPE_COUNTER: + status = ssnprintf (buffer, buffer_len, "%u:%llu", + (unsigned) tt, vl->values[0].counter); + break; + case DS_TYPE_ABSOLUTE: + status = ssnprintf (buffer, buffer_len, "%u:%"PRIu64, + (unsigned) tt, vl->values[0].absolute); + break; + default: + return (EINVAL); + } + + if ((status < 1) || (status >= buffer_len)) + return (ENOMEM); + return (0); } /* int value_list_to_string */