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

Eduardo Minguez eduardo.minguez at degesys.com
Wed May 21 16:59:13 CEST 2008


Sebastian Harl escribió:
> 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;
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> collectd mailing list
> collectd at verplant.org
> http://mailman.verplant.org/listinfo/collectd
>   
Works fine, thanks! :)



More information about the collectd mailing list