X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fgraph.c;h=d4b1a328db2e6c5124e50e5fdcf82a0d3c8dba5e;hb=cb25cf1021c8ee253c0dc7fab98ee5ce0915d00e;hp=4ed2d155c7988e9c24bcfe14dba09d90c0b920d5;hpb=36e3c3e323c8ae1609bb5140b2cf549daa6fe322;p=collection4.git diff --git a/src/graph.c b/src/graph.c index 4ed2d15..d4b1a32 100644 --- a/src/graph.c +++ b/src/graph.c @@ -256,6 +256,8 @@ graph_def_t *graph_get_defs (graph_config_t *cfg) /* {{{ */ int graph_add_def (graph_config_t *cfg, graph_def_t *def) /* {{{ */ { + graph_def_t *tmp; + if ((cfg == NULL) || (def == NULL)) return (EINVAL); @@ -265,7 +267,11 @@ int graph_add_def (graph_config_t *cfg, graph_def_t *def) /* {{{ */ return (0); } - return (def_append (cfg->defs, def)); + /* Insert in reverse order. This makes the order in the config file and the + * order of the DEFs in the graph more natural. Really. */ + tmp = cfg->defs; + cfg->defs = def; + return (def_append (cfg->defs, tmp)); } /* }}} int graph_add_def */ _Bool graph_matches_ident (graph_config_t *cfg, const graph_ident_t *ident) /* {{{ */ @@ -336,12 +342,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) @@ -446,27 +476,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);