src/graph.[ch]: Implement "graph_get_params".
[collection4.git] / src / graph.c
index 2809ebb..6b89859 100644 (file)
@@ -14,7 +14,7 @@
 #include "graph_config.h"
 #include "common.h"
 #include "filesystem.h"
-#include "utils_params.h"
+#include "utils_cgi.h"
 
 #include <fcgiapp.h>
 #include <fcgi_stdio.h>
@@ -204,6 +204,35 @@ int graph_get_title (graph_config_t *cfg, /* {{{ */
   return (0);
 } /* }}} int graph_get_title */
 
+int graph_get_params (graph_config_t *cfg, /* {{{ */
+    char *buffer, size_t buffer_size)
+{
+  buffer[0] = 0;
+
+#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));                       \
+  strlcat (buffer, #field, buffer_size);                             \
+  strlcat (buffer, "=", buffer_size);                                \
+  strlcat (buffer, uri_str, buffer_size);                            \
+} while (0)
+
+  COPY_FIELD(host);
+  strlcat (buffer, ";", buffer_size);
+  COPY_FIELD(plugin);
+  strlcat (buffer, ";", buffer_size);
+  COPY_FIELD(plugin_instance);
+  strlcat (buffer, ";", buffer_size);
+  COPY_FIELD(type);
+  strlcat (buffer, ";", buffer_size);
+  COPY_FIELD(type_instance);
+
+#undef COPY_FIELD
+
+  return (0);
+} /* }}} int graph_get_params */
+
 graph_ident_t *graph_get_selector (graph_config_t *cfg) /* {{{ */
 {
   if (cfg == NULL)
@@ -269,6 +298,12 @@ static int graph_search_submit (graph_instance_t *inst, /* {{{ */
   return ((*data->callback) (data->cfg, inst, data->user_data));
 } /* }}} int graph_search_submit */
 
+int graph_inst_foreach (graph_config_t *cfg, /* {{{ */
+               inst_callback_t cb, void *user_data)
+{
+  return (inst_foreach (cfg->instances, cb, user_data));
+} /* }}} int graph_inst_foreach */
+
 int graph_search (graph_config_t *cfg, const char *term, /* {{{ */
     graph_inst_callback_t callback,
     void *user_data)
@@ -284,6 +319,8 @@ int graph_search (graph_config_t *cfg, const char *term, /* {{{ */
     return (status);
   }
 
+  strtolower (buffer);
+
   if (strstr (buffer, term) != NULL)
   {
     status = inst_foreach (cfg->instances, graph_search_submit, &data);