aboutsummaryrefslogtreecommitdiffstats
path: root/epan/ftypes/ftype-guid.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2006-03-19 20:45:45 +0000
committerGuy Harris <guy@alum.mit.edu>2006-03-19 20:45:45 +0000
commit7db8eea5c68284a468924639eecc2ca8959225d0 (patch)
tree8615d9607a760ce4721551cd031660083076cd49 /epan/ftypes/ftype-guid.c
parent624db0dc41ab9bad1bacbd95462d6dffa4afba61 (diff)
Make the GUIDs in various data structures e_guid_t's rather than arrays
of 16 bytes. Use "sizeof" for the size of e_guid_t's, and use structure assignment to copy GUID values. Make functions such as append_h225ras_call() and new_h225ras_call() take pointers to e_guid_t's as arguments. Define GUID_LEN in epan/guid-utils.h and use it as the length of a GUID in a packet. (Note that "sizeof e_guid_t" is not guaranteed to be 16, although it is guaranteed to be the size of an e_guid_t.) When constructing a display filter that matches a GUID, use guid_to_str() to construct the string for the GUID. svn path=/trunk/; revision=17676
Diffstat (limited to 'epan/ftypes/ftype-guid.c')
-rw-r--r--epan/ftypes/ftype-guid.c165
1 files changed, 82 insertions, 83 deletions
diff --git a/epan/ftypes/ftype-guid.c b/epan/ftypes/ftype-guid.c
index 6c78fe9cea..08104453c8 100644
--- a/epan/ftypes/ftype-guid.c
+++ b/epan/ftypes/ftype-guid.c
@@ -30,139 +30,138 @@
#include <ftypes-int.h>
#include <epan/guid-utils.h>
-#define GUID_LEN 16
-
static void
guid_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
{
- fv->value.guid = *(e_guid_t*)value;
+ g_assert(!already_copied);
+ fv->value.guid = *(e_guid_t*)value;
}
static gpointer
value_get(fvalue_t *fv)
{
- return &(fv->value.guid);
+ return &(fv->value.guid);
}
static gboolean
get_guid(char *s, e_guid_t *guid)
{
- size_t i, n;
- char *p, digits[9];
- static const char fmt[] = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
-
- n = strlen(s);
- if (n != strlen(fmt))
- return FALSE;
- for (i=0; i<n; i++) {
- if (fmt[i] == 'X') {
- if (!isxdigit((guchar)s[i]))
- return FALSE;
- } else {
- if (s[i] != fmt[i])
- return FALSE;
- }
- }
-
- p = s;
- strncpy(digits, p, 8);
+ size_t i, n;
+ char *p, digits[9];
+ static const char fmt[] = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
+
+ n = strlen(s);
+ if (n != strlen(fmt))
+ return FALSE;
+ for (i=0; i<n; i++) {
+ if (fmt[i] == 'X') {
+ if (!isxdigit((guchar)s[i]))
+ return FALSE;
+ } else {
+ if (s[i] != fmt[i])
+ return FALSE;
+ }
+ }
+
+ p = s;
+ strncpy(digits, p, 8);
digits[8] = '\0';
- guid->data1 = strtoul(digits, NULL, 16);
+ guid->data1 = strtoul(digits, NULL, 16);
p += 9;
- strncpy(digits, p, 4);
+ strncpy(digits, p, 4);
digits[4] = '\0';
- guid->data2 = (guint16)strtoul(digits, NULL, 16);
+ guid->data2 = (guint16)strtoul(digits, NULL, 16);
p += 5;
- strncpy(digits, p, 4);
+ strncpy(digits, p, 4);
digits[4] = '\0';
- guid->data3 = (guint16)strtoul(digits, NULL, 16);
+ guid->data3 = (guint16)strtoul(digits, NULL, 16);
p += 5;
- for (i=0; i < sizeof(guid->data4); i++) {
- if (*p == '-') p++;
- digits[0] = *(p++);
- digits[1] = *(p++);
- digits[2] = '\0';
- guid->data4[i] = (guint8)strtoul(digits, NULL, 16);
- }
- return TRUE;
+ for (i=0; i < sizeof(guid->data4); i++) {
+ if (*p == '-') p++;
+ digits[0] = *(p++);
+ digits[1] = *(p++);
+ digits[2] = '\0';
+ guid->data4[i] = (guint8)strtoul(digits, NULL, 16);
+ }
+ return TRUE;
}
static gboolean
guid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
{
- e_guid_t guid;
+ e_guid_t guid;
- if (!get_guid(s, &guid)) {
- logfunc("\"%s\" is not a valid GUID.", s);
- return FALSE;
- }
+ if (!get_guid(s, &guid)) {
+ logfunc("\"%s\" is not a valid GUID.", s);
+ return FALSE;
+ }
- fv->value.guid = guid;
- return TRUE;
+ fv->value.guid = guid;
+ return TRUE;
}
static int
guid_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_)
{
- return GUID_STR_LEN;
+ return GUID_STR_LEN;
}
static void
guid_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
{
- guid_to_str_buf(&fv->value.guid, buf, GUID_STR_LEN);
+ guid_to_str_buf(&fv->value.guid, buf, GUID_STR_LEN);
}
static gboolean
cmp_eq(fvalue_t *a, fvalue_t *b)
{
- return memcmp(&a->value.guid, &b->value.guid, sizeof(e_guid_t)) == 0;
+ return memcmp(&a->value.guid, &b->value.guid, sizeof(e_guid_t)) == 0;
}
static gboolean
cmp_ne(fvalue_t *a, fvalue_t *b)
{
- return memcmp(&a->value.guid, &b->value.guid, sizeof(e_guid_t)) != 0;
+ return memcmp(&a->value.guid, &b->value.guid, sizeof(e_guid_t)) != 0;
}
void
ftype_register_guid(void)
{
- static ftype_t guid_type = {
- "GUID", /* name */
- "Globally Unique Identifier", /* pretty_name */
- GUID_LEN, /* wire_size */
- NULL, /* new_value */
- NULL, /* free_value */
- guid_from_unparsed, /* val_from_unparsed */
- NULL, /* val_from_string */
- guid_to_repr, /* val_to_string_repr */
- guid_repr_len, /* len_string_repr */
-
- guid_fvalue_set, /* set_value */
- NULL, /* set_value_integer */
- NULL, /* set_value_integer64 */
- NULL, /* set_value_floating */
-
- value_get, /* get_value */
- NULL, /* get_value_integer */
- NULL, /* get_value_integer64 */
- NULL, /* get_value_floating */
-
- cmp_eq,
- cmp_ne,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL, /* cmp_matches */
-
- NULL,
- NULL,
- };
-
- ftype_register(FT_GUID, &guid_type);
+ static ftype_t guid_type = {
+ "GUID", /* name */
+ "Globally Unique Identifier", /* pretty_name */
+ GUID_LEN, /* wire_size */
+ NULL, /* new_value */
+ NULL, /* free_value */
+ guid_from_unparsed, /* val_from_unparsed */
+ NULL, /* val_from_string */
+ guid_to_repr, /* val_to_string_repr */
+ guid_repr_len, /* len_string_repr */
+
+ guid_fvalue_set, /* set_value */
+ NULL, /* set_value_integer */
+ NULL, /* set_value_integer64 */
+ NULL, /* set_value_floating */
+
+ value_get, /* get_value */
+ NULL, /* get_value_integer */
+ NULL, /* get_value_integer64 */
+ NULL, /* get_value_floating */
+
+ cmp_eq,
+ cmp_ne,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL, /* cmp_matches */
+
+ NULL,
+ NULL,
+ };
+
+ ftype_register(FT_GUID, &guid_type);
}