X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcsv.c;h=0b34687dac172b863379a89803d1a86936c9c71d;hb=0d5c879672770e3b8a740727fb223a6febdeaa27;hp=352557a8046de0021681d3f6cf0b578f11a23f36;hpb=6d86a97190a193863aadc252f20f6b9dba61c263;p=collectd.git diff --git a/src/csv.c b/src/csv.c index 352557a8..0b34687d 100644 --- a/src/csv.c +++ b/src/csv.c @@ -1,6 +1,7 @@ /** * collectd - src/csv.c * Copyright (C) 2007-2009 Florian octo Forster + * Copyright (C) 2009 Doug MacEachern * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -17,6 +18,7 @@ * * Authors: * Florian octo Forster + * Doug MacEachern **/ #include "collectd.h" @@ -59,37 +61,50 @@ static int value_list_to_string (char *buffer, int buffer_len, for (i = 0; i < ds->ds_num; i++) { if ((ds->ds[i].type != DS_TYPE_COUNTER) - && (ds->ds[i].type != DS_TYPE_GAUGE)) + && (ds->ds[i].type != DS_TYPE_GAUGE) + && (ds->ds[i].type != DS_TYPE_DERIVE) + && (ds->ds[i].type != DS_TYPE_ABSOLUTE)) return (-1); - if (ds->ds[i].type == DS_TYPE_COUNTER) + if (ds->ds[i].type == DS_TYPE_GAUGE) { - if (store_rates == 0) - { - status = ssnprintf (buffer + offset, - buffer_len - offset, - ",%llu", - vl->values[i].counter); - } - else /* if (store_rates == 1) */ + status = ssnprintf (buffer + offset, buffer_len - offset, + ",%lf", vl->values[i].gauge); + } + else if (store_rates != 0) + { + if (rates == NULL) + rates = uc_get_rate (ds, vl); + if (rates == NULL) { - if (rates == NULL) - rates = uc_get_rate (ds, vl); - if (rates == NULL) - { - WARNING ("csv plugin: " - "uc_get_rate failed."); - return (-1); - } - status = ssnprintf (buffer + offset, - buffer_len - offset, - ",%lf", rates[i]); + WARNING ("csv plugin: " + "uc_get_rate failed."); + return (-1); } + status = ssnprintf (buffer + offset, + buffer_len - offset, + ",%lf", rates[i]); } - else /* if (ds->ds[i].type == DS_TYPE_GAUGE) */ + else if (ds->ds[i].type == DS_TYPE_COUNTER) { - status = ssnprintf (buffer + offset, buffer_len - offset, - ",%lf", vl->values[i].gauge); + status = ssnprintf (buffer + offset, + buffer_len - offset, + ",%llu", + vl->values[i].counter); + } + else if (ds->ds[i].type == DS_TYPE_DERIVE) + { + status = ssnprintf (buffer + offset, + buffer_len - offset, + ",%"PRIi64, + vl->values[i].derive); + } + else if (ds->ds[i].type == DS_TYPE_ABSOLUTE) + { + status = ssnprintf (buffer + offset, + buffer_len - offset, + ",%"PRIu64, + vl->values[i].absolute); } if ((status < 1) || (status >= (buffer_len - offset))) @@ -231,16 +246,10 @@ static int csv_config (const char *key, const char *value) } else if (strcasecmp ("StoreRates", key) == 0) { - if ((strcasecmp ("True", value) == 0) - || (strcasecmp ("Yes", value) == 0) - || (strcasecmp ("On", value) == 0)) - { + if (IS_TRUE (value)) store_rates = 1; - } else - { store_rates = 0; - } } else { @@ -249,7 +258,8 @@ static int csv_config (const char *key, const char *value) return (0); } /* int csv_config */ -static int csv_write (const data_set_t *ds, const value_list_t *vl) +static int csv_write (const data_set_t *ds, const value_list_t *vl, + user_data_t __attribute__((unused)) *user_data) { struct stat statbuf; char filename[512]; @@ -356,5 +366,5 @@ void module_register (void) { plugin_register_config ("csv", csv_config, config_keys, config_keys_num); - plugin_register_write ("csv", csv_write); + plugin_register_write ("csv", csv_write, /* user_data = */ NULL); } /* void module_register */