Blame wireshark-0010-fields-print-format.patch

Peter Hatina ed57f9
diff --git a/epan/ftypes/ftype-integer.c b/epan/ftypes/ftype-integer.c
Peter Hatina ed57f9
index 2bf81d6..3f9bbc1 100644
Peter Hatina ed57f9
--- a/epan/ftypes/ftype-integer.c
Peter Hatina ed57f9
+++ b/epan/ftypes/ftype-integer.c
Peter Hatina ed57f9
@@ -230,7 +230,7 @@ integer_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
Peter Hatina ed57f9
 }
Peter Hatina ed57f9
 
Peter Hatina ed57f9
 static void
Peter Hatina ed57f9
-integer_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
Peter Hatina ed57f9
+integer_to_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
Peter Hatina ed57f9
 {
Peter Hatina ed57f9
 	guint32 val;
Peter Hatina ed57f9
 
Peter Hatina ed57f9
@@ -240,7 +240,12 @@ integer_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
Peter Hatina ed57f9
 	} else
Peter Hatina ed57f9
 		val = fv->value.sinteger;
Peter Hatina ed57f9
 
Peter Hatina ed57f9
-	guint32_to_str_buf(val, buf, 11);
Peter Hatina ed57f9
+        if (rtype == FTREPR_DISPLAY_HEX) {
Peter Hatina ed57f9
+            // This format perfectly fits into 11 bytes.
Peter Hatina ed57f9
+            g_sprintf(buf, "0x%08x", val);
Peter Hatina ed57f9
+        } else {
Peter Hatina ed57f9
+            guint32_to_str_buf(val, buf, 11);
Peter Hatina ed57f9
+        }
Peter Hatina ed57f9
 }
Peter Hatina ed57f9
 
Peter Hatina ed57f9
 static int
Peter Hatina ed57f9
@@ -250,9 +255,14 @@ uinteger_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
Peter Hatina ed57f9
 }
Peter Hatina ed57f9
 
Peter Hatina ed57f9
 static void
Peter Hatina ed57f9
-uinteger_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
Peter Hatina ed57f9
+uinteger_to_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
Peter Hatina ed57f9
 {
Peter Hatina ed57f9
-	guint32_to_str_buf(fv->value.uinteger, buf, 11);
Peter Hatina ed57f9
+	if (rtype == FTREPR_DISPLAY_HEX) {
Peter Hatina ed57f9
+                // This format perfectly fits into 11 bytes.
Peter Hatina ed57f9
+		g_sprintf(buf, "0x%08x", fv->value.uinteger);
Peter Hatina ed57f9
+	} else {
Peter Hatina ed57f9
+		guint32_to_str_buf(fv->value.uinteger, buf, 11);
Peter Hatina ed57f9
+	}
Peter Hatina ed57f9
 }
Peter Hatina ed57f9
 
Peter Hatina ed57f9
 static gboolean
Peter Hatina ed57f9
diff --git a/epan/ftypes/ftype-string.c b/epan/ftypes/ftype-string.c
Peter Hatina ed57f9
index 3893823..7e67292 100644
Peter Hatina ed57f9
--- a/epan/ftypes/ftype-string.c
Peter Hatina ed57f9
+++ b/epan/ftypes/ftype-string.c
Peter Hatina 05ceca
@@ -57,6 +57,7 @@ string_repr_len(fvalue_t *fv, ftrepr_t rtype)
Peter Hatina ed57f9
 {
Peter Hatina ed57f9
 	switch (rtype) {
Peter Hatina ed57f9
 		case FTREPR_DISPLAY:
Peter Hatina ed57f9
+		case FTREPR_DISPLAY_HEX:
Peter Hatina ed57f9
 			return (int)strlen(fv->value.string);
Peter Hatina ed57f9
 
Peter Hatina ed57f9
 		case FTREPR_DFILTER:
Peter Hatina 05ceca
@@ -71,6 +72,7 @@ string_to_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
Peter Hatina ed57f9
 {
Peter Hatina ed57f9
 	switch (rtype) {
Peter Hatina ed57f9
 		case FTREPR_DISPLAY:
Peter Hatina ed57f9
+		case FTREPR_DISPLAY_HEX:
Peter Hatina ed57f9
 			strcpy(buf, fv->value.string);
Peter Hatina ed57f9
 			return;
Peter Hatina ed57f9
 
Peter Hatina ed57f9
diff --git a/epan/ftypes/ftypes.h b/epan/ftypes/ftypes.h
Peter Hatina ed57f9
index 5304277..63b7d0a 100644
Peter Hatina ed57f9
--- a/epan/ftypes/ftypes.h
Peter Hatina ed57f9
+++ b/epan/ftypes/ftypes.h
Peter Hatina ed57f9
@@ -95,6 +95,7 @@ typedef struct _ftype_t ftype_t;
Peter Hatina ed57f9
 /* String representation types. */
Peter Hatina ed57f9
 enum ftrepr {
Peter Hatina ed57f9
 	FTREPR_DISPLAY,
Peter Hatina ed57f9
+        FTREPR_DISPLAY_HEX,
Peter Hatina ed57f9
 	FTREPR_DFILTER
Peter Hatina ed57f9
 };
Peter Hatina ed57f9
 
Peter Hatina ed57f9
diff --git a/epan/print.c b/epan/print.c
Peter Hatina ed57f9
index 5a7ed61..6dd2222 100644
Peter Hatina ed57f9
--- a/epan/print.c
Peter Hatina ed57f9
+++ b/epan/print.c
Peter Hatina 05ceca
@@ -1799,7 +1799,10 @@ gchar* get_node_field_value(field_info* fi, epan_dissect_t* edt)
Peter Hatina ed57f9
              * FT_NONE can be checked when using -T fields */
Peter Hatina ed57f9
             return g_strdup("1");
Peter Hatina ed57f9
         default:
Peter Hatina ed57f9
-            dfilter_string = fvalue_to_string_repr(&fi->value, FTREPR_DISPLAY, NULL);
Peter Hatina ed57f9
+            dfilter_string = fvalue_to_string_repr(
Peter Hatina ed57f9
+                &fi->value,
Peter Hatina ed57f9
+                fi->hfinfo->display == BASE_HEX ? FTREPR_DISPLAY_HEX : FTREPR_DISPLAY,
Peter Hatina ed57f9
+                NULL);
Peter Hatina ed57f9
             if (dfilter_string != NULL) {
Peter Hatina ed57f9
                 return dfilter_string;
Peter Hatina ed57f9
             } else {