diff options
author | Chris Maynard <Christopher.Maynard@GTECH.COM> | 2013-07-09 18:01:44 +0000 |
---|---|---|
committer | Chris Maynard <Christopher.Maynard@GTECH.COM> | 2013-07-09 18:01:44 +0000 |
commit | e8fed416a2a1a6287c8261877a0cfe12b1cdb9de (patch) | |
tree | 23aa3f6337cf6982dc63a12ed646956897959799 /ui/gtk/io_stat.c | |
parent | 9c9864976feb34d6e870b16e97eb36b4c0bf4d09 (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/gtk/io_stat.c')
-rw-r--r-- | ui/gtk/io_stat.c | 23 |
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 |