csv plugin: Make it possible to write values to STDOUT.
[collectd.git] / src / csv.c
index a94b700..b5333b4 100644 (file)
--- a/src/csv.c
+++ b/src/csv.c
@@ -36,6 +36,7 @@ static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
 
 static char *datadir   = NULL;
 static int store_rates = 0;
+static int use_stdio   = 0;
 
 static int value_list_to_string (char *buffer, int buffer_len,
                const data_set_t *ds, const value_list_t *vl)
@@ -146,6 +147,7 @@ static int value_list_to_filename (char *buffer, int buffer_len,
                return (-1);
        offset += status;
 
+       if (!use_stdio)
        {
                time_t now;
                struct tm stm;
@@ -200,6 +202,16 @@ static int csv_config (const char *key, const char *value)
        {
                if (datadir != NULL)
                        free (datadir);
+               if (strcasecmp ("stdout", value) == 0)
+               {
+                       use_stdio = 1;
+                       return (0);
+               }
+               else if (strcasecmp ("stderr", value) == 0)
+               {
+                       use_stdio = 2;
+                       return (0);
+               }
                datadir = strdup (value);
                if (datadir != NULL)
                {
@@ -259,6 +271,13 @@ static int csv_write (const data_set_t *ds, const value_list_t *vl)
        if (value_list_to_string (values, sizeof (values), ds, vl) != 0)
                return (-1);
 
+       if (use_stdio)
+       {
+               fprintf (use_stdio == 1 ? stdout : stderr,
+                        "%s=%s\n", filename, values);
+               return (0);
+       }
+
        if (stat (filename, &statbuf) == -1)
        {
                if (errno == ENOENT)