Code

Move the graph class into an own module.
authorFlorian Forster <ff@octo.it>
Tue, 15 Jun 2010 09:27:35 +0000 (11:27 +0200)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Tue, 15 Jun 2010 09:27:35 +0000 (11:27 +0200)
Makefile
graph.c [new file with mode: 0644]
graph.h [new file with mode: 0644]
graph_def.c
graph_def.h
graph_instance.c
graph_instance.h
graph_list.c
graph_list.h

index 0b22fd7416204bca1fe305513b865cb4a25b54d2..356ae5761d9d0b15ca9a885c15cf9ef0cf223de6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -13,6 +13,8 @@ common.o: common.c common.h
 
 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
@@ -46,7 +48,7 @@ parser.o: parser.c
 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
new file mode 100644 (file)
index 0000000..025a867
--- /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
new file mode 100644 (file)
index 0000000..f7c12e4
--- /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 : */
index 71ba1bdfe84c2ef3fd352f3132a8731a892ec423..4f918206c713023253f3676a01ded39cb2c620b7 100644 (file)
@@ -3,6 +3,7 @@
 #include <errno.h>
 
 #include "graph_def.h"
+#include "graph.h"
 #include "graph_config.h"
 #include "common.h"
 #include "oconfig.h"
index 3d852c082c71752f0f809da6681fcaa1d526f6ed..b2cd2282c50a909d44aec56bb06cf9cf9fa2c8d3 100644 (file)
@@ -7,8 +7,8 @@ typedef struct graph_def_s graph_def_t;
 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"
 
index fa4716d373d526782e91c04bbd7c93621d738116..5273ef308c0c18b39ef724230ae9bbe923c868c0 100644 (file)
@@ -405,7 +405,7 @@ int inst_append (graph_instance_t *head, graph_instance_t *inst) /* {{{ */
 } /* }}} 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;
 
index f167d23480f4a715ca2c3596c2f52da31b256566..39cb4c96b91bf2f87bae894b2b45da0455c889c1 100644 (file)
@@ -7,9 +7,10 @@
 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
@@ -37,7 +38,7 @@ graph_ident_t *inst_get_selector (graph_instance_t *inst);
 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);
index a5df4cb6d68e0482d0a5ba486db711c820668b32..6e11894c544959138625bdec14e7d8930de33529 100644 (file)
@@ -39,25 +39,14 @@ struct gl_ident_stage_s /* {{{ */
 }; /* }}} */
 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;
 
@@ -80,121 +69,44 @@ static int strcmp_s (const char *s1, const char *s2) /* {{{ */
 } /* }}} 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);
@@ -211,7 +123,7 @@ static int gl_register_file (const graph_ident_t *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);
   }
 
@@ -232,108 +144,44 @@ static const char *get_part_from_param (const char *prim_key, /* {{{ */
 
 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 */
@@ -341,18 +189,18 @@ int graph_config_submit (void) /* {{{ */
 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);
   }
@@ -368,7 +216,7 @@ graph_config_t *graph_get_selected (void) /* {{{ */
   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)
@@ -379,13 +227,13 @@ graph_config_t *graph_get_selected (void) /* {{{ */
 
   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);
@@ -421,21 +269,22 @@ int gl_graph_instance_get_all (graph_config_t *cfg, /* {{{ */
   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);
   }
@@ -444,62 +293,6 @@ int gl_instance_get_all (gl_inst_callback callback, /* {{{ */
 } /* }}} 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;
index f03122ac59f80078f9cff0c517b2fb857b605d3e..979c13d763564046672e5bd3b1639d116716227d 100644 (file)
@@ -1,17 +1,7 @@
 #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
@@ -25,25 +15,13 @@ typedef int (*gl_inst_callback) (graph_config_t *cfg,
 /*
  * 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);