X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fcsv.c;h=15494f450dd60a852be2b948c8356c781194c2e1;hb=20d15cfd26b23508242abcead906207bf26175d0;hp=afb4f8338c5d7e2611e489338eda5a642f3c56b8;hpb=bc389fa32a48a64306f7ec008f4548f05fdb7c80;p=collectd.git diff --git a/src/csv.c b/src/csv.c index afb4f833..15494f45 100644 --- a/src/csv.c +++ b/src/csv.c @@ -17,7 +17,7 @@ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * Authors: - * Florian octo Forster + * Florian octo Forster * Doug MacEachern **/ @@ -25,7 +25,6 @@ #include "plugin.h" #include "common.h" #include "utils_cache.h" -#include "utils_parse_option.h" /* * Private variables @@ -46,7 +45,7 @@ static int value_list_to_string (char *buffer, int buffer_len, { int offset; int status; - int i; + size_t i; gauge_t *rates = NULL; assert (0 == strcmp (ds->type, vl->type)); @@ -126,12 +125,25 @@ static int value_list_to_filename (char *buffer, size_t buffer_size, { int status; - char *ptr; - size_t ptr_size; + char *ptr = buffer; + size_t ptr_size = buffer_size; time_t now; struct tm struct_tm; - status = FORMAT_VL (buffer, buffer_size, vl); + if (datadir != NULL) + { + size_t len = strlen (datadir) + 1; + + if (len >= ptr_size) + return (ENOBUFS); + + memcpy (ptr, datadir, len); + ptr[len-1] = '/'; + ptr_size -= len; + ptr += len; + } + + status = FORMAT_VL (ptr, ptr_size, vl); if (status != 0) return (status); @@ -140,8 +152,8 @@ static int value_list_to_filename (char *buffer, size_t buffer_size, if (use_stdio) return (0); - ptr_size = buffer_size - strlen (buffer); - ptr = buffer + strlen (buffer); + ptr_size -= strlen (ptr); + ptr += strlen (ptr); /* "-2013-07-12" => 11 bytes */ if (ptr_size < 12) @@ -172,7 +184,7 @@ static int value_list_to_filename (char *buffer, size_t buffer_size, static int csv_create_file (const char *filename, const data_set_t *ds) { FILE *csv; - int i; + size_t i; if (check_create_dir (filename)) return (-1); @@ -202,7 +214,10 @@ static int csv_config (const char *key, const char *value) if (strcasecmp ("DataDir", key) == 0) { if (datadir != NULL) + { free (datadir); + datadir = NULL; + } if (strcasecmp ("stdout", value) == 0) { use_stdio = 1;