aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorChris Maynard <Christopher.Maynard@GTECH.COM>2013-07-09 18:01:44 +0000
committerChris Maynard <Christopher.Maynard@GTECH.COM>2013-07-09 18:01:44 +0000
commite8fed416a2a1a6287c8261877a0cfe12b1cdb9de (patch)
tree23aa3f6337cf6982dc63a12ed646956897959799 /ui
parent9c9864976feb34d6e870b16e97eb36b4c0bf4d09 (diff)
Another change that should have been part of r50465, which removed the limits to the number of characters in the display filter(s). [Technically, there is still the inherent 65535 limit.]
#BACKPORT(1.10,1.8) svn path=/trunk/; revision=50469
Diffstat (limited to 'ui')
-rw-r--r--ui/gtk/io_stat.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/ui/gtk/io_stat.c b/ui/gtk/io_stat.c
index abda287931..a6c6d09e2a 100644
--- a/ui/gtk/io_stat.c
+++ b/ui/gtk/io_stat.c
@@ -1307,11 +1307,11 @@ tap_iostat_draw(void *g)
static GString *
enable_graph(io_stat_graph_t *gio, const char *filter, const char *field)
{
- char real_filter[262];
+ GString *real_filter = NULL;
+ GString *err_msg;
gio->display = TRUE;
- real_filter[0] = 0;
if (filter) {
/* skip all whitespaces */
while (*filter) {
@@ -1326,7 +1326,8 @@ enable_graph(io_stat_graph_t *gio, const char *filter, const char *field)
break;
}
if (*filter) {
- g_snprintf(real_filter, sizeof(real_filter), "(%s)", filter);
+ real_filter = g_string_new("");
+ g_string_printf(real_filter, "(%s)", filter);
}
}
if (field) {
@@ -1343,15 +1344,19 @@ enable_graph(io_stat_graph_t *gio, const char *filter, const char *field)
break;
}
if (*field) {
- if (real_filter[0] != 0) {
- g_strlcat(real_filter, " && ", sizeof(real_filter));
+ if (real_filter) {
+ g_string_append_printf(real_filter, " && (%s)", field);
+ } else {
+ real_filter = g_string_new(field);
}
- g_strlcat(real_filter, field, sizeof(real_filter));
}
}
- return register_tap_listener("frame", gio, real_filter[0] ? real_filter : NULL,
- TL_REQUIRES_PROTO_TREE,
- tap_iostat_reset, tap_iostat_packet, tap_iostat_draw);
+ err_msg = register_tap_listener("frame", gio, real_filter ? real_filter->str : NULL,
+ TL_REQUIRES_PROTO_TREE, tap_iostat_reset, tap_iostat_packet,
+ tap_iostat_draw);
+ if (real_filter)
+ g_string_free(real_filter, TRUE);
+ return err_msg;
}
static void