From f8fd749bce227816f75f87e592e78631bd786425 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Sun, 27 Jun 2010 12:13:44 +0200 Subject: [PATCH] "show instance" action: Limit displayed graphs to 10 and re-activate the "breadcrump". --- src/action_show_instance.c | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/action_show_instance.c b/src/action_show_instance.c index 1f6475f..b7fe03d 100644 --- a/src/action_show_instance.c +++ b/src/action_show_instance.c @@ -23,10 +23,13 @@ return (0); \ } while (0) +#define MAX_SHOW_GRAPHS 10 + struct show_graph_data_s { graph_config_t *cfg; graph_instance_t *inst; + int graph_count; }; typedef struct show_graph_data_s show_graph_data_t; @@ -54,20 +57,21 @@ static void show_breadcrump_field (const char *str, /* {{{ */ } } /* }}} void show_breadcrump_field */ -static int show_breadcrump (show_graph_data_t *data) /* {{{ */ +static int show_breadcrump (graph_config_t *cfg, /* {{{ */ + graph_instance_t *inst) { graph_ident_t *ident; char *prefix; - if (data->inst != NULL) + if (inst != NULL) { prefix = "Instance"; - ident = inst_get_selector (data->inst); + ident = inst_get_selector (inst); } else { prefix = "Graph"; - ident = graph_get_selector (data->cfg); + ident = graph_get_selector (cfg); } printf ("
%s: "", prefix); @@ -82,6 +86,7 @@ static int show_breadcrump (show_graph_data_t *data) /* {{{ */ show_breadcrump_field (ident_get_type_instance (ident), "type_instance"); printf (""
\n"); + ident_destroy (ident); return (0); } /* }}} int show_breadcrump */ @@ -171,8 +176,9 @@ static int show_instance_list (void *user_data) /* {{{ */ static int show_instance_cb (graph_config_t *cfg, /* {{{ */ graph_instance_t *inst, - __attribute__((unused)) void *user_data) + void *user_data) { + show_graph_data_t *data = user_data; char title[128]; char descr[128]; char params[1024]; @@ -190,9 +196,19 @@ static int show_instance_cb (graph_config_t *cfg, /* {{{ */ html_escape_buffer (params, sizeof (params)); printf ("

Instance "%s"

\n", descr); - printf ("
\n", - script_name (), params, title, descr); + + show_breadcrump (cfg, inst); + + if (data->graph_count < MAX_SHOW_GRAPHS) + printf ("
\n", + script_name (), params, title, descr); + else + printf ("Show graph " + ""%s / %s"\n", + script_name (), params, title, descr); + + data->graph_count++; return (0); } /* }}} int show_instance_cb */ @@ -204,7 +220,7 @@ static int show_instance (void *user_data) /* {{{ */ fprintf (stderr, "show_instance: Calling inst_get_all_selected()\n"); status = inst_get_all_selected (data->cfg, - /* callback = */ show_instance_cb, /* user data = */ NULL); + /* callback = */ show_instance_cb, /* user data = */ data); if (status != 0) fprintf (stderr, "show_instance: inst_get_all_selected failed " "with status %i\n", status); @@ -220,6 +236,7 @@ int action_show_instance (void) /* {{{ */ char tmp[128]; char title[128]; + memset (&pg_data, 0, sizeof (pg_data)); pg_data.cfg = gl_graph_get_selected (); if (pg_data.cfg == NULL) OUTPUT_ERROR ("gl_graph_get_selected () failed.\n"); -- 2.11.0