static _Bool part_matches (const char *selector, /* {{{ */
const char *part)
{
+#if C4_DEBUG
if ((selector == NULL) && (part == NULL))
return (1);
+#endif
if (selector == NULL) /* && (part != NULL) */
return (0);
_Bool ident_matches (const graph_ident_t *selector, /* {{{ */
const graph_ident_t *ident)
{
+#if C4_DEBUG
if ((selector == NULL) || (ident == NULL))
return (0);
+#endif
if (!part_matches (selector->host, ident->host))
return (0);
return (1);
} /* }}} _Bool ident_matches */
+_Bool ident_intersect (const graph_ident_t *s0, /* {{{ */
+ const graph_ident_t *s1)
+{
+#define INTERSECT_PART(p) do { \
+ if (!IS_ANY (s0->p) && !IS_ALL (s0->p) \
+ && !IS_ANY (s1->p) && !IS_ALL (s1->p) \
+ && (strcmp (s0->p, s1->p) != 0)) \
+ return (0); \
+} while (0)
+
+ INTERSECT_PART (host);
+ INTERSECT_PART (plugin);
+ INTERSECT_PART (plugin_instance);
+ INTERSECT_PART (type);
+ INTERSECT_PART (type_instance);
+
+#undef INTERSECT_PART
+
+ return (1);
+} /* }}} _Bool ident_intersect */
+
char *ident_to_string (const graph_ident_t *ident) /* {{{ */
{
char buffer[PATH_MAX];