Add count() function to display filter. Bug 9480 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9480)

From Martin Kaiser

svn path=/trunk/; revision=53623
This commit is contained in:
Michael Mann 2013-11-28 15:56:53 +00:00
parent 3d9e55b8be
commit ea7bcf0783
1 changed files with 22 additions and 3 deletions

View File

@ -156,6 +156,23 @@ df_func_size(GList* arg1list, GList *arg2junk _U_, GList **retval)
return TRUE;
}
/* dfilter function: count() */
static gboolean
df_func_count(GList* arg1list, GList *arg2junk _U_, GList **retval)
{
fvalue_t *ft_ret;
guint32 num_items;
num_items = (guint32)g_list_length(arg1list);
ft_ret = fvalue_new(FT_UINT32);
fvalue_set_uinteger(ft_ret, num_items);
*retval = g_list_append(*retval, ft_ret);
return TRUE;
}
/* For upper(), lower() and len(), checks that the parameter passed to
* it is an FT_STRING */
static void
@ -189,7 +206,7 @@ ul_semcheck_params(int param_num, stnode_t *st_node)
}
static void
ul_semcheck_params_size(int param_num, stnode_t *st_node)
ul_semcheck_field_param(int param_num, stnode_t *st_node)
{
sttype_id_t type;
@ -200,7 +217,8 @@ ul_semcheck_params_size(int param_num, stnode_t *st_node)
case STTYPE_FIELD:
break;
default:
dfilter_fail("Only type fields can be used in size()");
dfilter_fail("Only type fields can be used as parameter "
"for size() or count()");
THROW(TypeError);
}
}
@ -215,7 +233,8 @@ df_functions[] = {
{ "lower", df_func_lower, FT_STRING, 1, 1, ul_semcheck_params },
{ "upper", df_func_upper, FT_STRING, 1, 1, ul_semcheck_params },
{ "len", df_func_len, FT_UINT32, 1, 1, ul_semcheck_params },
{ "size", df_func_size, FT_UINT32, 1, 1, ul_semcheck_params_size },
{ "size", df_func_size, FT_UINT32, 1, 1, ul_semcheck_field_param },
{ "count", df_func_count, FT_UINT32, 1, 1, ul_semcheck_field_param },
{ NULL, NULL, FT_NONE, 0, 0, NULL }
};