diff options
author | Stig Bjørlykke <stig@bjorlykke.org> | 2011-06-19 19:29:19 +0000 |
---|---|---|
committer | Stig Bjørlykke <stig@bjorlykke.org> | 2011-06-19 19:29:19 +0000 |
commit | e2994a1b0d77bed1b7e94e2908f928f7d73b40a6 (patch) | |
tree | 96ca97e1c425763faf005ffd475f2c4005dc49fb /epan/proto.c | |
parent | bf2da67ec9f61cb9d56f7adac6b54aaaa93c3b2b (diff) |
Make creating a display filter from a custom column defined as integer with
strings and BASE_NONE equal to selecting the filter from the tree entry.
svn path=/trunk/; revision=37720
Diffstat (limited to 'epan/proto.c')
-rw-r--r-- | epan/proto.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/epan/proto.c b/epan/proto.c index 980d295219..a26f9242a4 100644 --- a/epan/proto.c +++ b/epan/proto.c @@ -3839,21 +3839,25 @@ proto_custom_set(proto_tree* tree, const int field_id, gint occurrence, u_integer = fvalue_get_uinteger(&finfo->value); if (hfinfo->strings) { if (hfinfo->display & BASE_RANGE_STRING) { - offset_r += (int)g_strlcpy(result+offset_r, rval_to_str(u_integer, hfinfo->strings, "%u"), size-offset_r); + g_strlcpy(result+offset_r, rval_to_str(u_integer, hfinfo->strings, "%u"), size-offset_r); } else if (hfinfo->display & BASE_EXT_STRING) { - offset_r += (int)g_strlcpy(result+offset_r, val_to_str_ext(u_integer, (value_string_ext *) (hfinfo->strings), "%u"), size-offset_r); + g_strlcpy(result+offset_r, val_to_str_ext(u_integer, (value_string_ext *) (hfinfo->strings), "%u"), size-offset_r); } else { - offset_r += (int)g_strlcpy(result+offset_r, val_to_str(u_integer, cVALS(hfinfo->strings), "%u"), size-offset_r); + g_strlcpy(result+offset_r, val_to_str(u_integer, cVALS(hfinfo->strings), "%u"), size-offset_r); } } else if (IS_BASE_DUAL(hfinfo->display)) { g_snprintf(result+offset_r, size-offset_r, hfinfo_uint_value_format(hfinfo), u_integer, u_integer); - offset_r = (int)strlen(result); } else { g_snprintf(result+offset_r, size-offset_r, hfinfo_uint_value_format(hfinfo), u_integer); - offset_r = (int)strlen(result); } - g_snprintf(expr+offset_e, size-offset_e, hfinfo_numeric_value_format(hfinfo), fvalue_get_uinteger(&finfo->value)); + if (hfinfo->strings && (hfinfo->display & BASE_DISPLAY_E_MASK) == BASE_NONE) { + g_snprintf(expr+offset_e, size-offset_e, "\"%s\"", result+offset_r); + } else { + g_snprintf(expr+offset_e, size-offset_e, hfinfo_numeric_value_format(hfinfo), fvalue_get_uinteger(&finfo->value)); + } + + offset_r = (int)strlen(result); offset_e = (int)strlen(expr); break; @@ -3873,21 +3877,25 @@ proto_custom_set(proto_tree* tree, const int field_id, gint occurrence, integer = fvalue_get_sinteger(&finfo->value); if (hfinfo->strings) { if (hfinfo->display & BASE_RANGE_STRING) { - offset_r += (int)g_strlcpy(result+offset_r, rval_to_str(integer, hfinfo->strings, "%d"), size-offset_r); + g_strlcpy(result+offset_r, rval_to_str(integer, hfinfo->strings, "%d"), size-offset_r); } else if (hfinfo->display & BASE_EXT_STRING) { - offset_r += (int)g_strlcpy(result+offset_r, val_to_str_ext(integer, (value_string_ext *) (hfinfo->strings), "%d"), size-offset_r); + g_strlcpy(result+offset_r, val_to_str_ext(integer, (value_string_ext *) (hfinfo->strings), "%d"), size-offset_r); } else { - offset_r += (int)g_strlcpy(result+offset_r, val_to_str(integer, cVALS(hfinfo->strings), "%d"), size-offset_r); + g_strlcpy(result+offset_r, val_to_str(integer, cVALS(hfinfo->strings), "%d"), size-offset_r); } } else if (IS_BASE_DUAL(hfinfo->display)) { g_snprintf(result+offset_r, size-offset_r, hfinfo_int_value_format(hfinfo), integer, integer); - offset_r = (int)strlen(result); } else { g_snprintf(result+offset_r, size-offset_r, hfinfo_int_value_format(hfinfo), integer); - offset_r = (int)strlen(result); } - g_snprintf(expr+offset_e, size-offset_e, hfinfo_numeric_value_format(hfinfo), fvalue_get_sinteger(&finfo->value)); + if (hfinfo->strings && (hfinfo->display & BASE_DISPLAY_E_MASK) == BASE_NONE) { + g_snprintf(expr+offset_e, size-offset_e, "\"%s\"", result+offset_r); + } else { + g_snprintf(expr+offset_e, size-offset_e, hfinfo_numeric_value_format(hfinfo), fvalue_get_sinteger(&finfo->value)); + } + + offset_r = (int)strlen(result); offset_e = (int)strlen(expr); break; |