aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorJakub Zawadzki <darkjames-ws@darkjames.pl>2012-06-19 14:32:24 +0000
committerJakub Zawadzki <darkjames-ws@darkjames.pl>2012-06-19 14:32:24 +0000
commit85aad383470b677d8aa2e340536afe917d9c9907 (patch)
treef53c0486dfcd60b49fe337935db69292996a71d9 /epan/dissectors
parent7c59ac028086d017ad82498ed1acafcb4ed0c05b (diff)
Add proto_tree_add_unicode_string() to add UTF-8 string to tree.
Convert some proto_tree_add_string_format_value(..., val, "%s", val); to use new function. svn path=/trunk/; revision=43363
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-gadu-gadu.c13
-rw-r--r--epan/dissectors/packet-gsm_sms.c27
-rw-r--r--epan/dissectors/packet-ip.c8
-rw-r--r--epan/dissectors/packet-ipv6.c8
4 files changed, 25 insertions, 31 deletions
diff --git a/epan/dissectors/packet-gadu-gadu.c b/epan/dissectors/packet-gadu-gadu.c
index 69d9a531ce..b8447740a2 100644
--- a/epan/dissectors/packet-gadu-gadu.c
+++ b/epan/dissectors/packet-gadu-gadu.c
@@ -434,12 +434,7 @@ dissect_gadu_gadu_stringz_cp1250(tvbuff_t *tvb, int hfindex, proto_tree *tree, i
if (len > 0)
offset++; /* NUL */
- /* proto_item_fill_label() is broken for UTF-8 strings.
- * It's using internally format_text() which doesn't support UTF-8
- *
- * So don't use proto_tree_add_string() but proto_tree_add_string_format_value()
- */
- proto_tree_add_string_format_value(tree, hfindex, tvb, org_offset, offset - org_offset, str->str, "%s", str->str);
+ proto_tree_add_unicode_string(tree, hfindex, tvb, org_offset, offset - org_offset, str->str);
g_string_free(str, TRUE);
return offset;
@@ -457,7 +452,9 @@ dissect_gadu_gadu_uint32_string_utf8(tvbuff_t *tvb, int hfindex, proto_tree *tre
offset += 4;
if (len > 0) {
- /* The one below doesn't work, same reason like in dissect_gadu_gadu_stringz_cp1250() */
+ /* proto_item_fill_label() is broken for UTF-8 strings.
+ * It's using internally format_text() which doesn't support UTF-8
+ */
/* proto_tree_add_item(tree, hfindex, tvb, offset, len, ENC_UTF_8|ENC_NA); */
/* Use workaround */
@@ -468,7 +465,7 @@ dissect_gadu_gadu_uint32_string_utf8(tvbuff_t *tvb, int hfindex, proto_tree *tre
offset += len;
- proto_tree_add_string_format_value(tree, hfindex, tvb, org_offset, offset - org_offset, str, "%s", str);
+ proto_tree_add_unicode_string(tree, hfindex, tvb, org_offset, offset - org_offset, str);
return offset;
}
diff --git a/epan/dissectors/packet-gsm_sms.c b/epan/dissectors/packet-gsm_sms.c
index e0a192ac1f..39a6e76533 100644
--- a/epan/dissectors/packet-gsm_sms.c
+++ b/epan/dissectors/packet-gsm_sms.c
@@ -2728,9 +2728,9 @@ dis_field_ud(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length, gb
(udl > SMS_MAX_MESSAGE_SIZE ? SMS_MAX_MESSAGE_SIZE : udl),
tvb_get_ptr(tvb , offset , length) , messagebuf);
messagebuf[out_len] = '\0';
- utf8_text = gsm_sms_chars_to_utf8(messagebuf, out_len);
- proto_tree_add_string_format_value(subtree, hf_gsm_sms_text, tvb, offset,
- length, utf8_text, "%s", utf8_text);
+ proto_tree_add_unicode_string(subtree, hf_gsm_sms_text, tvb, offset,
+ length,
+ gsm_sms_chars_to_utf8(messagebuf, out_len));
}
else
{
@@ -2751,10 +2751,9 @@ dis_field_ud(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length, gb
tvb_get_ptr(sm_tvb, total_sms_len, p_frag_params->length), messagebuf);
messagebuf[out_len] = '\0';
- utf8_text = gsm_sms_chars_to_utf8(messagebuf, out_len);
- proto_tree_add_string_format_value(subtree, hf_gsm_sms_text, sm_tvb,
- total_sms_len, p_frag_params->length,
- utf8_text, "%s", utf8_text);
+ proto_tree_add_unicode_string(subtree, hf_gsm_sms_text, sm_tvb,
+ total_sms_len, p_frag_params->length,
+ gsm_sms_chars_to_utf8(messagebuf, out_len));
total_sms_len += p_frag_params->length;
}
@@ -2779,6 +2778,7 @@ dis_field_ud(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length, gb
}
else if (ucs2)
{
+ /* XXX, use tvb_get_ephemeral_unicode_string(.., ENC_BIG_ENDIAN); */
if ((cd = g_iconv_open("UTF-8","UCS-2BE")) != (GIConv)-1)
{
guint8 rep_len = tvb_reported_length(sm_tvb);
@@ -2788,9 +2788,8 @@ dis_field_ud(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length, gb
/* Show unreassembled SMS */
utf8_text = g_convert_with_iconv(tvb_get_ptr(sm_tvb, 0, rep_len), rep_len , cd , NULL , NULL , &l_conv_error);
if(!l_conv_error) {
- /* XXX - using proto_tree_add_string() doesn't work */
- ucs2_item = proto_tree_add_string_format_value(subtree, hf_gsm_sms_text, tvb,
- offset, length, utf8_text, "%s", utf8_text);
+ ucs2_item = proto_tree_add_unicode_string(subtree, hf_gsm_sms_text, tvb,
+ offset, length, utf8_text, "%s", utf8_text);
} else {
ucs2_item = proto_tree_add_text(subtree, tvb, offset, length, "Failed to decode UCS2!");
}
@@ -2821,11 +2820,9 @@ dis_field_ud(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint32 length, gb
} else
length_ucs2 = len_sms % MAX_SMS_FRAG_LEN;
- /* XXX - using proto_tree_add_string() doesn't work */
- ucs2_item = proto_tree_add_string_format_value(subtree, hf_gsm_sms_text, sm_tvb,
- i * MAX_SMS_FRAG_LEN, length_ucs2,
- &utf8_text[i * MAX_SMS_FRAG_LEN],
- "%s", &utf8_text[i * MAX_SMS_FRAG_LEN]);
+ ucs2_item = proto_tree_add_unicode_string(subtree, hf_gsm_sms_text, sm_tvb,
+ i * MAX_SMS_FRAG_LEN, length_ucs2,
+ &utf8_text[i * MAX_SMS_FRAG_LEN]);
PROTO_ITEM_SET_GENERATED(ucs2_item);
/* return the save byte to utf8 buffer*/
diff --git a/epan/dissectors/packet-ip.c b/epan/dissectors/packet-ip.c
index 092487d062..a9552fcfec 100644
--- a/epan/dissectors/packet-ip.c
+++ b/epan/dissectors/packet-ip.c
@@ -563,11 +563,11 @@ add_geoip_info_entry(proto_item *geoip_info_item, tvbuff_t *tvb, gint offset, gu
PROTO_ITEM_SET_GENERATED(item);
PROTO_ITEM_SET_HIDDEN(item);
} else {
- item = proto_tree_add_string_format_value(geoip_info_tree, geoip_local_hf,
- tvb, offset, 4, geoip_str, "%s", geoip_str);
+ item = proto_tree_add_unicode_string(geoip_info_tree, geoip_local_hf,
+ tvb, offset, 4, geoip_str);
PROTO_ITEM_SET_GENERATED(item);
- item = proto_tree_add_string_format_value(geoip_info_tree, geoip_hf,
- tvb, offset, 4, geoip_str, "%s", geoip_str);
+ item = proto_tree_add_unicode_string(geoip_info_tree, geoip_hf,
+ tvb, offset, 4, geoip_str);
PROTO_ITEM_SET_GENERATED(item);
PROTO_ITEM_SET_HIDDEN(item);
}
diff --git a/epan/dissectors/packet-ipv6.c b/epan/dissectors/packet-ipv6.c
index 4f7a89c194..ffd8cb5867 100644
--- a/epan/dissectors/packet-ipv6.c
+++ b/epan/dissectors/packet-ipv6.c
@@ -512,11 +512,11 @@ add_geoip_info_entry(proto_tree *geoip_info_item, tvbuff_t *tvb, gint offset, co
PROTO_ITEM_SET_GENERATED(item);
PROTO_ITEM_SET_HIDDEN(item);
} else {
- item = proto_tree_add_string_format_value(geoip_info_tree, geoip_local_hf, tvb,
- offset, 16, geoip_str, "%s", geoip_str);
+ item = proto_tree_add_unicode_string(geoip_info_tree, geoip_local_hf, tvb,
+ offset, 16, geoip_str);
PROTO_ITEM_SET_GENERATED(item);
- item = proto_tree_add_string_format_value(geoip_info_tree, geoip_hf, tvb,
- offset, 16, geoip_str, "%s", geoip_str);
+ item = proto_tree_add_unicode_string(geoip_info_tree, geoip_hf, tvb,
+ offset, 16, geoip_str);
PROTO_ITEM_SET_GENERATED(item);
PROTO_ITEM_SET_HIDDEN(item);
}