summaryrefslogtreecommitdiff
path: root/epan/proto.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2011-09-16 06:12:12 +0000
committerAnders Broman <anders.broman@ericsson.com>2011-09-16 06:12:12 +0000
commit54dc8d1f54aff508aefab03f39688f2ee57f4707 (patch)
tree9f68f5c173a9f78269532b30e2f11abe656b4a66 /epan/proto.c
parent1bbb078af3e67bda98289bda2b6193fed0bd41a6 (diff)
downloadwireshark-54dc8d1f54aff508aefab03f39688f2ee57f4707.tar.gz
From Sylvain Munaut:
proto: Use fill_label_xxx helpers in _proto_tree_add_bits_ret_val https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6329 svn path=/trunk/; revision=39026
Diffstat (limited to 'epan/proto.c')
-rw-r--r--epan/proto.c50
1 files changed, 12 insertions, 38 deletions
diff --git a/epan/proto.c b/epan/proto.c
index f6eec48928..265de47d50 100644
--- a/epan/proto.c
+++ b/epan/proto.c
@@ -7232,12 +7232,12 @@ _proto_tree_add_bits_ret_val(proto_tree *tree, const int hf_index, tvbuff_t *tvb
const gint bit_offset, const gint no_of_bits,
guint64 *return_value, const gboolean little_endian)
{
- const char *format = NULL;
gint offset;
guint length;
guint8 tot_no_bits;
- char *str;
+ char *bf_str, lbl_str[ITEM_LABEL_LENGTH];
header_field_info *hf_field;
+ proto_item *pi;
guint64 value = 0;
const true_false_string *tfstring;
@@ -7284,10 +7284,7 @@ _proto_tree_add_bits_ret_val(proto_tree *tree, const int hf_index, tvbuff_t *tvb
/* Coast clear. Try and fake it */
TRY_TO_FAKE_THIS_ITEM(tree, hf_index, hf_field);
- str = decode_bits_in_field(bit_offset, no_of_bits, value);
-
- strcat(str," = ");
- strcat(str,hf_field->name);
+ bf_str = decode_bits_in_field(bit_offset, no_of_bits, value);
switch(hf_field->type){
case FT_BOOLEAN:
@@ -7296,8 +7293,8 @@ _proto_tree_add_bits_ret_val(proto_tree *tree, const int hf_index, tvbuff_t *tvb
if (hf_field->strings)
tfstring = (const true_false_string *) hf_field->strings;
return proto_tree_add_boolean_format(tree, hf_index, tvb, offset, length, (guint32)value,
- "%s: %s",
- str,
+ "%s = %s: %s",
+ bf_str, hf_field->name,
(guint32)value ? tfstring->true_string : tfstring->false_string);
break;
@@ -7305,39 +7302,13 @@ _proto_tree_add_bits_ret_val(proto_tree *tree, const int hf_index, tvbuff_t *tvb
case FT_UINT16:
case FT_UINT24:
case FT_UINT32:
- /* 1 - 32 bits field */
- if (hf_field->strings) {
- return proto_tree_add_uint_format(tree, hf_index, tvb, offset, length, (guint32)value,
- "%s: %s (%u)",
- str, (hf_field->display & BASE_RANGE_STRING) ?
- rval_to_str((guint32)value, hf_field->strings, "Unknown ") :
- (hf_field->display & BASE_EXT_STRING) ?
- val_to_str_ext_const((guint32)value, (value_string_ext *) (hf_field->strings), "Unknown ") :
- val_to_str_const((guint32)value, cVALS(hf_field->strings), "Unknown "),
- (guint32)value);
- break;
- }
- /* Pick the proper format string */
- format = hfinfo_uint_format(hf_field);
- if (IS_BASE_DUAL(hf_field->display)) {
- return proto_tree_add_uint_format(tree, hf_index, tvb, offset, length, (guint32)value,
- format, str, (guint32)value, (guint32)value);
- } else {
- return proto_tree_add_uint_format(tree, hf_index, tvb, offset, length, (guint32)value,
- format, str, (guint32)value);
- }
+ pi = proto_tree_add_uint(tree, hf_index, tvb, offset, length, (guint32)value);
+ fill_label_uint(PITEM_FINFO(pi), lbl_str);
break;
case FT_UINT64:
- /* Pick the proper format string */
- format = hfinfo_uint64_format(hf_field);
- if (IS_BASE_DUAL(hf_field->display)) {
- return proto_tree_add_uint64_format(tree, hf_index, tvb, offset, length, value,
- format, str, value, value);
- } else {
- return proto_tree_add_uint64_format(tree, hf_index, tvb, offset, length, value,
- format, str, value);
- }
+ pi = proto_tree_add_uint64(tree, hf_index, tvb, offset, length, value);
+ fill_label_uint64(PITEM_FINFO(pi), lbl_str);
break;
default:
@@ -7345,6 +7316,9 @@ _proto_tree_add_bits_ret_val(proto_tree *tree, const int hf_index, tvbuff_t *tvb
return NULL;
break;
}
+
+ proto_item_set_text(pi, "%s = %s", bf_str, lbl_str);
+ return pi;
}
proto_item *