X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Flibcollectdclient%2Fclient.c;fp=src%2Flibcollectdclient%2Fclient.c;h=39875903256f686aefbb953b11a9e7e3ab72eebe;hp=2adf6d48821d49590bde1186dd8c047c78eaa17a;hb=3faf514fd9b869cadda0f895e14e5036313c7781;hpb=28460d4f235bb0272c98c830d14b9d7a73f812b7 diff --git a/src/libcollectdclient/client.c b/src/libcollectdclient/client.c index 2adf6d48..39875903 100644 --- a/src/libcollectdclient/client.c +++ b/src/libcollectdclient/client.c @@ -27,7 +27,7 @@ # define __attribute__(x) /**/ #endif -#include "lcc_features.h" +#include "collectd/lcc_features.h" #include #include @@ -41,7 +41,7 @@ #include #include -#include "client.h" +#include "collectd/client.h" /* NI_MAXHOST has been obsoleted by RFC 3493 which is a reason for SunOS 5.11 * to no longer define it. We'll use the old, RFC 2553 value here. */ @@ -228,53 +228,6 @@ static void lcc_chomp (char *str) /* {{{ */ } } /* }}} void lcc_chomp */ -static int lcc_identifier_cmp (const void *a, const void *b) -{ - const lcc_identifier_t *ident_a, *ident_b; - - int status; - - ident_a = a; - ident_b = b; - - status = strcasecmp (ident_a->host, ident_b->host); - if (status != 0) - return (status); - - status = strcmp (ident_a->plugin, ident_b->plugin); - if (status != 0) - return (status); - - if ((*ident_a->plugin_instance != '\0') || (*ident_b->plugin_instance != '\0')) - { - if (*ident_a->plugin_instance == '\0') - return (-1); - else if (*ident_b->plugin_instance == '\0') - return (1); - - status = strcmp (ident_a->plugin_instance, ident_b->plugin_instance); - if (status != 0) - return (status); - } - - status = strcmp (ident_a->type, ident_b->type); - if (status != 0) - return (status); - - if ((*ident_a->type_instance != '\0') || (*ident_b->type_instance != '\0')) - { - if (*ident_a->type_instance == '\0') - return (-1); - else if (*ident_b->type_instance == '\0') - return (1); - - status = strcmp (ident_a->type_instance, ident_b->type_instance); - if (status != 0) - return (status); - } - return (0); -} /* }}} int lcc_identifier_cmp */ - static void lcc_response_free (lcc_response_t *res) /* {{{ */ { size_t i; @@ -1105,6 +1058,35 @@ int lcc_string_to_identifier (lcc_connection_t *c, /* {{{ */ return (0); } /* }}} int lcc_string_to_identifier */ +int lcc_identifier_compare (const lcc_identifier_t *i0, /* {{{ */ + const lcc_identifier_t *i1) +{ + int status; + + if ((i0 == NULL) && (i1 == NULL)) + return (0); + else if (i0 == NULL) + return (-1); + else if (i1 == NULL) + return (1); + +#define CMP_FIELD(f) do { \ + status = strcmp (i0->f, i1->f); \ + if (status != 0) \ + return (status); \ +} while (0); + + CMP_FIELD (host); + CMP_FIELD (plugin); + CMP_FIELD (plugin_instance); + CMP_FIELD (type); + CMP_FIELD (type_instance); + +#undef CMP_FIELD + + return (0); +} /* }}} int lcc_identifier_compare */ + int lcc_sort_identifiers (lcc_connection_t *c, /* {{{ */ lcc_identifier_t *idents, size_t idents_num) { @@ -1114,7 +1096,8 @@ int lcc_sort_identifiers (lcc_connection_t *c, /* {{{ */ return (-1); } - qsort (idents, idents_num, sizeof (*idents), lcc_identifier_cmp); + qsort (idents, idents_num, sizeof (*idents), + (void *) lcc_identifier_compare); return (0); } /* }}} int lcc_sort_identifiers */