diff options
author | Guy Harris <guy@alum.mit.edu> | 2014-01-15 01:05:03 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2014-01-15 01:05:03 +0000 |
commit | 61867d0b2f80971dc6927c50f61a4d2bb0420cad (patch) | |
tree | a4cfeca9c61d79a3372b925a99cf9606efcce64b /epan/ftypes | |
parent | 04b18f44c1af4da3c8c089c58bbc9bb2a1362bc1 (diff) | |
download | wireshark-61867d0b2f80971dc6927c50f61a4d2bb0420cad.tar.gz |
Eliminate fvalue_set() in favor of routines that take arguments
appropriate for particular FT_ types. This lets us do some more type
checking and lets us use const pointers when appropriate.
Constify a bunch of stuff, and don't cast away constness.
svn path=/trunk/; revision=54811
Diffstat (limited to 'epan/ftypes')
-rw-r--r-- | epan/ftypes/ftype-bytes.c | 149 | ||||
-rw-r--r-- | epan/ftypes/ftype-double.c | 16 | ||||
-rw-r--r-- | epan/ftypes/ftype-guid.c | 19 | ||||
-rw-r--r-- | epan/ftypes/ftype-integer.c | 172 | ||||
-rw-r--r-- | epan/ftypes/ftype-ipv4.c | 13 | ||||
-rw-r--r-- | epan/ftypes/ftype-ipv6.c | 15 | ||||
-rw-r--r-- | epan/ftypes/ftype-none.c | 7 | ||||
-rw-r--r-- | epan/ftypes/ftype-pcre.c | 16 | ||||
-rw-r--r-- | epan/ftypes/ftype-string.c | 32 | ||||
-rw-r--r-- | epan/ftypes/ftype-time.c | 32 | ||||
-rw-r--r-- | epan/ftypes/ftype-tvbuff.c | 17 | ||||
-rw-r--r-- | epan/ftypes/ftypes-int.h | 18 | ||||
-rw-r--r-- | epan/ftypes/ftypes.c | 47 | ||||
-rw-r--r-- | epan/ftypes/ftypes.h | 21 |
14 files changed, 396 insertions, 178 deletions
diff --git a/epan/ftypes/ftype-bytes.c b/epan/ftypes/ftype-bytes.c index 62fb62cbd3..74d96b0687 100644 --- a/epan/ftypes/ftype-bytes.c +++ b/epan/ftypes/ftype-bytes.c @@ -50,14 +50,12 @@ bytes_fvalue_free(fvalue_t *fv) static void -bytes_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied) +bytes_fvalue_set(fvalue_t *fv, GByteArray *value) { - g_assert(already_copied); - /* Free up the old value, if we have one */ bytes_fvalue_free(fv); - fv->value.bytes = (GByteArray *)value; + fv->value.bytes = value; } static int @@ -163,7 +161,7 @@ bytes_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf) } static void -common_fvalue_set(fvalue_t *fv, guint8* data, guint len) +common_fvalue_set(fvalue_t *fv, const guint8* data, guint len) { /* Free up the old value, if we have one */ bytes_fvalue_free(fv); @@ -173,46 +171,39 @@ common_fvalue_set(fvalue_t *fv, guint8* data, guint len) } static void -ax25_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied) +ax25_fvalue_set(fvalue_t *fv, const guint8 *value) { - g_assert(!already_copied); - common_fvalue_set(fv, (guint8 *)value, FT_AX25_ADDR_LEN); + common_fvalue_set(fv, value, FT_AX25_ADDR_LEN); } static void -vines_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied) +vines_fvalue_set(fvalue_t *fv, const guint8 *value) { - g_assert(!already_copied); - common_fvalue_set(fv, (guint8 *)value, FT_VINES_ADDR_LEN); + common_fvalue_set(fv, value, FT_VINES_ADDR_LEN); } static void -ether_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied) +ether_fvalue_set(fvalue_t *fv, const guint8 *value) { - g_assert(!already_copied); - common_fvalue_set(fv, (guint8*)value, FT_ETHER_LEN); + common_fvalue_set(fv, value, FT_ETHER_LEN); } static void -oid_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied) +oid_fvalue_set(fvalue_t *fv, GByteArray *value) { - g_assert(already_copied); - /* Free up the old value, if we have one */ bytes_fvalue_free(fv); - fv->value.bytes = (GByteArray *)value; + fv->value.bytes = value; } static void -system_id_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied) +system_id_fvalue_set(fvalue_t *fv, GByteArray *value) { - g_assert(already_copied); - /* Free up the old value, if we have one */ bytes_fvalue_free(fv); - fv->value.bytes = (GByteArray *)value; + fv->value.bytes = value; } static gpointer @@ -222,7 +213,7 @@ value_get(fvalue_t *fv) } static gboolean -bytes_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_) +bytes_from_string(fvalue_t *fv, const char *s, LogFunc logfunc _U_) { GByteArray *bytes; @@ -238,7 +229,7 @@ bytes_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_) } static gboolean -bytes_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +bytes_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { GByteArray *bytes; gboolean res; @@ -263,7 +254,7 @@ bytes_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, Log } static gboolean -ax25_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc) +ax25_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc) { /* * Don't log a message if this fails; we'll try looking it @@ -321,7 +312,7 @@ ax25_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc } static gboolean -vines_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc) +vines_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc) { /* * Don't log a message if this fails; we'll try looking it @@ -350,7 +341,7 @@ vines_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc } static gboolean -ether_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc) +ether_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc) { guint8 *mac; @@ -381,12 +372,12 @@ ether_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc return FALSE; } - ether_fvalue_set(fv, mac, FALSE); + ether_fvalue_set(fv, mac); return TRUE; } static gboolean -oid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +oid_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { GByteArray *bytes; gboolean res; @@ -420,7 +411,7 @@ oid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFu } static gboolean -rel_oid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +rel_oid_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { GByteArray *bytes; gboolean res; @@ -448,7 +439,7 @@ rel_oid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, L } static gboolean -system_id_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +system_id_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { /* * Don't log a message if this fails; we'll try looking it @@ -677,28 +668,33 @@ ftype_register_bytes(void) { static ftype_t bytes_type = { - FT_BYTES, /* ftype */ - "FT_BYTES", /* name */ + FT_BYTES, /* ftype */ + "FT_BYTES", /* name */ "Sequence of bytes", /* pretty_name */ - 0, /* wire_size */ - bytes_fvalue_new, /* new_value */ - bytes_fvalue_free, /* free_value */ + 0, /* wire_size */ + bytes_fvalue_new, /* new_value */ + bytes_fvalue_free, /* free_value */ bytes_from_unparsed, /* val_from_unparsed */ - bytes_from_string, /* val_from_string */ - bytes_to_repr, /* val_to_string_repr */ - bytes_repr_len, /* len_string_repr */ - - bytes_fvalue_set, /* set_value */ - NULL, /* set_value_uinteger */ - NULL, /* set_value_sinteger */ - NULL, /* set_value_integer64 */ - NULL, /* set_value_floating */ - - value_get, /* get_value */ - NULL, /* get_value_uinteger */ - NULL, /* get_value_sinteger */ - NULL, /* get_value_integer64 */ - NULL, /* get_value_floating */ + bytes_from_string, /* val_from_string */ + bytes_to_repr, /* val_to_string_repr */ + bytes_repr_len, /* len_string_repr */ + + bytes_fvalue_set, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ + NULL, /* set_value_uinteger */ + NULL, /* set_value_sinteger */ + NULL, /* set_value_integer64 */ + NULL, /* set_value_floating */ + + value_get, /* get_value */ + NULL, /* get_value_uinteger */ + NULL, /* get_value_sinteger */ + NULL, /* get_value_integer64 */ + NULL, /* get_value_floating */ cmp_eq, cmp_ne, @@ -726,7 +722,12 @@ ftype_register_bytes(void) bytes_to_repr, /* val_to_string_repr */ bytes_repr_len, /* len_string_repr */ - bytes_fvalue_set, /* set_value */ + bytes_fvalue_set, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ @@ -764,7 +765,12 @@ ftype_register_bytes(void) bytes_to_repr, /* val_to_string_repr */ bytes_repr_len, /* len_string_repr */ - ax25_fvalue_set, /* set_value */ + NULL, /* set_value_byte_array */ + ax25_fvalue_set, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_integer */ NULL, /* set_value_integer64 */ @@ -797,12 +803,17 @@ ftype_register_bytes(void) FT_VINES_ADDR_LEN, /* wire_size */ bytes_fvalue_new, /* new_value */ bytes_fvalue_free, /* free_value */ - vines_from_unparsed, /* val_from_unparsed */ + vines_from_unparsed, /* val_from_unparsed */ NULL, /* val_from_string */ bytes_to_repr, /* val_to_string_repr */ bytes_repr_len, /* len_string_repr */ - vines_fvalue_set, /* set_value */ + NULL, /* set_value_byte_array */ + vines_fvalue_set, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_integer */ NULL, /* set_value_integer64 */ @@ -840,7 +851,12 @@ ftype_register_bytes(void) bytes_to_repr, /* val_to_string_repr */ bytes_repr_len, /* len_string_repr */ - ether_fvalue_set, /* set_value */ + NULL, /* set_value_byte_array */ + ether_fvalue_set, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ @@ -878,7 +894,12 @@ ftype_register_bytes(void) oid_to_repr, /* val_to_string_repr */ oid_repr_len, /* len_string_repr */ - oid_fvalue_set, /* set_value */ + oid_fvalue_set, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ @@ -916,7 +937,12 @@ ftype_register_bytes(void) rel_oid_to_repr, /* val_to_string_repr */ rel_oid_repr_len, /* len_string_repr */ - oid_fvalue_set, /* set_value (same as full oid) */ + oid_fvalue_set, /* set_value_byte_array (same as full oid) */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ @@ -954,7 +980,12 @@ ftype_register_bytes(void) system_id_to_repr, /* val_to_string_repr */ bytes_repr_len, /* len_string_repr */ - system_id_fvalue_set, /* set_value */ + system_id_fvalue_set, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ diff --git a/epan/ftypes/ftype-double.c b/epan/ftypes/ftype-double.c index 6c81838cb9..7df01003bb 100644 --- a/epan/ftypes/ftype-double.c +++ b/epan/ftypes/ftype-double.c @@ -49,7 +49,7 @@ value_get_floating(fvalue_t *fv) } static gboolean -val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { char *endptr = NULL; @@ -166,7 +166,12 @@ ftype_register_double(void) float_val_to_repr, /* val_to_string_repr */ float_val_repr_len, /* len_string_repr */ - NULL, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_snteger */ NULL, /* set_value_integer64 */ @@ -204,7 +209,12 @@ ftype_register_double(void) double_val_to_repr, /* val_to_string_repr */ double_val_repr_len, /* len_string_repr */ - NULL, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ diff --git a/epan/ftypes/ftype-guid.c b/epan/ftypes/ftype-guid.c index 191694bee6..205ffc453d 100644 --- a/epan/ftypes/ftype-guid.c +++ b/epan/ftypes/ftype-guid.c @@ -31,10 +31,9 @@ #include <epan/to_str.h> static void -guid_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied) +guid_fvalue_set_guid(fvalue_t *fv, const e_guid_t *value) { - g_assert(!already_copied); - fv->value.guid = *(e_guid_t*)value; + fv->value.guid = *value; } static gpointer @@ -44,10 +43,11 @@ value_get(fvalue_t *fv) } static gboolean -get_guid(char *s, e_guid_t *guid) +get_guid(const char *s, e_guid_t *guid) { size_t i, n; - char *p, digits[9]; + const char *p; + char digits[9]; static const char fmt[] = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"; n = strlen(s); @@ -87,7 +87,7 @@ get_guid(char *s, e_guid_t *guid) } static gboolean -guid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +guid_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { e_guid_t guid; @@ -140,7 +140,12 @@ ftype_register_guid(void) guid_to_repr, /* val_to_string_repr */ guid_repr_len, /* len_string_repr */ - guid_fvalue_set, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + guid_fvalue_set_guid, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ diff --git a/epan/ftypes/ftype-integer.c b/epan/ftypes/ftype-integer.c index be401a0b3a..aeaf750710 100644 --- a/epan/ftypes/ftype-integer.c +++ b/epan/ftypes/ftype-integer.c @@ -64,7 +64,7 @@ get_sinteger(fvalue_t *fv) static gboolean -uint_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc, +uint_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc, guint32 max) { unsigned long value; @@ -117,31 +117,31 @@ uint_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogF } static gboolean -uint32_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc) +uint32_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc) { return uint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXUINT32); } static gboolean -uint24_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc) +uint24_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc) { return uint_from_unparsed (fv, s, allow_partial_value, logfunc, 0xFFFFFF); } static gboolean -uint16_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc) +uint16_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc) { return uint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXUINT16); } static gboolean -uint8_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc) +uint8_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc) { return uint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXUINT8); } static gboolean -sint_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc, +sint_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc, gint32 max, gint32 min) { long value; @@ -202,25 +202,25 @@ sint_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogF } static gboolean -sint32_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc) +sint32_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc) { return sint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXINT32, G_MININT32); } static gboolean -sint24_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc) +sint24_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc) { return sint_from_unparsed (fv, s, allow_partial_value, logfunc, 0x7FFFFF, -0x800000); } static gboolean -sint16_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc) +sint16_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc) { return sint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXINT16, G_MININT16); } static gboolean -sint8_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc) +sint8_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc) { return sint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXINT8, G_MININT8); } @@ -258,7 +258,7 @@ uinteger_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf) } static gboolean -ipxnet_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +ipxnet_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { guint32 val; gboolean known; @@ -379,7 +379,7 @@ get_integer64(fvalue_t *fv) } static gboolean -uint64_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +uint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { guint64 value; char *endptr; @@ -424,7 +424,7 @@ uint64_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, Lo } static gboolean -sint64_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +sint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { gint64 value; char *endptr; @@ -613,7 +613,7 @@ bool_ne(const fvalue_t *a, const fvalue_t *b) /* EUI64-specific */ static gboolean -eui64_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +eui64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { /* @@ -664,7 +664,12 @@ ftype_register_integers(void) uinteger_to_repr, /* val_to_string_repr */ uinteger_repr_len, /* len_string_repr */ - NULL, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ set_uinteger, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ @@ -701,8 +706,13 @@ ftype_register_integers(void) uinteger_to_repr, /* val_to_string_repr */ uinteger_repr_len, /* len_string_repr */ - NULL, /* set_value */ - set_uinteger, /* set_value_uinteger */ + NULL, /* set_value_bytes */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ + set_uinteger, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ NULL, /* set_value_floating */ @@ -738,8 +748,13 @@ ftype_register_integers(void) uinteger_to_repr, /* val_to_string_repr */ uinteger_repr_len, /* len_string_repr */ - NULL, /* set_value */ - set_uinteger, /* set_value_integer */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ + set_uinteger, /* set_value_integer */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ NULL, /* set_value_floating */ @@ -775,14 +790,19 @@ ftype_register_integers(void) uinteger_to_repr, /* val_to_string_repr */ uinteger_repr_len, /* len_string_repr */ - NULL, /* set_value */ - set_uinteger, /* set_value_uinteger */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ + set_uinteger, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ NULL, /* set_value_floating */ NULL, /* get_value */ - get_uinteger, /* get_value_integer */ + get_uinteger, /* get_value_integer */ NULL, /* get_value_sinteger */ NULL, /* get_value_integer64 */ NULL, /* get_value_floating */ @@ -812,16 +832,21 @@ ftype_register_integers(void) uinteger64_to_repr, /* val_to_string_repr */ uinteger64_repr_len, /* len_string_repr */ - NULL, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ - set_integer64, /* set_value_integer64 */ + set_integer64, /* set_value_integer64 */ NULL, /* set_value_floating */ NULL, /* get_value */ NULL, /* get_value_uinteger */ NULL, /* get_value_sinteger */ - get_integer64, /* get_value_integer64 */ + get_integer64, /* get_value_integer64 */ NULL, /* get_value_floating */ cmp_eq64, @@ -849,9 +874,14 @@ ftype_register_integers(void) integer_to_repr, /* val_to_string_repr */ integer_repr_len, /* len_string_repr */ - NULL, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ - set_sinteger, /* set_value_sinteger */ + set_sinteger, /* set_value_sinteger */ NULL, /* set_value_integer64 */ NULL, /* set_value_floating */ @@ -886,15 +916,20 @@ ftype_register_integers(void) integer_to_repr, /* val_to_string_repr */ integer_repr_len, /* len_string_repr */ - NULL, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ - set_sinteger, /* set_value_sinteger */ + set_sinteger, /* set_value_sinteger */ NULL, /* set_value_integer64 */ NULL, /* set_value_floating */ NULL, /* get_value */ NULL, /* get_value_uinteger */ - get_sinteger, /* get_value_sinteger */ + get_sinteger, /* get_value_sinteger */ NULL, /* get_value_integer64 */ NULL, /* get_value_floating */ @@ -923,9 +958,14 @@ ftype_register_integers(void) integer_to_repr, /* val_to_string_repr */ integer_repr_len, /* len_string_repr */ - NULL, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ - set_sinteger, /* set_value_sinteger */ + set_sinteger, /* set_value_sinteger */ NULL, /* set_value_integer64 */ NULL, /* set_value_floating */ @@ -960,15 +1000,20 @@ ftype_register_integers(void) integer_to_repr, /* val_to_string_repr */ integer_repr_len, /* len_string_repr */ - NULL, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ - set_sinteger, /* set_value_sinteger */ + set_sinteger, /* set_value_sinteger */ NULL, /* set_value_integer64 */ NULL, /* set_value_floating */ NULL, /* get_value */ NULL, /* get_value_uinteger */ - get_sinteger, /* get_value_sinteger */ + get_sinteger, /* get_value_sinteger */ NULL, /* get_value_integer64 */ NULL, /* get_value_floating */ @@ -997,16 +1042,21 @@ ftype_register_integers(void) integer64_to_repr, /* val_to_string_repr */ integer64_repr_len, /* len_string_repr */ - NULL, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ - set_integer64, /* set_value_integer64 */ + set_integer64, /* set_value_integer64 */ NULL, /* set_value_floating */ NULL, /* get_value */ NULL, /* get_value_uinteger */ NULL, /* get_value_sinteger */ - get_integer64, /* get_value_integer64 */ + get_integer64, /* get_value_integer64 */ NULL, /* get_value_floating */ cmp_eq64, @@ -1034,14 +1084,19 @@ ftype_register_integers(void) boolean_to_repr, /* val_to_string_repr */ boolean_repr_len, /* len_string_repr */ - NULL, /* set_value */ - set_uinteger, /* set_value_uinteger */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ + set_uinteger, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ NULL, /* set_value_floating */ NULL, /* get_value */ - get_uinteger, /* get_value_uinteger */ + get_uinteger, /* get_value_uinteger */ NULL, /* get_value_sinteger */ NULL, /* get_value_integer64 */ NULL, /* get_value_floating */ @@ -1072,14 +1127,19 @@ ftype_register_integers(void) ipxnet_to_repr, /* val_to_string_repr */ ipxnet_repr_len, /* len_string_repr */ - NULL, /* set_value */ - set_uinteger, /* set_value_uinteger */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ + set_uinteger, /* set_value_uinteger */ NULL, /* get_value_sinteger */ NULL, /* set_value_integer64 */ NULL, /* set_value_floating */ NULL, /* get_value */ - get_uinteger, /* get_value_uinteger */ + get_uinteger, /* get_value_uinteger */ NULL, /* get_value_sinteger */ NULL, /* get_value_integer64 */ NULL, /* get_value_floating */ @@ -1110,14 +1170,19 @@ ftype_register_integers(void) uinteger_to_repr, /* val_to_string_repr */ uinteger_repr_len, /* len_string_repr */ - NULL, /* set_value */ - set_uinteger, /* set_value_uinteger */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ + set_uinteger, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ NULL, /* set_value_floating */ NULL, /* get_value */ - get_uinteger, /* get_value_uinteger */ + get_uinteger, /* get_value_uinteger */ NULL, /* get_value_sinteger */ NULL, /* get_value_integer64 */ NULL, /* get_value_floating */ @@ -1145,10 +1210,15 @@ ftype_register_integers(void) NULL, /* free_value */ eui64_from_unparsed, /* val_from_unparsed */ NULL, /* val_from_string */ - eui64_to_repr, /* val_to_string_repr */ - eui64_repr_len, /* len_string_repr */ - - NULL, /* set_value */ + eui64_to_repr, /* val_to_string_repr */ + eui64_repr_len, /* len_string_repr */ + + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ set_integer64, /* set_value_integer64 */ diff --git a/epan/ftypes/ftype-ipv4.c b/epan/ftypes/ftype-ipv4.c index f3d59c4bc8..b8f70ce91a 100644 --- a/epan/ftypes/ftype-ipv4.c +++ b/epan/ftypes/ftype-ipv4.c @@ -44,13 +44,13 @@ value_get(fvalue_t *fv) } static gboolean -val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { guint32 addr; unsigned int nmask_bits; - char *has_slash; - char *net_str, *addr_str; + const char *has_slash; + const char *net_str, *addr_str; fvalue_t *nmask_fvalue; /* Look for CIDR: Is there a single slash in the string? */ @@ -178,7 +178,12 @@ ftype_register_ipv4(void) val_to_repr, /* val_to_string_repr */ val_repr_len, /* len_string_repr */ - NULL, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ set_uinteger, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ diff --git a/epan/ftypes/ftype-ipv6.c b/epan/ftypes/ftype-ipv6.c index 00890b6199..47a6624319 100644 --- a/epan/ftypes/ftype-ipv6.c +++ b/epan/ftypes/ftype-ipv6.c @@ -30,18 +30,16 @@ #include <epan/emem.h> static void -ipv6_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied) +ipv6_fvalue_set(fvalue_t *fv, const guint8 *value) { - g_assert(!already_copied); - memcpy(fv->value.ipv6.addr.bytes, value, FT_IPv6_LEN); fv->value.ipv6.prefix = 128; } static gboolean -ipv6_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +ipv6_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { - char *has_slash, *addr_str; + const char *has_slash, *addr_str; unsigned int nmask_bits; fvalue_t *nmask_fvalue; @@ -227,7 +225,12 @@ ftype_register_ipv6(void) ipv6_to_repr, /* val_to_string_repr */ ipv6_repr_len, /* len_string_repr */ - ipv6_fvalue_set, /* set_value */ + NULL, /* set_value_byte_array */ + ipv6_fvalue_set, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ diff --git a/epan/ftypes/ftype-none.c b/epan/ftypes/ftype-none.c index 956d7e9259..6359fd9929 100644 --- a/epan/ftypes/ftype-none.c +++ b/epan/ftypes/ftype-none.c @@ -41,7 +41,12 @@ ftype_register_none(void) NULL, /* val_to_string_repr */ NULL, /* len_string_repr */ - NULL, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ diff --git a/epan/ftypes/ftype-pcre.c b/epan/ftypes/ftype-pcre.c index bce9616d7e..ac2d106cd1 100644 --- a/epan/ftypes/ftype-pcre.c +++ b/epan/ftypes/ftype-pcre.c @@ -75,7 +75,7 @@ raw_flag_needed(const gchar *pattern) /* Generate a FT_PCRE from a parsed string pattern. * Uses the specified logfunc() to report errors. */ static gboolean -val_from_string(fvalue_t *fv, char *pattern, LogFunc logfunc) +val_from_string(fvalue_t *fv, const char *pattern, LogFunc logfunc) { GError *regex_error = NULL; GRegexCompileFlags cflags = G_REGEX_OPTIMIZE; @@ -113,7 +113,7 @@ val_from_string(fvalue_t *fv, char *pattern, LogFunc logfunc) /* Generate a FT_PCRE from an unparsed string pattern. * Uses the specified logfunc() to report errors. */ static gboolean -val_from_unparsed(fvalue_t *fv, char *pattern, gboolean allow_partial_value _U_, LogFunc logfunc) +val_from_unparsed(fvalue_t *fv, const char *pattern, gboolean allow_partial_value _U_, LogFunc logfunc) { g_assert(! allow_partial_value); @@ -137,13 +137,12 @@ gregex_to_repr(fvalue_t *fv, ftrepr_t rtype, char *buf) /* BEHOLD - value contains the string representation of the regular expression, * and we want to store the compiled PCRE RE object into the value. */ static void -gregex_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied) +gregex_fvalue_set(fvalue_t *fv, const char *value) { g_assert(value != NULL); /* Free up the old value, if we have one */ gregex_fvalue_free(fv); - g_assert(! already_copied); - val_from_unparsed(fv, (char *)value, FALSE, NULL); + val_from_unparsed(fv, value, FALSE, NULL); } static gpointer @@ -167,7 +166,12 @@ ftype_register_pcre(void) gregex_to_repr, /* val_to_string_repr */ gregex_repr_len, /* len_string_repr */ - gregex_fvalue_set, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + gregex_fvalue_set, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ diff --git a/epan/ftypes/ftype-string.c b/epan/ftypes/ftype-string.c index db0c627960..03bb1647a5 100644 --- a/epan/ftypes/ftype-string.c +++ b/epan/ftypes/ftype-string.c @@ -45,17 +45,14 @@ string_fvalue_free(fvalue_t *fv) } static void -string_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied) +string_fvalue_set_string(fvalue_t *fv, const gchar *value) { DISSECTOR_ASSERT(value != NULL); /* Free up the old value, if we have one */ string_fvalue_free(fv); - if (already_copied) - fv->value.string = (gchar *)value; /* must be g_ allocated */ - else - fv->value.string = (gchar *)g_strdup((const gchar *)value); + fv->value.string = (gchar *)g_strdup(value); } static int @@ -95,7 +92,7 @@ value_get(fvalue_t *fv) } static gboolean -val_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_) +val_from_string(fvalue_t *fv, const char *s, LogFunc logfunc _U_) { /* Free up the old value, if we have one */ string_fvalue_free(fv); @@ -105,7 +102,7 @@ val_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_) } static gboolean -val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { fvalue_t *fv_bytes; @@ -247,7 +244,12 @@ ftype_register_string(void) string_to_repr, /* val_to_string_repr */ string_repr_len, /* len_string_repr */ - string_fvalue_set, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + string_fvalue_set_string, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ @@ -284,7 +286,12 @@ ftype_register_string(void) string_to_repr, /* val_to_string_repr */ string_repr_len, /* len_string_repr */ - string_fvalue_set, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + string_fvalue_set_string, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ @@ -321,7 +328,12 @@ ftype_register_string(void) string_to_repr, /* val_to_string_repr */ string_repr_len, /* len_string_repr */ - string_fvalue_set, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + string_fvalue_set_string, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ diff --git a/epan/ftypes/ftype-time.c b/epan/ftypes/ftype-time.c index 16a946f646..e0493535ec 100644 --- a/epan/ftypes/ftype-time.c +++ b/epan/ftypes/ftype-time.c @@ -113,11 +113,11 @@ cmp_le(const fvalue_t *a, const fvalue_t *b) * Returns true on success, false on failure. */ static gboolean -get_nsecs(char *startp, int *nsecs) +get_nsecs(const char *startp, int *nsecs) { int ndigits; int scale; - char *p; + const char *p; int val; int digit; int i; @@ -171,9 +171,10 @@ get_nsecs(char *startp, int *nsecs) } static gboolean -relative_val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +relative_val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { - char *curptr, *endptr; + const char *curptr; + char *endptr; gboolean negative = FALSE; curptr = s; @@ -236,7 +237,7 @@ fail: static gboolean -absolute_val_from_string(fvalue_t *fv, char *s, LogFunc logfunc) +absolute_val_from_string(fvalue_t *fv, const char *s, LogFunc logfunc) { struct tm tm; char *curptr; @@ -300,7 +301,7 @@ fail: } static gboolean -absolute_val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +absolute_val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { return absolute_val_from_string(fv, s, logfunc); } @@ -313,10 +314,9 @@ time_fvalue_new(fvalue_t *fv) } static void -time_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied) +time_fvalue_set(fvalue_t *fv, const nstime_t *value) { - g_assert(!already_copied); - memcpy(&(fv->value.time), value, sizeof(nstime_t)); + fv->value.time = *value; } static gpointer @@ -374,7 +374,12 @@ ftype_register_time(void) absolute_val_to_repr, /* val_to_string_repr */ absolute_val_repr_len, /* len_string_repr */ - time_fvalue_set, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + time_fvalue_set, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ @@ -411,7 +416,12 @@ ftype_register_time(void) relative_val_to_repr, /* val_to_string_repr */ relative_val_repr_len, /* len_string_repr */ - time_fvalue_set, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + time_fvalue_set, /* set_value_time */ + NULL, /* set_value_string */ + NULL, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ diff --git a/epan/ftypes/ftype-tvbuff.c b/epan/ftypes/ftype-tvbuff.c index e7bacae062..83fa643f01 100644 --- a/epan/ftypes/ftype-tvbuff.c +++ b/epan/ftypes/ftype-tvbuff.c @@ -48,14 +48,12 @@ value_free(fvalue_t *fv) } static void -value_set(fvalue_t *fv, gpointer value, gboolean already_copied) +value_set(fvalue_t *fv, tvbuff_t *value) { - g_assert(already_copied); - /* Free up the old value, if we have one */ value_free(fv); - fv->value.tvb = (tvbuff_t *)value; + fv->value.tvb = value; } static void @@ -65,7 +63,7 @@ free_tvb_data(void *data) } static gboolean -val_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_) +val_from_string(fvalue_t *fv, const char *s, LogFunc logfunc _U_) { tvbuff_t *new_tvb; guint8 *private_data; @@ -89,7 +87,7 @@ val_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_) } static gboolean -val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc) +val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc) { fvalue_t *fv_bytes; tvbuff_t *new_tvb; @@ -429,7 +427,12 @@ ftype_register_tvbuff(void) val_to_repr, /* val_to_string_repr */ val_repr_len, /* len_string_repr */ - value_set, /* set_value */ + NULL, /* set_value_byte_array */ + NULL, /* set_value_bytes */ + NULL, /* set_value_guid */ + NULL, /* set_value_time */ + NULL, /* set_value_string */ + value_set, /* set_value_tvbuff */ NULL, /* set_value_uinteger */ NULL, /* set_value_sinteger */ NULL, /* set_value_integer64 */ diff --git a/epan/ftypes/ftypes-int.h b/epan/ftypes/ftypes-int.h index cdc19c546f..fb4ae31a36 100644 --- a/epan/ftypes/ftypes-int.h +++ b/epan/ftypes/ftypes-int.h @@ -49,12 +49,17 @@ void ftype_register_pcre(void); typedef void (*FvalueNewFunc)(fvalue_t*); typedef void (*FvalueFreeFunc)(fvalue_t*); -typedef gboolean (*FvalueFromUnparsed)(fvalue_t*, char*, gboolean, LogFunc); -typedef gboolean (*FvalueFromString)(fvalue_t*, char*, LogFunc); +typedef gboolean (*FvalueFromUnparsed)(fvalue_t*, const char*, gboolean, LogFunc); +typedef gboolean (*FvalueFromString)(fvalue_t*, const char*, LogFunc); typedef void (*FvalueToStringRepr)(fvalue_t*, ftrepr_t, char*volatile); typedef int (*FvalueStringReprLen)(fvalue_t*, ftrepr_t); -typedef void (*FvalueSetFunc)(fvalue_t*, gpointer, gboolean); +typedef void (*FvalueSetByteArrayFunc)(fvalue_t*, GByteArray *); +typedef void (*FvalueSetBytesFunc)(fvalue_t*, const guint8 *); +typedef void (*FvalueSetGuidFunc)(fvalue_t*, const e_guid_t *); +typedef void (*FvalueSetTimeFunc)(fvalue_t*, const nstime_t *); +typedef void (*FvalueSetStringFunc)(fvalue_t*, const gchar *value); +typedef void (*FvalueSetTvbuffFunc)(fvalue_t*, tvbuff_t *value); typedef void (*FvalueSetUnsignedIntegerFunc)(fvalue_t*, guint32); typedef void (*FvalueSetSignedIntegerFunc)(fvalue_t*, gint32); typedef void (*FvalueSetInteger64Func)(fvalue_t*, guint64); @@ -84,7 +89,12 @@ struct _ftype_t { FvalueStringReprLen len_string_repr; /* could be union */ - FvalueSetFunc set_value; + FvalueSetByteArrayFunc set_value_byte_array; + FvalueSetBytesFunc set_value_bytes; + FvalueSetGuidFunc set_value_guid; + FvalueSetTimeFunc set_value_time; + FvalueSetStringFunc set_value_string; + FvalueSetTvbuffFunc set_value_tvbuff; FvalueSetUnsignedIntegerFunc set_value_uinteger; FvalueSetSignedIntegerFunc set_value_sinteger; FvalueSetInteger64Func set_value_integer64; diff --git a/epan/ftypes/ftypes.c b/epan/ftypes/ftypes.c index a409c9ce1e..2ea1428746 100644 --- a/epan/ftypes/ftypes.c +++ b/epan/ftypes/ftypes.c @@ -227,7 +227,7 @@ fvalue_init(fvalue_t *fv, ftenum_t ftype) } fvalue_t* -fvalue_from_unparsed(ftenum_t ftype, char *s, gboolean allow_partial_value, LogFunc logfunc) +fvalue_from_unparsed(ftenum_t ftype, const char *s, gboolean allow_partial_value, LogFunc logfunc) { fvalue_t *fv; @@ -246,7 +246,7 @@ fvalue_from_unparsed(ftenum_t ftype, char *s, gboolean allow_partial_value, LogF } fvalue_t* -fvalue_from_string(ftenum_t ftype, char *s, LogFunc logfunc) +fvalue_from_string(ftenum_t ftype, const char *s, LogFunc logfunc) { fvalue_t *fv; @@ -408,16 +408,51 @@ fvalue_slice(fvalue_t *fv, drange_t *d_range) drange_foreach_drange_node(d_range, slice_func, &slice_data); new_fv = fvalue_new(FT_BYTES); - fvalue_set(new_fv, slice_data.bytes, TRUE); + fvalue_set_byte_array(new_fv, slice_data.bytes); return new_fv; } void -fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied) +fvalue_set_byte_array(fvalue_t *fv, GByteArray *value) { - g_assert(fv->ftype->set_value); - fv->ftype->set_value(fv, value, already_copied); + g_assert(fv->ftype->set_value_byte_array); + fv->ftype->set_value_byte_array(fv, value); +} + +void +fvalue_set_bytes(fvalue_t *fv, const guint8 *value) +{ + g_assert(fv->ftype->set_value_bytes); + fv->ftype->set_value_bytes(fv, value); +} + +void +fvalue_set_guid(fvalue_t *fv, const e_guid_t *value) +{ + g_assert(fv->ftype->set_value_guid); + fv->ftype->set_value_guid(fv, value); +} + +void +fvalue_set_time(fvalue_t *fv, const nstime_t *value) +{ + g_assert(fv->ftype->set_value_time); + fv->ftype->set_value_time(fv, value); +} + +void +fvalue_set_string(fvalue_t *fv, const gchar *value) +{ + g_assert(fv->ftype->set_value_string); + fv->ftype->set_value_string(fv, value); +} + +void +fvalue_set_tvbuff(fvalue_t *fv, tvbuff_t *value) +{ + g_assert(fv->ftype->set_value_tvbuff); + fv->ftype->set_value_tvbuff(fv, value); } void diff --git a/epan/ftypes/ftypes.h b/epan/ftypes/ftypes.h index 05bd42513e..dcfeb0b3f3 100644 --- a/epan/ftypes/ftypes.h +++ b/epan/ftypes/ftypes.h @@ -208,10 +208,10 @@ fvalue_init(fvalue_t *fv, ftenum_t ftype); WS_DLL_PUBLIC fvalue_t* -fvalue_from_unparsed(ftenum_t ftype, char *s, gboolean allow_partial_value, LogFunc logfunc); +fvalue_from_unparsed(ftenum_t ftype, const char *s, gboolean allow_partial_value, LogFunc logfunc); fvalue_t* -fvalue_from_string(ftenum_t ftype, char *s, LogFunc logfunc); +fvalue_from_string(ftenum_t ftype, const char *s, LogFunc logfunc); /* Returns the length of the string required to hold the * string representation of the the field value. @@ -243,7 +243,22 @@ const char* fvalue_type_name(fvalue_t *fv); void -fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied); +fvalue_set_byte_array(fvalue_t *fv, GByteArray *value); + +void +fvalue_set_bytes(fvalue_t *fv, const guint8 *value); + +void +fvalue_set_guid(fvalue_t *fv, const e_guid_t *value); + +void +fvalue_set_time(fvalue_t *fv, const nstime_t *value); + +void +fvalue_set_string(fvalue_t *fv, const gchar *value); + +void +fvalue_set_tvbuff(fvalue_t *fv, tvbuff_t *value); void fvalue_set_uinteger(fvalue_t *fv, guint32 value); |