aboutsummaryrefslogtreecommitdiffstats
path: root/epan/stats_tree.c
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2024-02-09 13:30:36 -0800
committerAndersBroman <a.broman58@gmail.com>2024-02-14 08:05:24 +0000
commit53638f9ccfc9ce7e685532062c3b4068a759f7dd (patch)
tree112a02ba90340b097b64fa5113bc9c788fdb38d6 /epan/stats_tree.c
parent28c42e26566ce8276576dac0a41f406d9b0c0577 (diff)
Stats tree: Change our path separator
Change our menu path separator to "//" similar to our filter buttons. Change the "name" configuration element to "path", since it's a menu path. Add a separate "title" element. This lets us use names like "Foo I/O".
Diffstat (limited to 'epan/stats_tree.c')
-rw-r--r--epan/stats_tree.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/epan/stats_tree.c b/epan/stats_tree.c
index c6ac137408..1dbce169bd 100644
--- a/epan/stats_tree.c
+++ b/epan/stats_tree.c
@@ -247,7 +247,7 @@ stats_tree_reinit(void *p)
/* Do not update st_flags for the tree (sorting) - leave as was */
st->num_columns = N_COLUMNS;
g_free(st->display_name);
- st->display_name = stats_tree_get_displayname(st->cfg->name);
+ st->display_name = stats_tree_get_displayname(st->cfg->path);
if (st->cfg->init) {
st->cfg->init(st);
@@ -260,14 +260,15 @@ stats_tree_free_configuration(gpointer p)
stats_tree_cfg* cfg = (stats_tree_cfg*)p;
g_free(cfg->tapname);
g_free(cfg->abbr);
- g_free(cfg->name);
+ g_free(cfg->path);
+ g_free(cfg->title);
g_free(cfg->first_column_name);
g_free(cfg);
}
/* register a new stats_tree */
extern stats_tree_cfg *
-stats_tree_register(const char *tapname, const char *abbr, const char *name,
+stats_tree_register(const char *tapname, const char *abbr, const char *path,
guint flags,
stat_tree_packet_cb packet, stat_tree_init_cb init,
stat_tree_cleanup_cb cleanup)
@@ -279,9 +280,18 @@ stats_tree_register(const char *tapname, const char *abbr, const char *name,
cfg->tapname = g_strdup(tapname);
cfg->abbr = g_strdup(abbr);
- cfg->name = name ? g_strdup(name) : g_strdup(abbr);
+ cfg->path = path ? g_strdup(path) : g_strdup(abbr);
cfg->stat_group = REGISTER_PACKET_STAT_GROUP_UNSORTED;
+ GString *title_str = g_string_new("");
+ char **split = g_strsplit(path, STATS_TREE_MENU_SEPARATOR, 0);
+ const char *sep = "";
+ for (size_t idx = 0; split[idx]; idx++) {
+ g_string_append_printf(title_str, "%s%s", sep, g_strstrip(split[idx]));
+ sep = " / ";
+ }
+ cfg->title = g_string_free(title_str, false);
+
cfg->packet = packet;
cfg->init = init;
cfg->cleanup = cleanup;
@@ -298,12 +308,12 @@ stats_tree_register(const char *tapname, const char *abbr, const char *name,
/* register a new stat_tree with default group REGISTER_PACKET_STAT_GROUP_UNSORTED from a plugin */
extern stats_tree_cfg *
-stats_tree_register_plugin(const char *tapname, const char *abbr, const char *name,
+stats_tree_register_plugin(const char *tapname, const char *abbr, const char *path,
guint flags,
stat_tree_packet_cb packet, stat_tree_init_cb init,
stat_tree_cleanup_cb cleanup)
{
- stats_tree_cfg *cfg = stats_tree_register(tapname, abbr, name,
+ stats_tree_cfg *cfg = stats_tree_register(tapname, abbr, path,
flags, packet, init, cleanup);
cfg->plugin = TRUE;
@@ -355,7 +365,7 @@ stats_tree_new(stats_tree_cfg *cfg, tree_pres *pr, const char *filter)
st->root.bt = st->root.bh;
st->root.burst_time = -1.0;
- st->root.name = stats_tree_get_displayname(cfg->name);
+ st->root.name = stats_tree_get_displayname(cfg->path);
st->root.st = st;
st->st_flags = st->cfg->st_flags;
@@ -368,7 +378,7 @@ stats_tree_new(stats_tree_cfg *cfg, tree_pres *pr, const char *filter)
}
}
st->num_columns = N_COLUMNS;
- st->display_name = stats_tree_get_displayname(st->cfg->name);
+ st->display_name = stats_tree_get_displayname(st->cfg->path);
g_ptr_array_add(st->parents,&st->root);
@@ -405,7 +415,7 @@ compare_stat_menu_item(gconstpointer stat_a, gconstpointer stat_b)
const stats_tree_cfg* stat_cfg_a = (const stats_tree_cfg*)stat_a;
const stats_tree_cfg* stat_cfg_b = (const stats_tree_cfg*)stat_b;
- return strcmp(stat_cfg_a->name, stat_cfg_b->name);
+ return strcmp(stat_cfg_a->path, stat_cfg_b->path);
}
extern GList*
@@ -1336,7 +1346,7 @@ stats_tree_format_as_str(const stats_tree* st, st_format_type format_type,
s = g_string_new("\n");
g_string_append(s,separator);
- g_string_append_printf(s,"\n%s:\n",st->cfg->name);
+ g_string_append_printf(s,"\n%s:\n",st->cfg->title);
snprintf (fmt,sizeof(fmt),"%%-%us",maxnamelen);
g_string_append_printf(s,fmt,stats_tree_get_column_name(st->cfg, 0));
for (count = 1; count<st->num_columns; count++) {