X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=graph_ident.c;h=fb6e206f46c01eb8856cfad5c9fbba76ce634064;hb=beb1cb55ddc89ad2e8bfd31ecf1e5cf39e73204a;hp=9252ebeae0e75a8e168a32c5df0bde96db840fcd;hpb=379b04abccb88f539f4532c825537831cc6660dc;p=collection4.git diff --git a/graph_ident.c b/graph_ident.c index 9252ebe..fb6e206 100644 --- a/graph_ident.c +++ b/graph_ident.c @@ -1,14 +1,12 @@ #include #include #include +#include #include /* PATH_MAX */ #include "graph_ident.h" #include "common.h" -#define ANY_TOKEN "/any/" -#define ALL_TOKEN "/all/" - #define IS_ANY(str) (((str) != NULL) && (strcasecmp (ANY_TOKEN, (str)) == 0)) #define IS_ALL(str) (((str) != NULL) && (strcasecmp (ALL_TOKEN, (str)) == 0)) @@ -41,11 +39,21 @@ static char *part_copy_with_selector (const char *selector, /* {{{ */ /* Replace the ANY and ALL flags if requested and if the selecter actually * *is* that flag. */ - if ((flags & IDENT_FLAG_REPLACE_ANY) && IS_ANY (selector)) - return (strdup (part)); + if (IS_ANY (selector)) + { + if (flags & IDENT_FLAG_REPLACE_ANY) + return (strdup (part)); + else + return (strdup (selector)); + } - if ((flags & IDENT_FLAG_REPLACE_ALL) && IS_ALL (selector)) - return (strdup (part)); + if (IS_ALL (selector)) + { + if (flags & IDENT_FLAG_REPLACE_ALL) + return (strdup (part)); + else + return (strdup (selector)); + } if (strcmp (selector, part) != 0) return (NULL); @@ -189,6 +197,7 @@ void ident_destroy (graph_ident_t *ident) /* {{{ */ free (ident); } /* }}} void ident_destroy */ +/* ident_get_* methods {{{ */ const char *ident_get_host (graph_ident_t *ident) /* {{{ */ { if (ident == NULL) @@ -228,6 +237,95 @@ const char *ident_get_type_instance (graph_ident_t *ident) /* {{{ */ return (ident->type_instance); } /* }}} char *ident_get_type_instance */ +/* }}} ident_get_* methods */ + +/* ident_set_* methods {{{ */ +int ident_set_host (graph_ident_t *ident, const char *host) /* {{{ */ +{ + char *tmp; + + if ((ident == NULL) || (host == NULL)) + return (EINVAL); + + tmp = strdup (host); + if (tmp == NULL) + return (ENOMEM); + + free (ident->host); + ident->host = tmp; + + return (0); +} /* }}} int ident_set_host */ + +int ident_set_plugin (graph_ident_t *ident, const char *plugin) /* {{{ */ +{ + char *tmp; + + if ((ident == NULL) || (plugin == NULL)) + return (EINVAL); + + tmp = strdup (plugin); + if (tmp == NULL) + return (ENOMEM); + + free (ident->plugin); + ident->plugin = tmp; + + return (0); +} /* }}} int ident_set_plugin */ + +int ident_set_plugin_instance (graph_ident_t *ident, const char *plugin_instance) /* {{{ */ +{ + char *tmp; + + if ((ident == NULL) || (plugin_instance == NULL)) + return (EINVAL); + + tmp = strdup (plugin_instance); + if (tmp == NULL) + return (ENOMEM); + + free (ident->plugin_instance); + ident->plugin_instance = tmp; + + return (0); +} /* }}} int ident_set_plugin_instance */ + +int ident_set_type (graph_ident_t *ident, const char *type) /* {{{ */ +{ + char *tmp; + + if ((ident == NULL) || (type == NULL)) + return (EINVAL); + + tmp = strdup (type); + if (tmp == NULL) + return (ENOMEM); + + free (ident->type); + ident->type = tmp; + + return (0); +} /* }}} int ident_set_type */ + +int ident_set_type_instance (graph_ident_t *ident, const char *type_instance) /* {{{ */ +{ + char *tmp; + + if ((ident == NULL) || (type_instance == NULL)) + return (EINVAL); + + tmp = strdup (type_instance); + if (tmp == NULL) + return (ENOMEM); + + free (ident->type_instance); + ident->type_instance = tmp; + + return (0); +} /* }}} int ident_set_type_instance */ + +/* }}} ident_set_* methods */ int ident_compare (const graph_ident_t *i0, /* {{{ */ const graph_ident_t *i1)