const gchar *label, const value_string *vs);
static const char *bacapp_unknown_service_str = "unknown service"; /* Usage: no format specifiers */
-static const char *ASHRAE_Reserved_Fmt = "(%d) Reserved for Use by ASHRAE";
-static const char *Vendor_Proprietary_Fmt = "(%d) Vendor Proprietary Value";
+static const char ASHRAE_Reserved_Fmt[] = "(%d) Reserved for Use by ASHRAE";
+static const char Vendor_Proprietary_Fmt[] = "(%d) Vendor Proprietary Value";
static const value_string
BACnetTypeName[] = {
}
#endif
+static const char*
+val_to_split_str(guint32 val, guint32 split_val, const value_string *vs,
+ const char *fmt, const char *split_fmt)
+ G_GNUC_PRINTF(4, 0)
+ G_GNUC_PRINTF(5, 0);
/* Used when there are ranges of reserved and proprietary enumerations */
static const char*
return NULL;
}
+static const char *
+segment_name_format(const char *segment_name, const char *fmt)
+#if __GNUC__ >= 2
+ __attribute__ ((format_arg (2)))
+#endif
+;
+
+static const char *
+segment_name_format(const char *segment_name, const char *fmt)
+{
+ wmem_strbuf_t *strbuf;
+
+ strbuf = wmem_strbuf_new(wmem_packet_scope(), segment_name);
+ wmem_strbuf_append(strbuf, fmt);
+ return wmem_strbuf_get_str(strbuf);
+}
+
static gboolean
dissect_cia(tvbuff_t *tvb, int offset, int* pathpos, unsigned char segment_type,
gboolean generate, gboolean packed, packet_info *pinfo, proto_item *epath_item,
}
else
{
- strbuf = wmem_strbuf_new(wmem_packet_scope(), segment_name);
- wmem_strbuf_append(strbuf, ": 0x%02X");
-
- proto_item_append_text( epath_item, "%s", val_to_str( temp_data, vals , wmem_strbuf_get_str(strbuf)) );
+ proto_item_append_text( epath_item, "%s", val_to_str( temp_data, vals, segment_name_format( segment_name, ": 0x%02X" ) ) );
}
if (value != NULL)
strbuf = wmem_strbuf_new(wmem_packet_scope(), segment_name);
wmem_strbuf_append(strbuf, ": 0x%04X");
- proto_item_append_text( epath_item, "%s", val_to_str( temp_data, vals , wmem_strbuf_get_str(strbuf)) );
+ proto_item_append_text( epath_item, "%s", val_to_str( temp_data, vals, segment_name_format( segment_name, ": 0x%04X" ) ) );
}
if (value != NULL)
strbuf = wmem_strbuf_new(wmem_packet_scope(), segment_name);
wmem_strbuf_append(strbuf, ": 0x%08X");
- proto_item_append_text( epath_item, "%s", val_to_str( temp_data, vals , wmem_strbuf_get_str(strbuf)) );
+ proto_item_append_text( epath_item, "%s", val_to_str( temp_data, vals, segment_name_format( segment_name, ": 0x%08X" ) ) );
}
if (value != NULL)