summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: ea651b1)
raw | patch | inline | side by side (parent: ea651b1)
author | Sebastian Harl <sh@tokkee.org> | |
Mon, 16 May 2011 13:07:18 +0000 (15:07 +0200) | ||
committer | Sebastian Harl <sh@tokkee.org> | |
Mon, 16 May 2011 13:07:18 +0000 (15:07 +0200) |
This function may be used to sort an array of lcc_identifier_t objects.
src/libcollectdclient/client.c | patch | blob | history | |
src/libcollectdclient/client.h | patch | blob | history |
index 3eb0d05536721a7d5b154ddf505c123321ea9fcf..d13decdbade29a13a25af36c79148187990fcef6 100644 (file)
}
} /* }}} 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;
return (0);
} /* }}} int lcc_string_to_identifier */
+int lcc_sort_identifiers (lcc_connection_t *c, /* {{{ */
+ lcc_identifier_t *idents, size_t idents_num)
+{
+ if (idents == NULL)
+ {
+ lcc_set_errno (c, EINVAL);
+ return (-1);
+ }
+
+ qsort (idents, idents_num, sizeof (*idents), lcc_identifier_cmp);
+ return (0);
+} /* }}} int lcc_sort_identifiers */
+
/* vim: set sw=2 sts=2 et fdm=marker : */
index 990035381c75d4198cf8fd6e1c202cb9891bf9ea..36b1d4d28a3debe925c8074d06bf1285c2c7c9ea 100644 (file)
int lcc_string_to_identifier (lcc_connection_t *c,
lcc_identifier_t *ident, const char *string);
+int lcc_sort_identifiers (lcc_connection_t *c,
+ lcc_identifier_t *idents, size_t idents_num);
+
LCC_END_DECLS
/* vim: set sw=2 sts=2 et : */