+ ident = inst_get_selector (inst);
+ if (ident == NULL)
+ return (-1);
+
+ host = ident_get_host (ident);
+ if (host == NULL)
+ {
+ ident_destroy (ident);
+ return (-1);
+ }
+
+ if (IS_ALL (host))
+ return (0);
+
+ if ((data->last_host != NULL)
+ && (strcmp (data->last_host, host) == 0))
+ {
+ ident_destroy (ident);
+ return (0);
+ }
+
+ free (data->last_host);
+ data->last_host = strdup (host);
+
+ array_append (data->array, host);
+
+ ident_destroy (ident);
+ return (0);
+} /* }}} int print_host_list_callback */
+
+static int print_host_list (__attribute__((unused)) void *user_data) /* {{{ */
+{
+ print_host_list_data_t data;
+ int hosts_argc;
+ char **hosts_argv;
+ int i;
+
+ data.array = array_create ();
+ data.last_host = NULL;
+
+ gl_instance_get_all (print_host_list_callback, &data);
+
+ free (data.last_host);
+ data.last_host = NULL;
+
+ array_sort (data.array);
+
+ hosts_argc = array_argc (data.array);
+ hosts_argv = array_argv (data.array);
+
+ if (hosts_argc < 1)
+ {
+ array_destroy (data.array);
+ return (0);
+ }
+
+ printf ("<ul id=\"host-list\">\n");
+ for (i = 0; i < hosts_argc; i++)
+ {
+ char *host = hosts_argv[i];
+ char *host_html;
+
+ if ((data.last_host != NULL) && (strcmp (data.last_host, host) == 0))
+ continue;
+ data.last_host = host;
+
+ host_html = html_escape (host);
+
+ printf (" <li><a href=\"%s?action=list_graphs&search=%s\">%s</a></li>\n",
+ script_name (), host_html, host_html);
+
+ free (host_html);
+ }