summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a27a222)
raw | patch | inline | side by side (parent: a27a222)
author | Florian Forster <ff@octo.it> | |
Tue, 15 Jun 2010 09:27:35 +0000 (11:27 +0200) | ||
committer | Florian Forster <octo@leeloo.lan.home.verplant.org> | |
Tue, 15 Jun 2010 09:27:35 +0000 (11:27 +0200) |
Makefile | patch | blob | history | |
graph.c | [new file with mode: 0644] | patch | blob |
graph.h | [new file with mode: 0644] | patch | blob |
graph_def.c | patch | blob | history | |
graph_def.h | patch | blob | history | |
graph_instance.c | patch | blob | history | |
graph_instance.h | patch | blob | history | |
graph_list.c | patch | blob | history | |
graph_list.h | patch | blob | history |
diff --git a/Makefile b/Makefile
index 0b22fd7416204bca1fe305513b865cb4a25b54d2..356ae5761d9d0b15ca9a885c15cf9ef0cf223de6 100644 (file)
--- a/Makefile
+++ b/Makefile
filesystem.o: filesystem.c filesystem.h
+graph.o: graph.c graph.h
+
graph_config.o: graph_config.c graph_config.h
graph_def.o: graph_def.c graph_def.h
test: test.c utils_params.o
test.fcgi: LDLIBS = -lfcgi -lrrd
-test.fcgi: test.fcgi.c common.o filesystem.o graph_config.o graph_def.o graph_ident.o graph_instance.o graph_list.o utils_array.o utils_params.o action_graph.o action_list_graphs.o scanner.o parser.o oconfig.o
+test.fcgi: test.fcgi.c common.o filesystem.o graph.o graph_config.o graph_def.o graph_ident.o graph_instance.o graph_list.o utils_array.o utils_params.o action_graph.o action_list_graphs.o scanner.o parser.o oconfig.o
.PHONY: clean
diff --git a/graph.c b/graph.c
--- /dev/null
+++ b/graph.c
@@ -0,0 +1,269 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <inttypes.h>
+#include <string.h>
+#include <time.h>
+#include <errno.h>
+#include <assert.h>
+
+#include "graph.h"
+#include "graph_list.h"
+#include "graph_ident.h"
+#include "graph_def.h"
+#include "graph_config.h"
+#include "common.h"
+#include "filesystem.h"
+#include "utils_params.h"
+
+#include <fcgiapp.h>
+#include <fcgi_stdio.h>
+
+/*
+ * Data types
+ */
+struct graph_config_s /* {{{ */
+{
+ graph_ident_t *select;
+
+ char *title;
+ char *vertical_label;
+
+ graph_def_t *defs;
+
+ graph_instance_t *instances;
+}; /* }}} struct graph_config_s */
+
+/*
+ * Private functions
+ */
+static graph_instance_t *graph_find_instance (graph_config_t *cfg, /* {{{ */
+ const graph_ident_t *ident)
+{
+ if ((cfg == NULL) || (ident == NULL))
+ return (NULL);
+
+ return (inst_find_matching (cfg->instances, ident));
+} /* }}} graph_instance_t *graph_find_instance */
+
+/*
+ * Config functions
+ */
+static graph_ident_t *graph_config_get_selector (const oconfig_item_t *ci) /* {{{ */
+{
+ char *host = NULL;
+ char *plugin = NULL;
+ char *plugin_instance = NULL;
+ char *type = NULL;
+ char *type_instance = NULL;
+ graph_ident_t *ret;
+ int i;
+
+ for (i = 0; i < ci->children_num; i++)
+ {
+ oconfig_item_t *child;
+
+ child = ci->children + i;
+
+ if (strcasecmp ("Host", child->key) == 0)
+ graph_config_get_string (child, &host);
+ else if (strcasecmp ("Plugin", child->key) == 0)
+ graph_config_get_string (child, &plugin);
+ else if (strcasecmp ("PluginInstance", child->key) == 0)
+ graph_config_get_string (child, &plugin_instance);
+ else if (strcasecmp ("Type", child->key) == 0)
+ graph_config_get_string (child, &type);
+ else if (strcasecmp ("TypeInstance", child->key) == 0)
+ graph_config_get_string (child, &type_instance);
+ /* else: ignore all other directives here. */
+ } /* for */
+
+ ret = ident_create (host, plugin, plugin_instance, type, type_instance);
+
+ free (host);
+ free (plugin);
+ free (plugin_instance);
+ free (type);
+ free (type_instance);
+
+ return (ret);
+} /* }}} int graph_config_get_selector */
+
+/*
+ * Global functions
+ */
+graph_config_t *graph_create (const graph_ident_t *selector) /* {{{ */
+{
+ graph_config_t *cfg;
+
+ cfg = malloc (sizeof (*cfg));
+ if (cfg == NULL)
+ return (NULL);
+ memset (cfg, 0, sizeof (*cfg));
+
+ if (selector != NULL)
+ cfg->select = ident_clone (selector);
+ else
+ cfg->select = NULL;
+
+ cfg->title = NULL;
+ cfg->vertical_label = NULL;
+ cfg->defs = NULL;
+ cfg->instances = NULL;
+
+ return (cfg);
+} /* }}} int graph_create */
+
+void graph_destroy (graph_config_t *cfg) /* {{{ */
+{
+ if (cfg == NULL)
+ return;
+
+ ident_destroy (cfg->select);
+
+ free (cfg->title);
+ free (cfg->vertical_label);
+
+ def_destroy (cfg->defs);
+ inst_destroy (cfg->instances);
+} /* }}} void graph_destroy */
+
+int graph_config_add (const oconfig_item_t *ci) /* {{{ */
+{
+ graph_ident_t *select;
+ graph_config_t *cfg = NULL;
+ int i;
+
+ select = graph_config_get_selector (ci);
+ if (select == NULL)
+ return (EINVAL);
+
+ cfg = graph_create (/* selector = */ NULL);
+ if (cfg == NULL)
+ return (ENOMEM);
+
+ cfg->select = select;
+
+ for (i = 0; i < ci->children_num; i++)
+ {
+ oconfig_item_t *child;
+
+ child = ci->children + i;
+
+ if (strcasecmp ("Title", child->key) == 0)
+ graph_config_get_string (child, &cfg->title);
+ else if (strcasecmp ("VerticalLabel", child->key) == 0)
+ graph_config_get_string (child, &cfg->vertical_label);
+ else if (strcasecmp ("DEF", child->key) == 0)
+ def_config (cfg, child);
+ } /* for */
+
+ gl_add_graph (cfg);
+
+ return (0);
+} /* }}} graph_config_add */
+
+int graph_add_file (graph_config_t *cfg, const graph_ident_t *file) /* {{{ */
+{
+ graph_instance_t *inst;
+
+ inst = graph_find_instance (cfg, file);
+ if (inst == NULL)
+ {
+ inst = inst_create (cfg, file);
+ if (inst == NULL)
+ return (ENOMEM);
+
+ if (cfg->instances == NULL)
+ cfg->instances = inst;
+ else
+ inst_append (cfg->instances, inst);
+ }
+
+ return (inst_add_file (inst, file));
+} /* }}} int graph_add_file */
+
+int gl_graph_get_title (graph_config_t *cfg, /* {{{ */
+ char *buffer, size_t buffer_size)
+{
+ if ((cfg == NULL) || (buffer == NULL) || (buffer_size < 1))
+ return (EINVAL);
+
+ if (cfg->title == NULL)
+ cfg->title = ident_to_string (cfg->select);
+
+ if (cfg->title == NULL)
+ return (ENOMEM);
+
+ strncpy (buffer, cfg->title, buffer_size);
+ buffer[buffer_size - 1] = 0;
+
+ return (0);
+} /* }}} int gl_graph_get_title */
+
+graph_ident_t *gl_graph_get_selector (graph_config_t *cfg) /* {{{ */
+{
+ if (cfg == NULL)
+ return (NULL);
+
+ return (ident_clone (cfg->select));
+} /* }}} graph_ident_t *gl_graph_get_selector */
+
+graph_instance_t *gl_graph_get_instances (graph_config_t *cfg) /* {{{ */
+{
+ if (cfg == NULL)
+ return (NULL);
+
+ return (cfg->instances);
+} /* }}} graph_instance_t *gl_graph_get_instances */
+
+graph_def_t *gl_graph_get_defs (graph_config_t *cfg) /* {{{ */
+{
+ if (cfg == NULL)
+ return (NULL);
+
+ return (cfg->defs);
+} /* }}} graph_def_t *gl_graph_get_defs */
+
+int gl_graph_add_def (graph_config_t *cfg, graph_def_t *def) /* {{{ */
+{
+ if ((cfg == NULL) || (def == NULL))
+ return (EINVAL);
+
+ if (cfg->defs == NULL)
+ {
+ cfg->defs = def;
+ return (0);
+ }
+
+ return (def_append (cfg->defs, def));
+} /* }}} int gl_graph_add_def */
+
+_Bool graph_matches (graph_config_t *cfg, const graph_ident_t *ident) /* {{{ */
+{
+ if ((cfg == NULL) || (ident == NULL))
+ return (0);
+
+ return (ident_matches (cfg->select, ident));
+} /* }}} _Bool graph_matches */
+
+int graph_compare (graph_config_t *cfg, const graph_ident_t *ident) /* {{{ */
+{
+ if ((cfg == NULL) || (ident == NULL))
+ return (0);
+
+ return (ident_compare (cfg->select, ident));
+} /* }}} int graph_compare */
+
+int graph_clear_instances (graph_config_t *cfg) /* {{{ */
+{
+ if (cfg == NULL)
+ return (EINVAL);
+
+ inst_destroy (cfg->instances);
+ cfg->instances = NULL;
+
+ return (0);
+} /* }}} int graph_clear_instances */
+
+/* vim: set sw=2 sts=2 et fdm=marker : */
diff --git a/graph.h b/graph.h
--- /dev/null
+++ b/graph.h
@@ -0,0 +1,44 @@
+#ifndef GRAPH_H
+#define GRAPH_H 1
+
+/*
+ * Data types
+ */
+struct graph_config_s;
+typedef struct graph_config_s graph_config_t;
+
+#include "graph_def.h"
+#include "graph_ident.h"
+#include "graph_instance.h"
+#include "oconfig.h"
+
+/*
+ * Functions
+ */
+graph_config_t *graph_create (const graph_ident_t *selector);
+
+void graph_destroy (graph_config_t *graph);
+
+int graph_config_add (const oconfig_item_t *ci);
+
+int graph_add_file (graph_config_t *cfg, const graph_ident_t *file);
+
+int gl_graph_get_title (graph_config_t *cfg,
+ char *buffer, size_t buffer_size);
+
+graph_ident_t *gl_graph_get_selector (graph_config_t *cfg);
+
+graph_instance_t *gl_graph_get_instances (graph_config_t *cfg);
+
+graph_def_t *gl_graph_get_defs (graph_config_t *cfg);
+
+int gl_graph_add_def (graph_config_t *cfg, graph_def_t *def);
+
+_Bool graph_matches (graph_config_t *cfg, const graph_ident_t *ident);
+
+int graph_compare (graph_config_t *cfg, const graph_ident_t *ident);
+
+int graph_clear_instances (graph_config_t *cfg);
+
+#endif /* GRAPH_H */
+/* vim: set sw=2 sts=2 et fdm=marker : */
diff --git a/graph_def.c b/graph_def.c
index 71ba1bdfe84c2ef3fd352f3132a8731a892ec423..4f918206c713023253f3676a01ded39cb2c620b7 100644 (file)
--- a/graph_def.c
+++ b/graph_def.c
#include <errno.h>
#include "graph_def.h"
+#include "graph.h"
#include "graph_config.h"
#include "common.h"
#include "oconfig.h"
diff --git a/graph_def.h b/graph_def.h
index 3d852c082c71752f0f809da6681fcaa1d526f6ed..b2cd2282c50a909d44aec56bb06cf9cf9fa2c8d3 100644 (file)
--- a/graph_def.h
+++ b/graph_def.h
typedef int (*def_callback_t) (graph_def_t *def,
void *user_data);
+#include "graph.h"
#include "graph_ident.h"
-#include "graph_list.h"
#include "utils_array.h"
#include "oconfig.h"
diff --git a/graph_instance.c b/graph_instance.c
index fa4716d373d526782e91c04bbd7c93621d738116..5273ef308c0c18b39ef724230ae9bbe923c868c0 100644 (file)
--- a/graph_instance.c
+++ b/graph_instance.c
} /* }}} int inst_append */
int inst_foreach (graph_instance_t *inst, /* {{{ */
- inst_callback cb, void *user_data)
+ inst_callback_t cb, void *user_data)
{
graph_instance_t *ptr;
diff --git a/graph_instance.h b/graph_instance.h
index f167d23480f4a715ca2c3596c2f52da31b256566..39cb4c96b91bf2f87bae894b2b45da0455c889c1 100644 (file)
--- a/graph_instance.h
+++ b/graph_instance.h
struct graph_instance_s;
typedef struct graph_instance_s graph_instance_t;
-typedef int (*inst_callback) (graph_instance_t *inst, void *user_data);
+typedef int (*inst_callback_t) (graph_instance_t *inst, void *user_data);
-#include "graph_list.h"
+#include "graph.h"
+#include "utils_array.h"
/*
* Callback types
int inst_append (graph_instance_t *head, graph_instance_t *inst);
int inst_foreach (graph_instance_t *inst,
- inst_callback cb, void *user_data);
+ inst_callback_t cb, void *user_data);
graph_instance_t *inst_find_matching (graph_instance_t *inst,
const graph_ident_t *ident);
diff --git a/graph_list.c b/graph_list.c
index a5df4cb6d68e0482d0a5ba486db711c820668b32..6e11894c544959138625bdec14e7d8930de33529 100644 (file)
--- a/graph_list.c
+++ b/graph_list.c
}; /* }}} */
typedef struct gl_ident_stage_s gl_ident_stage_t;
-struct graph_config_s /* {{{ */
-{
- graph_ident_t *select;
-
- char *title;
- char *vertical_label;
-
- graph_def_t *defs;
-
- graph_instance_t *instances;
-
- graph_config_t *next;
-}; /* }}} struct graph_config_s */
-
/*
* Global variables
*/
-static graph_config_t *graph_config_head = NULL;
-static graph_config_t *graph_config_staging = NULL;
+static graph_config_t **gl_active = NULL;
+static size_t gl_active_num = 0;
+
+static graph_config_t **gl_staging = NULL;
+static size_t gl_staging_num = 0;
static time_t gl_last_update = 0;
} /* }}} int strcmp_s */
#endif
-/*
- * Copy part of an identifier. If the "template" value is ANY_TOKEN, "value" is
- * copied and returned. This function is used when creating graph_instance_t
- * from graph_config_t.
- */
-
-static graph_instance_t *graph_find_instance (graph_config_t *cfg, /* {{{ */
- const graph_ident_t *ident)
-{
- if ((cfg == NULL) || (ident == NULL))
- return (NULL);
-
- return (inst_find_matching (cfg->instances, ident));
-} /* }}} graph_instance_t *graph_find_instance */
-
-static int graph_add_file (graph_config_t *cfg, const graph_ident_t *file) /* {{{ */
+int gl_add_graph_internal (graph_config_t *cfg, /* {{{ */
+ graph_config_t ***gl_array, size_t *gl_array_num)
{
- graph_instance_t *inst;
+ graph_config_t **tmp;
- inst = graph_find_instance (cfg, file);
- if (inst == NULL)
- {
- inst = inst_create (cfg, file);
- if (inst == NULL)
- return (ENOMEM);
-
- if (cfg->instances == NULL)
- cfg->instances = inst;
- else
- inst_append (cfg->instances, inst);
- }
-
- return (inst_add_file (inst, file));
-} /* }}} int graph_add_file */
-
-static int graph_append (graph_config_t **head, /* {{{ */
- graph_config_t *cfg)
-{
- graph_config_t *last;
+#define ARRAY_PTR (*gl_array)
+#define ARRAY_SIZE (*gl_array_num)
if (cfg == NULL)
return (EINVAL);
- if (head == NULL)
- head = &graph_config_head;
-
- if (*head == NULL)
- {
- *head = cfg;
- return (0);
- }
+ tmp = realloc (ARRAY_PTR, sizeof (*ARRAY_PTR) * (ARRAY_SIZE + 1));
+ if (tmp == NULL)
+ return (ENOMEM);
+ ARRAY_PTR = tmp;
- last = *head;
- while (last->next != NULL)
- last = last->next;
+ ARRAY_PTR[ARRAY_SIZE] = cfg;
+ ARRAY_SIZE++;
- last->next = cfg;
+#undef ARRAY_SIZE
+#undef ARRAY_PTR
return (0);
-} /* }}} int graph_append */
-
-static graph_config_t *graph_create (const graph_ident_t *selector) /* {{{ */
-{
- graph_config_t *cfg;
-
- cfg = malloc (sizeof (*cfg));
- if (cfg == NULL)
- return (NULL);
- memset (cfg, 0, sizeof (*cfg));
-
- if (selector != NULL)
- cfg->select = ident_clone (selector);
- else
- cfg->select = NULL;
-
- cfg->title = NULL;
- cfg->vertical_label = NULL;
- cfg->defs = NULL;
- cfg->instances = NULL;
- cfg->next = NULL;
-
- return (cfg);
-} /* }}} int graph_create */
-
-static void graph_destroy (graph_config_t *cfg) /* {{{ */
-{
- graph_config_t *next;
-
- if (cfg == NULL)
- return;
-
- next = cfg->next;
-
- ident_destroy (cfg->select);
-
- free (cfg->title);
- free (cfg->vertical_label);
-
- def_destroy (cfg->defs);
- inst_destroy (cfg->instances);
-
- graph_destroy (next);
-} /* }}} void graph_destroy */
+} /* }}} int gl_add_graph_internal */
static int gl_register_file (const graph_ident_t *file, /* {{{ */
__attribute__((unused)) void *user_data)
{
graph_config_t *cfg;
int num_graphs = 0;
+ size_t i;
- for (cfg = graph_config_head; cfg != NULL; cfg = cfg->next)
+ for (i = 0; i < gl_active_num; i++)
{
+ graph_config_t *cfg = gl_active[i];
int status;
- if (!ident_matches (cfg->select, file))
+ if (!graph_matches (cfg, file))
continue;
status = graph_add_file (cfg, file);
if (num_graphs == 0)
{
cfg = graph_create (file);
- graph_append (/* head = */ NULL, cfg);
+ gl_add_graph_internal (cfg, &gl_active, &gl_active_num);
graph_add_file (cfg, file);
}
static int gl_clear_instances (void) /* {{{ */
{
- graph_config_t *cfg;
+ size_t i;
- for (cfg = graph_config_head; cfg != NULL; cfg = cfg->next)
- {
- inst_destroy (cfg->instances);
- cfg->instances = NULL;
- }
+ for (i = 0; i < gl_active_num; i++)
+ graph_clear_instances (gl_active[i]);
return (0);
} /* }}} int gl_clear_instances */
/*
- * Config functions
+ * Global functions
*/
-static graph_ident_t *graph_config_get_selector (const oconfig_item_t *ci) /* {{{ */
+int gl_add_graph (graph_config_t *cfg) /* {{{ */
{
- char *host = NULL;
- char *plugin = NULL;
- char *plugin_instance = NULL;
- char *type = NULL;
- char *type_instance = NULL;
- graph_ident_t *ret;
- int i;
-
- for (i = 0; i < ci->children_num; i++)
- {
- oconfig_item_t *child;
-
- child = ci->children + i;
-
- if (strcasecmp ("Host", child->key) == 0)
- graph_config_get_string (child, &host);
- else if (strcasecmp ("Plugin", child->key) == 0)
- graph_config_get_string (child, &plugin);
- else if (strcasecmp ("PluginInstance", child->key) == 0)
- graph_config_get_string (child, &plugin_instance);
- else if (strcasecmp ("Type", child->key) == 0)
- graph_config_get_string (child, &type);
- else if (strcasecmp ("TypeInstance", child->key) == 0)
- graph_config_get_string (child, &type_instance);
- /* else: ignore all other directives here. */
- } /* for */
-
- ret = ident_create (host, plugin, plugin_instance, type, type_instance);
-
- free (host);
- free (plugin);
- free (plugin_instance);
- free (type);
- free (type_instance);
-
- return (ret);
-} /* }}} int graph_config_get_selector */
+ return (gl_add_graph_internal (cfg, &gl_staging, &gl_staging_num));
+} /* }}} int gl_add_graph */
-/*
- * Global functions
- */
-int graph_config_add (const oconfig_item_t *ci) /* {{{ */
+int graph_config_submit (void) /* {{{ */
{
- graph_ident_t *select;
- graph_config_t *cfg = NULL;
- int i;
+ graph_config_t **old;
+ size_t old_num;
+ size_t i;
- select = graph_config_get_selector (ci);
- if (select == NULL)
- return (EINVAL);
+ old = gl_active;
+ old_num = gl_active_num;
- cfg = graph_create (/* selector = */ NULL);
- if (cfg == NULL)
- return (ENOMEM);
+ gl_active = gl_staging;
+ gl_active_num = gl_staging_num;
- cfg->select = select;
+ gl_staging = NULL;
+ gl_staging_num = 0;
- for (i = 0; i < ci->children_num; i++)
+ for (i = 0; i < old_num; i++)
{
- oconfig_item_t *child;
-
- child = ci->children + i;
-
- if (strcasecmp ("Title", child->key) == 0)
- graph_config_get_string (child, &cfg->title);
- else if (strcasecmp ("VerticalLabel", child->key) == 0)
- graph_config_get_string (child, &cfg->vertical_label);
- else if (strcasecmp ("DEF", child->key) == 0)
- def_config (cfg, child);
- } /* for */
-
- graph_append (&graph_config_staging, cfg);
-
- return (0);
-} /* }}} graph_config_add */
-
-int graph_config_submit (void) /* {{{ */
-{
- graph_config_t *tmp;
-
- tmp = graph_config_head;
- graph_config_head = graph_config_staging;
- graph_config_staging = NULL;
-
- graph_destroy (tmp);
+ graph_destroy (old[i]);
+ old[i] = NULL;
+ }
+ free (old);
return (0);
} /* }}} int graph_config_submit */
int gl_graph_get_all (gl_cfg_callback callback, /* {{{ */
void *user_data)
{
- graph_config_t *cfg;
+ size_t i;
if (callback == NULL)
return (EINVAL);
gl_update ();
- for (cfg = graph_config_head; cfg != NULL; cfg = cfg->next)
+ for (i = 0; i < gl_active_num; i++)
{
int status;
- status = (*callback) (cfg, user_data);
+ status = (*callback) (gl_active[i], user_data);
if (status != 0)
return (status);
}
const char *type = get_part_from_param ("graph_type", "type");
const char *type_instance = get_part_from_param ("graph_type_instance", "type_instance");
graph_ident_t *ident;
- graph_config_t *cfg;
+ size_t i;
if ((host == NULL)
|| (plugin == NULL) || (plugin_instance == NULL)
gl_update ();
- for (cfg = graph_config_head; cfg != NULL; cfg = cfg->next)
+ for (i = 0; i < gl_active_num; i++)
{
- if (ident_compare (ident, cfg->select) != 0)
+ if (graph_compare (gl_active[i], ident) != 0)
continue;
ident_destroy (ident);
- return (cfg);
+ return (gl_active[i]);
}
ident_destroy (ident);
if ((cfg == NULL) || (callback == NULL))
return (EINVAL);
- return (inst_foreach (cfg->instances, gl_inst_callback_handler, &data));
+ return (inst_foreach (gl_graph_get_instances (cfg),
+ gl_inst_callback_handler, &data));
} /* }}} int gl_graph_instance_get_all */
int gl_instance_get_all (gl_inst_callback callback, /* {{{ */
void *user_data)
{
- graph_config_t *cfg;
+ size_t i;
gl_update ();
- for (cfg = graph_config_head; cfg != NULL; cfg = cfg->next)
+ for (i = 0; i < gl_active_num; i++)
{
int status;
- status = gl_graph_instance_get_all (cfg, callback, user_data);
+ status = gl_graph_instance_get_all (gl_active[i], callback, user_data);
if (status != 0)
return (status);
}
} /* }}} int gl_instance_get_all */
/* }}} gl_instance_get_all, gl_graph_instance_get_all */
-int gl_graph_get_title (graph_config_t *cfg, /* {{{ */
- char *buffer, size_t buffer_size)
-{
- if ((cfg == NULL) || (buffer == NULL) || (buffer_size < 1))
- return (EINVAL);
-
- if (cfg->title == NULL)
- cfg->title = ident_to_string (cfg->select);
-
- if (cfg->title == NULL)
- return (ENOMEM);
-
- strncpy (buffer, cfg->title, buffer_size);
- buffer[buffer_size - 1] = 0;
-
- return (0);
-} /* }}} int gl_graph_get_title */
-
-graph_ident_t *gl_graph_get_selector (graph_config_t *cfg) /* {{{ */
-{
- if (cfg == NULL)
- return (NULL);
-
- return (ident_clone (cfg->select));
-} /* }}} graph_ident_t *gl_graph_get_selector */
-
-graph_instance_t *gl_graph_get_instances (graph_config_t *cfg) /* {{{ */
-{
- if (cfg == NULL)
- return (NULL);
-
- return (cfg->instances);
-} /* }}} graph_instance_t *gl_graph_get_instances */
-
-graph_def_t *gl_graph_get_defs (graph_config_t *cfg) /* {{{ */
-{
- if (cfg == NULL)
- return (NULL);
-
- return (cfg->defs);
-} /* }}} graph_def_t *gl_graph_get_defs */
-
-int gl_graph_add_def (graph_config_t *cfg, graph_def_t *def) /* {{{ */
-{
- if ((cfg == NULL) || (def == NULL))
- return (EINVAL);
-
- if (cfg->defs == NULL)
- {
- cfg->defs = def;
- return (0);
- }
-
- return (def_append (cfg->defs, def));
-} /* }}} int gl_graph_add_def */
-
int gl_update (void) /* {{{ */
{
time_t now;
diff --git a/graph_list.h b/graph_list.h
index f03122ac59f80078f9cff0c517b2fb857b605d3e..979c13d763564046672e5bd3b1639d116716227d 100644 (file)
--- a/graph_list.h
+++ b/graph_list.h
#ifndef GRAPH_LIST_H
#define GRAPH_LIST_H 1
-/*
- * Data types
- */
-struct graph_config_s;
-typedef struct graph_config_s graph_config_t;
-
-#include "graph_def.h"
-#include "graph_ident.h"
#include "graph_instance.h"
-#include "utils_array.h"
-#include "oconfig.h"
/*
* Callback types
/*
* Functions
*/
-int graph_config_add (const oconfig_item_t *ci);
-int graph_config_submit (void);
+int gl_add_graph (graph_config_t *cfg);
int gl_graph_get_all (gl_cfg_callback callback,
void *user_data);
graph_config_t *graph_get_selected (void);
-int gl_graph_get_title (graph_config_t *cfg,
- char *buffer, size_t buffer_size);
-
-graph_ident_t *gl_graph_get_selector (graph_config_t *cfg);
-
-graph_instance_t *gl_graph_get_instances (graph_config_t *cfg);
-
-graph_def_t *gl_graph_get_defs (graph_config_t *cfg);
-
-int gl_graph_add_def (graph_config_t *cfg, graph_def_t *def);
-
int gl_graph_instance_get_all (graph_config_t *cfg,
gl_inst_callback callback, void *user_data);