X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_search.c;h=aa157e6df6307d925bd8a173535de22cec9f67dc;hb=49e41ab84a7719050ada26760b0184180f085b55;hp=ba5927be18e4dee45b4654898e75691f2350393e;hpb=693d0fc42b7f32eddc61c266dc4fb2dc716c8ea6;p=collection4.git diff --git a/src/utils_search.c b/src/utils_search.c index ba5927b..aa157e6 100644 --- a/src/utils_search.c +++ b/src/utils_search.c @@ -234,8 +234,56 @@ void search_destroy (search_info_t *si) /* {{{ */ array_destroy (si->terms); } /* }}} void search_destroy */ +_Bool search_has_selector (search_info_t *si) /* {{{ */ +{ + if (si == NULL) + return (0); + + if ((si->host != NULL) + || (si->plugin != NULL) || (si->plugin_instance != NULL) + || (si->type != NULL) || (si->type_instance != NULL)) + return (1); + + return (0); +} /* }}} _Bool search_has_selector */ + +graph_ident_t *search_to_ident (search_info_t *si) /* {{{ */ +{ + if (si == NULL) + return (NULL); + + return (ident_create ((si->host == NULL) ? ANY_TOKEN : si->host, + (si->plugin == NULL) ? ANY_TOKEN : si->plugin, + (si->plugin_instance == NULL) ? ANY_TOKEN : si->plugin_instance, + (si->type == NULL) ? ANY_TOKEN : si->type, + (si->type_instance == NULL) ? ANY_TOKEN : si->type_instance)); +} /* }}} graph_ident_t *search_to_ident */ + +_Bool search_graph_title_matches (search_info_t *si, /* {{{ */ + const char *title) +{ + char **argv; + int argc; + int i; + + if ((si == NULL) || (title == NULL)) + return (0); + + if (si->terms == NULL) + return (1); + + argc = array_argc (si->terms); + argv = array_argv (si->terms); + for (i = 0; i < argc; i++) + if (strstr (title, argv[i]) == NULL) + return (0); + + return (1); +} /* }}} _Bool search_graph_title_matches */ + _Bool search_graph_inst_matches (search_info_t *si, /* {{{ */ - graph_config_t *cfg, graph_instance_t *inst) + graph_config_t *cfg, graph_instance_t *inst, + const char *title) { char **argv; int argc; @@ -266,8 +314,15 @@ _Bool search_graph_inst_matches (search_info_t *si, /* {{{ */ argc = array_argc (si->terms); argv = array_argv (si->terms); for (i = 0; i < argc; i++) - if (!inst_matches_string (cfg, inst, argv[i])) - return (0); + { + if (inst_matches_string (cfg, inst, argv[i])) + continue; + + if ((title != NULL) && (strstr (title, argv[i]) != NULL)) + continue; + + return (0); + } return (1); } /* }}} _Bool search_graph_inst_matches */