X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fgraph.c;h=01f0791dfa8ac7ea7fd761ced83c3070216fde45;hb=95cad1f9e58e9f1a5480e62fc2cdd2c3de33a863;hp=fc6a636e4660dd32985b03127a3e9d469bfac832;hpb=aaf63df27b244028582cfd078e82189110501043;p=collection4.git diff --git a/src/graph.c b/src/graph.c index fc6a636..01f0791 100644 --- a/src/graph.c +++ b/src/graph.c @@ -8,8 +8,9 @@ #include #include "graph.h" -#include "graph_list.h" #include "graph_ident.h" +#include "graph_instance.h" +#include "graph_list.h" #include "graph_def.h" #include "graph_config.h" #include "common.h" @@ -216,7 +217,7 @@ int graph_get_params (graph_config_t *cfg, /* {{{ */ #define COPY_FIELD(field) do { \ const char *str = ident_get_##field (cfg->select); \ char uri_str[1024]; \ - uri_escape (uri_str, str, sizeof (uri_str)); \ + uri_escape_copy (uri_str, str, sizeof (uri_str)); \ strlcat (buffer, #field, buffer_size); \ strlcat (buffer, "=", buffer_size); \ strlcat (buffer, uri_str, buffer_size); \ @@ -335,12 +336,36 @@ graph_instance_t *graph_inst_find_matching (graph_config_t *cfg, /* {{{ */ return (NULL); for (i = 0; i < cfg->instances_num; i++) - if (inst_matches_ident (cfg->instances[i], ident)) + if (inst_ident_matches (cfg->instances[i], ident)) return (cfg->instances[i]); return (NULL); } /* }}} graph_instance_t *graph_inst_find_matching */ +int graph_inst_find_all_matching (graph_config_t *cfg, /* {{{ */ + const graph_ident_t *ident, + graph_inst_callback_t callback, void *user_data) +{ + size_t i; + + if ((cfg == NULL) || (ident == NULL) || (callback == NULL)) + return (EINVAL); + + for (i = 0; i < cfg->instances_num; i++) + { + int status; + + if (!inst_matches_ident (cfg->instances[i], ident)) + continue; + + status = (*callback) (cfg, cfg->instances[i], user_data); + if (status != 0) + return (status); + } + + return (0); +} /* }}} int graph_inst_find_all_matching */ + int graph_inst_search (graph_config_t *cfg, const char *term, /* {{{ */ graph_inst_callback_t cb, void *user_data)