+ return (0);
+} /* }}} int print_search_result */
+
+static int print_host_list_callback (const char *host, void *user_data) /* {{{ */
+{
+ char *host_html;
+
+ /* Make compiler happy */
+ user_data = NULL;
+
+ if (host == NULL)
+ return (EINVAL);
+
+ host_html = html_escape (host);
+ if (host_html == NULL)
+ return (ENOMEM);
+
+ printf (" <li class=\"host\"><a href=\"%s?action=list_graphs;q=host:%s\">"
+ "%s</a></li>\n",
+ script_name (), host_html, host_html);
+
+ return (0);
+} /* }}} int print_host_list_callback */
+
+static int print_host_list (__attribute__((unused)) void *user_data) /* {{{ */
+{
+ printf ("<div><h3>List of hosts</h3>\n"
+ "<ul id=\"host-list\">\n");
+ gl_foreach_host (print_host_list_callback, /* user data = */ NULL);
+ printf ("</ul></div>\n");
+
+ return (0);
+} /* }}} int print_host_list */
+
+static int list_graphs_html (const char *term) /* {{{ */
+{
+ page_data_t pg_data;
+ page_callbacks_t pg_callbacks = PAGE_CALLBACKS_INIT;
+ char title[512];
+
+ if (term != NULL)
+ snprintf (title, sizeof (title), "Graphs matching \"%s\"",
+ term);
+ else
+ strncpy (title, "List of all graphs", sizeof (title));
+ title[sizeof (title) - 1] = 0;
+
+ memset (&pg_data, 0, sizeof (pg_data));
+ pg_data.search_term = term;
+
+ pg_callbacks.top_right = html_print_search_box;
+ pg_callbacks.middle_left = print_host_list;
+ pg_callbacks.middle_center = print_search_result;
+
+ html_print_page (title, &pg_callbacks, &pg_data);