[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