+search_info_t *search_from_ident (const graph_ident_t *ident) /* {{{ */
+{
+ search_info_t *si;
+
+ if (ident == NULL)
+ return (NULL);
+
+ si = malloc (sizeof (*si));
+ if (si == NULL)
+ return (NULL);
+ memset (si, 0, sizeof (*si));
+ si->terms = NULL;
+
+#define COPY_FIELD(f) do { \
+ const char *tmp = ident_get_##f (ident); \
+ if (tmp == NULL) \
+ si->f = NULL; \
+ else \
+ si->f = strdup (tmp); \
+} while (0)
+
+ COPY_FIELD(host);
+ COPY_FIELD(plugin);
+ COPY_FIELD(plugin_instance);
+ COPY_FIELD(type);
+ COPY_FIELD(type_instance);
+
+#undef COPY_FIELD
+
+ return (si);
+} /* }}} search_info_t *search_from_ident */
+