Code

rrdcached, rrdtool plugins: Honor the "DataDir" setting.
authorFlorian Forster <octo@collectd.org>
Wed, 24 Jul 2013 12:12:53 +0000 (14:12 +0200)
committerFlorian Forster <octo@collectd.org>
Wed, 24 Jul 2013 12:41:30 +0000 (14:41 +0200)
This fixes a regression introduced in:
bfd3f06ef4996707036756371c5724ebf2748821

Github: #380

src/rrdcached.c
src/rrdtool.c

index cf23803138dec2bb8ee59cc8a6819785a72c5fb8..a8305e6345ef9979aeb5cde9b95566d4fa545659 100644 (file)
@@ -119,6 +119,18 @@ static int value_list_to_filename (char *buffer, size_t buffer_size,
   int status;
   size_t len;
 
+  if (datadir != NULL)
+  {
+    size_t datadir_len = strlen (datadir);
+
+    if (datadir_len >= buffer_size)
+      return (ENOMEM);
+
+    sstrncpy (buffer, datadir, buffer_size);
+    buffer += datadir_len;
+    buffer_size -= datadir_len;
+  }
+
   status = FORMAT_VL (buffer, buffer_size, vl);
   if (status != 0)
     return (status);
index 916ce01d65f03585341eab2fd0ab3cae70669dd4..a468867455fc0b011409d4cdcbc921f12116e040 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * collectd - src/rrdtool.c
- * Copyright (C) 2006-2008  Florian octo Forster
+ * Copyright (C) 2006-2013  Florian octo Forster
  * Copyright (C) 2008-2008  Sebastian Harl
  * Copyright (C) 2009       Mariusz Gronczewski
  *
@@ -18,7 +18,7 @@
  * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  *
  * Authors:
- *   Florian octo Forster <octo at verplant.org>
+ *   Florian octo Forster <octo at collectd.org>
  *   Sebastian Harl <sh at tokkee.org>
  *   Mariusz Gronczewski <xani666 at gmail.com>
  **/
@@ -247,6 +247,18 @@ static int value_list_to_filename (char *buffer, size_t buffer_size,
        int status;
        size_t len;
 
+       if (datadir != NULL)
+       {
+               size_t datadir_len = strlen (datadir);
+
+               if (datadir_len >= buffer_size)
+                       return (ENOMEM);
+
+               sstrncpy (buffer, datadir, buffer_size);
+               buffer += datadir_len;
+               buffer_size -= datadir_len;
+       }
+
        status = FORMAT_VL (buffer, buffer_size, vl);
        if (status != 0)
                return (status);