X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fgraph.c;h=8d12a25a1606d397d4ac20e66cb91fe9b45af9ee;hb=8a3753760230b270c8f4615891cba2586a661d21;hp=fc6a636e4660dd32985b03127a3e9d469bfac832;hpb=aaf63df27b244028582cfd078e82189110501043;p=collection4.git diff --git a/src/graph.c b/src/graph.c index fc6a636..8d12a25 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) @@ -445,27 +470,27 @@ int graph_clear_instances (graph_config_t *cfg) /* {{{ */ } /* }}} int graph_clear_instances */ int graph_get_rrdargs (graph_config_t *cfg, graph_instance_t *inst, /* {{{ */ - str_array_t *args) + rrd_args_t *args) { if ((cfg == NULL) || (inst == NULL) || (args == NULL)) return (EINVAL); if (cfg->title != NULL) { - array_append (args, "-t"); - array_append (args, cfg->title); + array_append (args->options, "-t"); + array_append (args->options, cfg->title); } if (cfg->vertical_label != NULL) { - array_append (args, "-v"); - array_append (args, cfg->vertical_label); + array_append (args->options, "-v"); + array_append (args->options, cfg->vertical_label); } if (cfg->show_zero) { - array_append (args, "-l"); - array_append (args, "0"); + array_append (args->options, "-l"); + array_append (args->options, "0"); } return (0);