[collectd] [PATCH] collectd-nagios: Updated to the new "unixsock" protocol.

Sebastian Harl sh at tokkee.org
Wed May 21 16:50:07 CEST 2008


When disambiguating the protocol used by the unixsock plugin in commit
90287c6d240a168fca8d01f8330e2e2263e1f0a4 ("Disambiguated the protocol used
by the unixsock (and other) plugins.") the formatting of the return values
of the "GETVAL" command has been modified. This patch updates
collectd-nagios to handle the new format correctly.

Signed-off-by: Sebastian Harl <sh at tokkee.org>
---
 src/collectd-nagios.c |   58 +++++++++++++++++++++++++++----------------------
 1 files changed, 32 insertions(+), 26 deletions(-)

diff --git a/src/collectd-nagios.c b/src/collectd-nagios.c
index f4dff5b..1bf5b3f 100644
--- a/src/collectd-nagios.c
+++ b/src/collectd-nagios.c
@@ -201,12 +201,17 @@ static int get_values (int *ret_values_num, double **ret_values,
 		fclose (fh_out);
 		return (-1);
 	}
-	fclose (fh_in); fh_in = NULL; fd = -1;
-	fclose (fh_out); fh_out = NULL;
 
-	values_num = atoi (buffer);
-	if (values_num < 1)
-		return (-1);
+	{
+		char *ptr = strchr (buffer, ' ');
+
+		if (ptr != NULL)
+			*ptr = '\0';
+
+		values_num = atoi (buffer);
+		if (values_num < 1)
+			return (-1);
+	}
 
 	values = (double *) malloc (values_num * sizeof (double));
 	if (values == NULL)
@@ -225,32 +230,33 @@ static int get_values (int *ret_values_num, double **ret_values,
 		return (-1);
 	}
 
+	i = 0;
+	while (fgets (buffer, sizeof (buffer), fh_in) != NULL)
 	{
-		char *ptr = strchr (buffer, ' ') + 1;
 		char *key;
 		char *value;
 
-		i = 0;
-		while ((key = strtok (ptr, " \t")) != NULL)
-		{
-			ptr = NULL;
-			value = strchr (key, '=');
-			if (value == NULL)
-				continue;
-			*value = '\0'; value++;
+		key = buffer;
 
-			if (ignore_ds (key) != 0)
-				continue;
+		value = strchr (key, '=');
+		if (value == NULL)
+			continue;
+		*value = '\0'; value++;
 
-			values_names[i] = strdup (key);
-			values[i] = atof (value);
+		if (ignore_ds (key) != 0)
+			continue;
 
-			i++;
-			if (i >= values_num)
-				break;
-		}
-		values_num = i;
+		values_names[i] = strdup (key);
+		values[i] = atof (value);
+
+		i++;
+		if (i >= values_num)
+			break;
 	}
+	values_num = i;
+
+	fclose (fh_in); fh_in = NULL; fd = -1;
+	fclose (fh_out); fh_out = NULL;
 
 	*ret_values_num = values_num;
 	*ret_values = values;
-- 
1.5.5.1.316.g377d9

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://mailman.verplant.org/pipermail/collectd/attachments/20080521/0ae9b941/attachment.pgp 


More information about the collectd mailing list