diff options
author | Bill Meier <wmeier@newsguy.com> | 2010-04-03 19:20:07 +0000 |
---|---|---|
committer | Bill Meier <wmeier@newsguy.com> | 2010-04-03 19:20:07 +0000 |
commit | 0d372283b3e92aa04943e31f3aea9a8a86d05483 (patch) | |
tree | 17853cb511216a618920057644d761c88552e033 | |
parent | 6812b68eb1973d4a439cc1342890353982a42a57 (diff) |
(Trivial): indentation & whitespace cleanup.
svn path=/trunk/; revision=32366
-rw-r--r-- | epan/dissectors/packet-rtps.c | 12 | ||||
-rw-r--r-- | epan/dissectors/packet-rtps2.c | 14 | ||||
-rw-r--r-- | epan/tvbparse.c | 813 | ||||
-rw-r--r-- | epan/tvbparse.h | 78 |
4 files changed, 461 insertions, 456 deletions
diff --git a/epan/dissectors/packet-rtps.c b/epan/dissectors/packet-rtps.c index 0b95307fd5..ca7ec42e77 100644 --- a/epan/dissectors/packet-rtps.c +++ b/epan/dissectors/packet-rtps.c @@ -54,12 +54,12 @@ # include "config.h" #endif -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <glib.h> -#include <epan/packet.h> -#include <epan/addr_resolv.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <glib.h> +#include <epan/packet.h> +#include <epan/addr_resolv.h> #include "packet-rtps.h" diff --git a/epan/dissectors/packet-rtps2.c b/epan/dissectors/packet-rtps2.c index 2b52004f3c..d09e146872 100644 --- a/epan/dissectors/packet-rtps2.c +++ b/epan/dissectors/packet-rtps2.c @@ -54,13 +54,13 @@ # include "config.h" #endif -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <glib.h> -#include <epan/packet.h> -#include <epan/addr_resolv.h> -#include <epan/prefs.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <glib.h> +#include <epan/packet.h> +#include <epan/addr_resolv.h> +#include <epan/prefs.h> #include "packet-rtps2.h" diff --git a/epan/tvbparse.c b/epan/tvbparse.c index 4525b0e814..01d7936af4 100644 --- a/epan/tvbparse.c +++ b/epan/tvbparse.c @@ -1,27 +1,27 @@ /* tvbparse.c -* -* Copyright 2005, Luis E. Garcia Ontanon <luis@ontanon.org> -* -* $Id$ -* -* Wireshark - Network traffic analyzer -* By Gerald Combs <gerald@wireshark.org> -* Copyright 1998 Gerald Combs -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ + * + * Copyright 2005, Luis E. Garcia Ontanon <luis@ontanon.org> + * + * $Id$ + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -39,10 +39,12 @@ #define TVBPARSE_DEBUG_ALL 0xffffffff -/*#define TVBPARSE_DEBUG_ 0x80000000 +#if 0 +#define TVBPARSE_DEBUG_ 0x80000000 #define TVBPARSE_DEBUG_ 0x40000000 #define TVBPARSE_DEBUG_ 0x20000000 -#define TVBPARSE_DEBUG_ 0x10000000*/ +#define TVBPARSE_DEBUG_ 0x10000000 +#endif #define TVBPARSE_DEBUG_CHAR 0x08000000 #define TVBPARSE_DEBUG_CHARS 0x04000000 @@ -55,12 +57,13 @@ #define TVBPARSE_DEBUG_SEQ 0x00080000 #define TVBPARSE_DEBUG_SOME 0x00040000 #define TVBPARSE_DEBUG_UNTIL 0x00020000 -/*#define TVBPARSE_DEBUG_ 0x00010000 +#if 0 +#define TVBPARSE_DEBUG_ 0x00010000 #define TVBPARSE_DEBUG_ 0x00008000 #define TVBPARSE_DEBUG_ 0x00004000 #define TVBPARSE_DEBUG_ 0x00002000 -#define TVBPARSE_DEBUG_ 0x00001000*/ - +#define TVBPARSE_DEBUG_ 0x00001000 +#endif #define TVBPARSE_DEBUG_TT 0x00000800 #define TVBPARSE_DEBUG_CB 0x00000400 #define TVBPARSE_DEBUG_GET 0x00000200 @@ -68,11 +71,13 @@ #define TVBPARSE_DEBUG_NEWTOK 0x00000080 #define TVBPARSE_DEBUG_IGNORE 0x00000040 #define TVBPARSE_DEBUG_PEEK 0x00000020 -/*#define TVBPARSE_DEBUG_ 0x00000010 +#if 0 +#define TVBPARSE_DEBUG_ 0x00000010 #define TVBPARSE_DEBUG_ 0x00000008 #define TVBPARSE_DEBUG_ 0x00000004 #define TVBPARSE_DEBUG_ 0x00000002 -#define TVBPARSE_DEBUG_ 0x00000001*/ +#define TVBPARSE_DEBUG_ 0x00000001 +#endif /* #define TVBPARSE_DEBUG (TVBPARSE_DEBUG_SOME) @@ -83,51 +88,51 @@ static tvbparse_elem_t* new_tok(tvbparse_t* tt, int offset, int len, const tvbparse_wanted_t* wanted) { - tvbparse_elem_t* tok; - + tvbparse_elem_t* tok; + #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_NEWTOK) g_warning("new_tok: id=%i offset=%u len=%u",id,offset,len); #endif tok = ep_alloc(sizeof(tvbparse_elem_t)); - tok->tvb = tt->tvb; - tok->id = id; - tok->offset = offset; - tok->len = len; - tok->data = NULL; - tok->sub = NULL; - tok->next = NULL; - tok->wanted = wanted; - tok->last = tok; - - return tok; + tok->tvb = tt->tvb; + tok->id = id; + tok->offset = offset; + tok->len = len; + tok->data = NULL; + tok->sub = NULL; + tok->next = NULL; + tok->wanted = wanted; + tok->last = tok; + + return tok; } static int ignore_fcn(tvbparse_t* tt, int offset) { int len = 0; int consumed; tvbparse_elem_t* ignored = NULL; - + if (!tt->ignore) return 0; - + #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_IGNORE) g_warning("ignore: enter"); #endif - + while ((consumed = tt->ignore->condition(tt,offset,tt->ignore,&ignored)) > 0) { len += consumed; offset += consumed; #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_IGNORE) g_warning("ignore: consumed=%i",consumed); #endif - + } #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_IGNORE) g_warning("ignore: len=%i",len); #endif - + return len; } @@ -139,12 +144,12 @@ static int cond_char (tvbparse_t* tt, const int offset, const tvbparse_wanted_t #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_CHAR) g_warning("cond_char: control='%s'",wanted->control.str); #endif - + if ( offset + 1 > tt->end_offset ) return -1; - + t = (gchar) tvb_get_guint8(tt->tvb,offset); - + for(i = 0; (c = wanted->control.str[i]) && offset <= tt->end_offset; i++) { if ( c == t ) { *tok = new_tok(tt,wanted->id,offset,1,wanted); @@ -154,7 +159,7 @@ static int cond_char (tvbparse_t* tt, const int offset, const tvbparse_wanted_t return 1; } } - + return -1; } @@ -163,28 +168,28 @@ tvbparse_wanted_t* tvbparse_char(const int id, const void* data, tvbparse_action_t before_cb, tvbparse_action_t after_cb) { - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + w->condition = cond_char; w->id = id; - w->control.str = chr; - w->len = 1; - w->data = data; - w->before = before_cb; - w->after = after_cb; - - return w; + w->control.str = chr; + w->len = 1; + w->data = data; + w->before = before_cb; + w->after = after_cb; + + return w; } static int cond_chars (tvbparse_t* tt, int offset, const tvbparse_wanted_t * wanted, tvbparse_elem_t** tok) { guint length = 0; int start = offset; int left = tt->end_offset - offset; - + #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_CHARS) g_warning("cond_chars: control='%s'",wanted->control.str); #endif - + if ( offset + (int)wanted->min > tt->end_offset ) return -1; @@ -194,18 +199,18 @@ static int cond_chars (tvbparse_t* tt, int offset, const tvbparse_wanted_t * wan gchar t = (gchar) tvb_get_guint8(tt->tvb,offset++); gchar c; guint i = 0; - + while ( (c = wanted->control.str[i++]) ) { if (c == t) goto next_char; } - + break; - + next_char: length++; left--; }; - + if (length < wanted->min) { return -1; } else { @@ -213,29 +218,29 @@ next_char: #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_CHARS) g_warning("cond_chars: GOT len=%i",length); #endif - return length; + return length; } } tvbparse_wanted_t* tvbparse_chars(const int id, - const guint min_len, - const guint max_len, - const gchar* chr, - const void* data, - tvbparse_action_t before_cb, - tvbparse_action_t after_cb) { - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - + const guint min_len, + const guint max_len, + const gchar* chr, + const void* data, + tvbparse_action_t before_cb, + tvbparse_action_t after_cb) { + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + w->condition = cond_chars; w->id = id; - w->control.str = chr; - w->min = min_len ? min_len : 1; - w->max = max_len ? max_len : G_MAXINT/2; - w->data = data; - w->before = before_cb; - w->after = after_cb; - - return w; + w->control.str = chr; + w->min = min_len ? min_len : 1; + w->max = max_len ? max_len : G_MAXINT/2; + w->data = data; + w->before = before_cb; + w->after = after_cb; + + return w; } @@ -247,26 +252,26 @@ static int cond_not_char(tvbparse_t* tt, const int offset, const tvbparse_wanted #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_NOT_CHAR) g_warning("cond_not_char: control='%s'",wanted->control.str); #endif - + if (! offset < tt->end_offset ) { return -1; } - + t = (gchar) tvb_get_guint8(tt->tvb,offset); - + for(i = 0; (c = wanted->control.str[i]); i++) { if ( c == t ) { not_matched = TRUE; } } - + if (not_matched) { return -1; } else { *tok = new_tok(tt,wanted->id,offset,1,wanted); #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_NOT_CHAR) g_warning("cond_not_char: GOT='%c'",t); -#endif +#endif return 1; } } @@ -276,16 +281,16 @@ tvbparse_wanted_t* tvbparse_not_char(const int id, const void* data, tvbparse_action_t before_cb, tvbparse_action_t after_cb) { - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + w->condition = cond_not_char; w->id = id; - w->control.str = chr; - w->data = data; - w->before = before_cb; - w->after = after_cb; - - return w; + w->control.str = chr; + w->data = data; + w->before = before_cb; + w->after = after_cb; + + return w; } static int cond_not_chars(tvbparse_t* tt, int offset, const tvbparse_wanted_t * wanted, tvbparse_elem_t** tok) { @@ -296,7 +301,7 @@ static int cond_not_chars(tvbparse_t* tt, int offset, const tvbparse_wanted_t * #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_NOT_CHARS) g_warning("cond_not_chars: control='%s'",wanted->control.str); #endif - + if ( offset + (int)wanted->min > tt->end_offset ) return -1; @@ -309,48 +314,48 @@ static int cond_not_chars(tvbparse_t* tt, int offset, const tvbparse_wanted_t * gchar c; gchar t = (gchar) tvb_get_guint8(tt->tvb,offset); guint i = 0; - + while ( (c = wanted->control.str[i++]) ) { if (c == t) goto end_not_chars; } - + offset++; length++; left--; } end_not_chars: - + if ( length < wanted->min ) { return -1; } else { *tok = new_tok(tt,wanted->id,start,length,wanted); #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_NOT_CHARS) g_warning("cond_not_chars: GOT len=%i",length); -#endif +#endif return length; } } tvbparse_wanted_t* tvbparse_not_chars(const int id, - const guint min_len, - const guint max_len, - const gchar* chr, - const void* data, - tvbparse_action_t before_cb, - tvbparse_action_t after_cb){ - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - + const guint min_len, + const guint max_len, + const gchar* chr, + const void* data, + tvbparse_action_t before_cb, + tvbparse_action_t after_cb){ + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + w->condition = cond_not_chars; w->id = id; - w->control.str = chr; - w->len = 0; - w->min = min_len ? min_len : 1; - w->max = max_len ? max_len : G_MAXINT/2; - w->data = data; - w->before = before_cb; - w->after = after_cb; - - return w; + w->control.str = chr; + w->len = 0; + w->min = min_len ? min_len : 1; + w->max = max_len ? max_len : G_MAXINT/2; + w->data = data; + w->before = before_cb; + w->after = after_cb; + + return w; } @@ -359,7 +364,7 @@ static int cond_string(tvbparse_t* tt, const int offset, const tvbparse_wanted_t #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_STRING) g_warning("cond_string: control='%s'",wanted->control.str); #endif - + if ( offset + wanted->len > tt->end_offset ) return -1; @@ -367,7 +372,7 @@ static int cond_string(tvbparse_t* tt, const int offset, const tvbparse_wanted_t *tok = new_tok(tt,wanted->id,offset,len,wanted); #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_STRING) g_warning("cond_string: GOT len=%i",len); -#endif +#endif return len; } else { return -1; @@ -375,21 +380,21 @@ static int cond_string(tvbparse_t* tt, const int offset, const tvbparse_wanted_t } tvbparse_wanted_t* tvbparse_string(const int id, - const gchar* str, - const void* data, - tvbparse_action_t before_cb, - tvbparse_action_t after_cb) { - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - + const gchar* str, + const void* data, + tvbparse_action_t before_cb, + tvbparse_action_t after_cb) { + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + w->condition = cond_string; w->id = id; - w->control.str = str; - w->len = (int) strlen(str); - w->data = data; - w->before = before_cb; - w->after = after_cb; - - return w; + w->control.str = str; + w->len = (int) strlen(str); + w->data = data; + w->before = before_cb; + w->after = after_cb; + + return w; } static int cond_casestring(tvbparse_t* tt, const int offset, const tvbparse_wanted_t * wanted, tvbparse_elem_t** tok) { @@ -397,7 +402,7 @@ static int cond_casestring(tvbparse_t* tt, const int offset, const tvbparse_want #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_CASESTRING) g_warning("cond_casestring: control='%s'",wanted->control.str); #endif - + if ( offset + len > tt->end_offset ) return -1; @@ -405,7 +410,7 @@ static int cond_casestring(tvbparse_t* tt, const int offset, const tvbparse_want *tok = new_tok(tt,wanted->id,offset,len,wanted); #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_CASESTRING) g_warning("cond_casestring: GOT len=%i",len); -#endif +#endif return len; } else { *tok = NULL; @@ -418,17 +423,17 @@ tvbparse_wanted_t* tvbparse_casestring(const int id, const void* data, tvbparse_action_t before_cb, tvbparse_action_t after_cb) { - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + w->condition = cond_casestring; w->id = id; - w->control.str = str; - w->len = (int) strlen(str); - w->data = data; - w->before = before_cb; - w->after = after_cb; - - return w; + w->control.str = str; + w->len = (int) strlen(str); + w->data = data; + w->before = before_cb; + w->after = after_cb; + + return w; } static int cond_one_of(tvbparse_t* tt, const int offset, const tvbparse_wanted_t * wanted, tvbparse_elem_t** tok) { @@ -436,7 +441,7 @@ static int cond_one_of(tvbparse_t* tt, const int offset, const tvbparse_wanted_t #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_ONEOF) g_warning("cond_one_of: START"); #endif - + if ( offset > tt->end_offset ) return -1; @@ -444,10 +449,10 @@ static int cond_one_of(tvbparse_t* tt, const int offset, const tvbparse_wanted_t tvbparse_wanted_t* w = g_ptr_array_index(wanted->control.elems,i); tvbparse_elem_t* new = NULL; int curr_len; - + if ( offset + w->len > tt->end_offset ) return -1; - + curr_len = w->condition(tt, offset, w, &new); if (curr_len >= 0) { @@ -456,7 +461,7 @@ static int cond_one_of(tvbparse_t* tt, const int offset, const tvbparse_wanted_t #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_ONEOF) g_warning("cond_one_of: GOT len=%i",curr_len); #endif - return curr_len; + return curr_len; } } @@ -464,30 +469,30 @@ static int cond_one_of(tvbparse_t* tt, const int offset, const tvbparse_wanted_t } tvbparse_wanted_t* tvbparse_set_oneof(const int id, - const void* data, + const void* data, tvbparse_action_t before_cb, tvbparse_action_t after_cb, ...) { - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - tvbparse_t* el; - va_list ap; - + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + tvbparse_t* el; + va_list ap; + w->condition = cond_one_of; w->id = id; - w->data = data; - w->before = before_cb; - w->after = after_cb; - w->control.elems = g_ptr_array_new(); - - va_start(ap,after_cb); - - while(( el = va_arg(ap,tvbparse_t*) )) { - g_ptr_array_add(w->control.elems,el); - }; - - va_end(ap); - - return w; + w->data = data; + w->before = before_cb; + w->after = after_cb; + w->control.elems = g_ptr_array_new(); + + va_start(ap,after_cb); + + while(( el = va_arg(ap,tvbparse_t*) )) { + g_ptr_array_add(w->control.elems,el); + }; + + va_end(ap); + + return w; } static int cond_hash(tvbparse_t* tt, const int offset, const tvbparse_wanted_t* wanted, tvbparse_elem_t** tok) { @@ -498,119 +503,119 @@ static int cond_hash(tvbparse_t* tt, const int offset, const tvbparse_wanted_t* int value_len; tvbparse_elem_t* value_elem = NULL; int tot_len; - + #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_HASH) g_warning("cond_hash: START"); #endif - + tvbparse_elem_t* ret_tok; if ( offset > tt->end_offset ) return -1; - + key_len = wanted->control.hash.key->condition(tt, offset, wanted->control.hash.key, &key_elem); - if (key_len < 0) + if (key_len < 0) return -1; - + key = tvb_get_ephemeral_string(key_elem->tvb,key_elem->offset,key_elem->len); #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_HASH) g_warning("cond_hash: got key='%s'",key); #endif - + if ((value_wanted = g_hash_table_lookup(wanted->control.hash.table,key))) { value_len = value_wanted->condition(tt, offset + key_len, value_wanted, &value_elem); } else if (wanted->control.hash.other) { value_len = wanted->control.hash.other->condition(tt, offset+key_len, wanted->control.hash.other, &value_elem); - if (value_len < 0) + if (value_len < 0) return -1; } else { return -1; } tot_len = key_len + value_len; - + ret_tok = new_tok(tt, value_elem->id, offset, tot_len, wanted); ret_tok->sub = key_elem; ret_tok->sub->last->next = value_elem; - + *tok = ret_tok; #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_HASH) g_warning("cond_hash: GOT len=%i",tot_len); #endif - + return tot_len; } tvbparse_wanted_t* tvbparse_hashed(const int id, - const void* data, + const void* data, tvbparse_action_t before_cb, tvbparse_action_t after_cb, tvbparse_wanted_t* key, tvbparse_wanted_t* other, ...) { - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); gchar* name; - tvbparse_wanted_t* el; - va_list ap; - + tvbparse_wanted_t* el; + va_list ap; + w->condition = cond_hash; w->id = id; - w->data = data; - w->before = before_cb; - w->after = after_cb; - w->control.hash.table = g_hash_table_new(g_str_hash,g_str_equal); - w->control.hash.key = key; + w->data = data; + w->before = before_cb; + w->after = after_cb; + w->control.hash.table = g_hash_table_new(g_str_hash,g_str_equal); + w->control.hash.key = key; w->control.hash.other = other; - - va_start(ap,other); - - while(( name = va_arg(ap,gchar*) )) { + + va_start(ap,other); + + while(( name = va_arg(ap,gchar*) )) { el = va_arg(ap,tvbparse_wanted_t*); - g_hash_table_insert(w->control.hash.table,name,el); - } - - va_end(ap); - - return w; + g_hash_table_insert(w->control.hash.table,name,el); + } + + va_end(ap); + + return w; } void tvbparse_hashed_add(tvbparse_wanted_t* w, ...) { tvbparse_wanted_t* el; - va_list ap; + va_list ap; gchar* name; - + va_start(ap,w); - - while (( name = va_arg(ap,gchar*) )) { + + while (( name = va_arg(ap,gchar*) )) { el = va_arg(ap,tvbparse_wanted_t*); - g_hash_table_insert(w->control.hash.table,name,el); - } - - va_end(ap); -} + g_hash_table_insert(w->control.hash.table,name,el); + } + + va_end(ap); +} static int cond_seq(tvbparse_t* tt, int offset, const tvbparse_wanted_t * wanted, tvbparse_elem_t** tok) { guint i; int len = 0; int start = offset; tvbparse_elem_t* ret_tok = NULL; - + if ( offset > tt->end_offset ) return -1; #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_SEQ) g_warning("cond_seq: START"); #endif - + for(i=0; i < wanted->control.elems->len; i++) { tvbparse_wanted_t* w = g_ptr_array_index(wanted->control.elems,i); tvbparse_elem_t* new = NULL; if ( offset + w->len > tt->end_offset ) return -1; - - + + len = w->condition(tt, offset, w, &new); - + if (len >= 0) { if (ret_tok) { ret_tok->len = (new->offset - ret_tok->offset) + new->len; @@ -624,18 +629,18 @@ static int cond_seq(tvbparse_t* tt, int offset, const tvbparse_wanted_t * wanted } else { return -1; } - + offset += len; offset += ignore_fcn(tt,offset); } *tok = ret_tok; - + #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_SEQ) g_warning("cond_seq: GOT len=%i",offset - start); #endif - - return offset - start; + + return offset - start; } @@ -644,25 +649,25 @@ tvbparse_wanted_t* tvbparse_set_seq(const int id, tvbparse_action_t before_cb, tvbparse_action_t after_cb, ...) { - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - tvbparse_wanted_t* el = NULL; - va_list ap; - + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + tvbparse_wanted_t* el = NULL; + va_list ap; + w->condition = cond_seq; w->id = id; - w->data = data; - w->before = before_cb; - w->after = after_cb; - w->control.elems = g_ptr_array_new(); - - va_start(ap,after_cb); - - while(( el = va_arg(ap,tvbparse_wanted_t*) )) { - g_ptr_array_add(w->control.elems,el); - }; - - va_end(ap); - return w; + w->data = data; + w->before = before_cb; + w->after = after_cb; + w->control.elems = g_ptr_array_new(); + + va_start(ap,after_cb); + + while(( el = va_arg(ap,tvbparse_wanted_t*) )) { + g_ptr_array_add(w->control.elems,el); + }; + + va_end(ap); + return w; } static int cond_some(tvbparse_t* tt, int offset, const tvbparse_wanted_t * wanted, tvbparse_elem_t** tok) { @@ -672,32 +677,32 @@ static int cond_some(tvbparse_t* tt, int offset, const tvbparse_wanted_t * wante #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_SOME) g_warning("cond_some: START"); #endif - + if ( offset > tt->end_offset ) return -1; - + if ( wanted->min == 0 ) { ret_tok = new_tok(tt,wanted->id,tt->offset,0,wanted); } - + while (got_so_far < wanted->max) { tvbparse_elem_t* new = NULL; int consumed; - + if ( offset > tt->end_offset ) return -1; - + consumed = wanted->control.subelem->condition(tt, offset, wanted->control.subelem, &new); - + if(consumed >= 0) { if (ret_tok) { ret_tok->len = (new->offset - ret_tok->offset) + new->len; - + if (ret_tok->sub) { ret_tok->sub->last->next = new; ret_tok->sub->last = new; } else { - ret_tok->sub = new; + ret_tok->sub = new; } } else { ret_tok = new_tok(tt, wanted->id, new->offset, new->len, wanted); @@ -706,19 +711,19 @@ static int cond_some(tvbparse_t* tt, int offset, const tvbparse_wanted_t * wante } else { break; } - + offset += consumed; got_so_far++; } - + #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_SOME) g_warning("cond_some: got num=%u",got_so_far); #endif - + if(got_so_far < wanted->min) { return -1; } - + *tok = ret_tok; #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_SOME) g_warning("cond_some: GOT len=%i",offset - start); @@ -727,27 +732,27 @@ static int cond_some(tvbparse_t* tt, int offset, const tvbparse_wanted_t * wante } tvbparse_wanted_t* tvbparse_some(const int id, - const guint from, - const guint to, - const void* data, - tvbparse_action_t before_cb, - tvbparse_action_t after_cb, - const tvbparse_wanted_t* el) { - - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - - g_assert(from <= to); - + const guint from, + const guint to, + const void* data, + tvbparse_action_t before_cb, + tvbparse_action_t after_cb, + const tvbparse_wanted_t* el) { + + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + + g_assert(from <= to); + w->condition = cond_some; w->id = id; - w->min = from; - w->max = to; - w->data = data; - w->before = before_cb; - w->after = after_cb; - w->control.subelem = el; - - return w; + w->min = from; + w->max = to; + w->data = data; + w->before = before_cb; + w->after = after_cb; + w->control.subelem = el; + + return w; } @@ -758,24 +763,24 @@ static int cond_until(tvbparse_t* tt, const int offset, const tvbparse_wanted_t #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_UNTIL) g_warning("cond_until: START"); #endif - + if ( offset + wanted->control.until.subelem->len > tt->end_offset ) return -1; - + do { len = wanted->control.until.subelem->condition(tt, target_offset++, wanted->control.until.subelem, &new); } while(len < 0 && target_offset+1 < tt->end_offset); - + if (len >= 0) { - + new->id = wanted->id; new->next = NULL; new->last = NULL; new->wanted = wanted; new->offset = offset; - - (*tok) = new; - + + (*tok) = new; + switch (wanted->control.until.mode) { case TP_UNTIL_INCLUDE: new->len = target_offset - offset - 1 + len; @@ -793,13 +798,13 @@ static int cond_until(tvbparse_t* tt, const int offset, const tvbparse_wanted_t new->len = target_offset - offset - 1; #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_UNTIL) g_warning("cond_until: GOT len=%i",target_offset - offset -1); -#endif +#endif return target_offset - offset -1; default: DISSECTOR_ASSERT_NOT_REACHED(); return -1; } - + } else { return -1; } @@ -811,17 +816,17 @@ tvbparse_wanted_t* tvbparse_until(const int id, tvbparse_action_t after_cb, const tvbparse_wanted_t* el, until_mode_t until_mode) { - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + w->condition = cond_until; w->control.until.mode = until_mode; - w->control.until.subelem = el; + w->control.until.subelem = el; w->id = id; - w->data = data; - w->before = before_cb; - w->after = after_cb; - - return w; + w->data = data; + w->before = before_cb; + w->after = after_cb; + + return w; } static int cond_handle(tvbparse_t* tt, const int offset, const tvbparse_wanted_t * wanted, tvbparse_elem_t** tok) { @@ -836,12 +841,12 @@ static int cond_handle(tvbparse_t* tt, const int offset, const tvbparse_wanted_t } tvbparse_wanted_t* tvbparse_handle(tvbparse_wanted_t** handle) { - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + w->condition = cond_handle; - w->control.handle = handle; - - return w; + w->control.handle = handle; + + return w; } static int cond_end(tvbparse_t* tt, const int offset, const tvbparse_wanted_t * wanted _U_, tvbparse_elem_t** tok) { @@ -854,18 +859,18 @@ static int cond_end(tvbparse_t* tt, const int offset, const tvbparse_wanted_t * } tvbparse_wanted_t* tvbparse_end_of_buffer(const int id, - const void* data, - tvbparse_action_t before_cb, - tvbparse_action_t after_cb) { + const void* data, + tvbparse_action_t before_cb, + tvbparse_action_t after_cb) { tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - + w->id = id; w->condition = cond_end; - w->after = after_cb; + w->after = after_cb; w->before = before_cb; w->data = data; - return w; - + return w; + } @@ -881,12 +886,12 @@ static int cond_ft(tvbparse_t* tt, int offset, const tvbparse_wanted_t * wanted, if (wanted->len) { return wanted->len; } else if (wanted->control.ftenum == FT_STRINGZ) { - if (( len = tvb_find_guint8(tt->tvb,offset,tt->end_offset - offset,'\0') >= 0 )) { - *tok = new_tok(tt,wanted->id,offset,len,wanted); - return len; - } else { - return -1; - } + if (( len = tvb_find_guint8(tt->tvb,offset,tt->end_offset - offset,'\0') >= 0 )) { + *tok = new_tok(tt,wanted->id,offset,len,wanted); + return len; + } else { + return -1; + } } else { return -2; } @@ -900,10 +905,10 @@ tvbparse_wanted_t* tvbparse_ft(int id, tvbparse_action_t after_cb, enum ftenum ftenum) { gint len = ft_lens[ftenum]; - + if (len >= 0) { tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); - + w->id = id; w->condition = cond_ft; w->len = len; @@ -911,18 +916,18 @@ tvbparse_wanted_t* tvbparse_ft(int id, w->after = after_cb; w->before = before_cb; w->data = data; - + return w; } else { g_assert(! "unsupported ftenum" ); return NULL; } -} +} static int cond_ft_comp(tvbparse_t* tt, int offset, const tvbparse_wanted_t * wanted _U_, tvbparse_elem_t** tok) { void* l = wanted->control.number.extract(tt->tvb,offset); const void* r = &(wanted->control.number.value); - + if ( offset + wanted->len > tt->end_offset ) return -1; @@ -1096,18 +1101,18 @@ static void* (**extracts[])(tvbuff_t* tvb, guint offset) = { extract_n, extract_ tvbparse_wanted_t* tvbparse_ft_numcmp(int id, - const void* data, - tvbparse_action_t before_cb, - tvbparse_action_t after_cb, - enum ftenum ftenum, - int little_endian, - enum ft_cmp_op ft_cmp_op, - ... ) { - tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); + const void* data, + tvbparse_action_t before_cb, + tvbparse_action_t after_cb, + enum ftenum ftenum, + int little_endian, + enum ft_cmp_op ft_cmp_op, + ... ) { + tvbparse_wanted_t* w = g_malloc0(sizeof(tvbparse_wanted_t)); va_list ap; - + va_start(ap,ft_cmp_op); - + switch (ftenum) { case FT_UINT8: case FT_UINT16: @@ -1126,11 +1131,11 @@ tvbparse_wanted_t* tvbparse_ft_numcmp(int id, case FT_INT32: w->control.number.comp = comps[1][ft_cmp_op]; w->control.number.value.i = va_arg(ap,gint32); - break; + break; case FT_INT64: w->control.number.comp = comps[1][ft_cmp_op]; w->control.number.value.i = va_arg(ap,gint64); - break; + break; case FT_FLOAT: case FT_DOUBLE: w->control.number.comp = comps[1][ft_cmp_op]; @@ -1143,7 +1148,7 @@ tvbparse_wanted_t* tvbparse_ft_numcmp(int id, w->control.number.extract = extracts[little_endian][ftenum]; g_assert(w->control.number.extract && "extraction unsupported"); - + w->id = id; w->condition = cond_ft_comp; w->after = after_cb; @@ -1157,17 +1162,17 @@ tvbparse_wanted_t* tvbparse_ft_numcmp(int id, tvbparse_wanted_t* tvbparse_quoted(const int id, - const void* data, - tvbparse_action_t before_cb, - tvbparse_action_t after_cb, - const char quote, - const char esc) { - - gchar* esc_quot = g_strdup_printf("%c%c",esc,quote); - gchar* quot = g_strdup_printf("%c",quote); - tvbparse_wanted_t* want_quot = tvbparse_char(-1,quot,NULL,NULL,NULL); - - return tvbparse_set_oneof(id, data, before_cb, after_cb, + const void* data, + tvbparse_action_t before_cb, + tvbparse_action_t after_cb, + const char quote, + const char esc) { + + gchar* esc_quot = g_strdup_printf("%c%c",esc,quote); + gchar* quot = g_strdup_printf("%c",quote); + tvbparse_wanted_t* want_quot = tvbparse_char(-1,quot,NULL,NULL,NULL); + + return tvbparse_set_oneof(id, data, before_cb, after_cb, tvbparse_set_seq(-1, NULL, NULL, NULL, want_quot, tvbparse_set_seq(-1,NULL,NULL,NULL, @@ -1186,50 +1191,50 @@ tvbparse_wanted_t* tvbparse_quoted(const int id, } void tvbparse_shrink_token_cb(void* tvbparse_data _U_, - const void* wanted_data _U_, - tvbparse_elem_t* tok) { - tok->offset += 1; - tok->len -= 2; + const void* wanted_data _U_, + tvbparse_elem_t* tok) { + tok->offset += 1; + tok->len -= 2; } tvbparse_t* tvbparse_init(tvbuff_t* tvb, - const int offset, - int len, - void* data, - const tvbparse_wanted_t* ignore) { - tvbparse_t* tt = ep_alloc(sizeof(tvbparse_t)); - + const int offset, + int len, + void* data, + const tvbparse_wanted_t* ignore) { + tvbparse_t* tt = ep_alloc(sizeof(tvbparse_t)); + #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_TT) g_warning("tvbparse_init: offset=%i len=%i",offset,len); -#endif - - - tt->tvb = tvb; - tt->offset = offset; - len = (len == -1) ? (int) tvb_length(tvb) : len; +#endif + + + tt->tvb = tvb; + tt->offset = offset; + len = (len == -1) ? (int) tvb_length(tvb) : len; tt->end_offset = offset + len; - tt->data = data; - tt->ignore = ignore; - return tt; + tt->data = data; + tt->ignore = ignore; + return tt; } gboolean tvbparse_reset(tvbparse_t* tt, - const int offset, - int len) { - + const int offset, + int len) { + #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_TT) g_warning("tvbparse_init: offset=%i len=%i",offset,len); -#endif - - len = (len == -1) ? (int) tvb_length(tt->tvb) : len; - - if( tvb_length_remaining(tt->tvb, offset) >= len) { - tt->offset = offset; - tt->end_offset = offset + len; - return TRUE; - } else { - return FALSE; - } +#endif + + len = (len == -1) ? (int) tvb_length(tt->tvb) : len; + + if( tvb_length_remaining(tt->tvb, offset) >= len) { + tt->offset = offset; + tt->end_offset = offset + len; + return TRUE; + } else { + return FALSE; + } } guint tvbparse_curr_offset(tvbparse_t* tt) { @@ -1238,15 +1243,15 @@ guint tvbparse_curr_offset(tvbparse_t* tt) { static void execute_callbacks(tvbparse_t* tt, tvbparse_elem_t* curr) { ep_stack_t stack = ep_stack_new(); - + while (curr) { if(curr->wanted->before) { #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_CB) g_warning("execute_callbacks: BEFORE: id=%i offset=%i len=%i",curr->id,curr->offset,curr->len); -#endif +#endif curr->wanted->before(tt->data, curr->wanted->data, curr); } - + if(curr->sub) { ep_stack_push(stack,curr); curr = curr->sub; @@ -1254,17 +1259,17 @@ static void execute_callbacks(tvbparse_t* tt, tvbparse_elem_t* curr) { } else { #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_CB) g_warning("execute_callbacks: AFTER: id=%i offset=%i len=%i",curr->id,curr->offset,curr->len); -#endif +#endif if(curr->wanted->after) curr->wanted->after(tt->data, curr->wanted->data, curr); } - + curr = curr->next; - + while( !curr && ep_stack_peek(stack) ) { curr = ep_stack_pop(stack); #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_CB) g_warning("execute_callbacks: AFTER: id=%i offset=%i len=%i",curr->id,curr->offset,curr->len); -#endif +#endif if( curr->wanted->after ) curr->wanted->after(tt->data, curr->wanted->data, curr); curr = curr->next; } @@ -1273,82 +1278,82 @@ static void execute_callbacks(tvbparse_t* tt, tvbparse_elem_t* curr) { } gboolean tvbparse_peek(tvbparse_t* tt, - const tvbparse_wanted_t* wanted) { - tvbparse_elem_t* tok = NULL; - int consumed; + const tvbparse_wanted_t* wanted) { + tvbparse_elem_t* tok = NULL; + int consumed; int offset = tt->offset; - + #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_PEEK) g_warning("tvbparse_peek: ENTER offset=%i",offset); -#endif - +#endif + offset += ignore_fcn(tt,offset); - + #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_PEEK) g_warning("tvbparse_peek: after ignore offset=%i",offset); -#endif - +#endif + consumed = wanted->condition(tt,offset,wanted,&tok); - + if (consumed >= 0) { #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_PEEK) g_warning("tvbparse_peek: GOT len=%i",consumed); -#endif +#endif return TRUE; } else { #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_PEEK) g_warning("tvbparse_peek: NOT GOT"); -#endif +#endif return FALSE; } - + } tvbparse_elem_t* tvbparse_get(tvbparse_t* tt, const tvbparse_wanted_t* wanted) { - tvbparse_elem_t* tok = NULL; - int consumed; + tvbparse_elem_t* tok = NULL; + int consumed; int offset = tt->offset; - + #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_GET) g_warning("tvbparse_get: ENTER offset=%i",offset); -#endif - +#endif + offset += ignore_fcn(tt,offset); #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_GET) g_warning("tvbparse_get: after ignore offset=%i",offset); -#endif - +#endif + consumed = wanted->condition(tt,offset,wanted,&tok); if (consumed >= 0) { #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_GET) g_warning("tvbparse_get: GOT len=%i",consumed); -#endif +#endif execute_callbacks(tt,tok); tt->offset = offset + consumed; #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_GET) g_warning("tvbparse_get: DONE offset=%i", tt->offset); -#endif - return tok; +#endif + return tok; } else { return NULL; } - + } tvbparse_elem_t* tvbparse_find(tvbparse_t* tt, const tvbparse_wanted_t* wanted) { - tvbparse_elem_t* tok = NULL; + tvbparse_elem_t* tok = NULL; int len = 0; int offset = tt->offset; int target_offset = offset -1; #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_FIND) g_warning("tvbparse_get: ENTER offset=%i", tt->offset); -#endif - +#endif + do { len = wanted->condition(tt, target_offset+1, wanted, &tok); } while(len < 0 && ++target_offset < tt->end_offset); @@ -1356,18 +1361,18 @@ tvbparse_elem_t* tvbparse_find(tvbparse_t* tt, const tvbparse_wanted_t* wanted) if (len >= 0) { #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_FIND) g_warning("tvbparse_get: FOUND offset=%i len=%i", target_offset,len); -#endif - execute_callbacks(tt,tok); +#endif + execute_callbacks(tt,tok); tt->offset = target_offset + len; #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_FIND) g_warning("tvbparse_get: DONE offset=%i", tt->offset); -#endif +#endif return tok; } else { #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_FIND) g_warning("tvbparse_get: NOT FOUND"); -#endif +#endif return NULL; } } @@ -1383,10 +1388,10 @@ void tvbparse_tree_add_elem(proto_tree* tree, tvbparse_elem_t* curr) { proto_item* pi; frame->tree = tree; frame->elem = curr; - + while (curr) { pi = proto_tree_add_text(frame->tree,curr->tvb,curr->offset,curr->len,"%s",tvb_format_text(curr->tvb,curr->offset,curr->len)); - + if(curr->sub) { frame->elem = curr; ep_stack_push(stack,frame); @@ -1395,14 +1400,14 @@ void tvbparse_tree_add_elem(proto_tree* tree, tvbparse_elem_t* curr) { curr = curr->sub; continue; } - + curr = curr->next; - + while( !curr && ep_stack_peek(stack) ) { frame = ep_stack_pop(stack); curr = frame->elem->next; } - + } } diff --git a/epan/tvbparse.h b/epan/tvbparse.h index 911367484f..24fc2d2862 100644 --- a/epan/tvbparse.h +++ b/epan/tvbparse.h @@ -15,12 +15,12 @@ * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. -* +* * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. -* +* * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -29,11 +29,11 @@ /* The intention behind this is to ease the writing of dissectors that have to parse text without the need of writing into buffers. - + It was originally written to avoid using lex and yacc for the xml dissector. - + the parser is able to look for wanted elements these can be: - + simple tokens: - a char out of a string of needles - a char not belonging to a string of needles @@ -42,24 +42,24 @@ - a string - a caseless string - all the characters up to a certain wanted element (included or excluded) - + composed elements: - one of a given group of wanted elements - a sequence of wanted elements - some (at least one) instances of a wanted element - + Once a wanted element is successfully extracted, by either tvbparse_get or - tvbparse_find, the parser will invoke a given callback + tvbparse_find, the parser will invoke a given callback before and another one after every of its component's subelement's callbacks are being called. - + If tvbparse_get or tvbparse_find fail to extract the wanted element the subelements callbacks are not going to be invoked. - + The wanted elements are instantiated once by the proto_register_xxx function. - + The parser is instantiated for every packet and it mantains its state. - + The element's data is destroyed before the next packet is dissected. */ @@ -90,7 +90,7 @@ typedef void (*tvbparse_action_t)(void* tvbparse_data, const void* wanted_data, typedef int (*tvbparse_condition_t) (tvbparse_t*, const int, - const tvbparse_wanted_t*, + const tvbparse_wanted_t*, tvbparse_elem_t**); @@ -104,7 +104,7 @@ typedef enum { struct _tvbparse_wanted_t { int id; tvbparse_condition_t condition; - + union { const gchar* str; struct _tvbparse_wanted_t** handle; @@ -113,7 +113,7 @@ struct _tvbparse_wanted_t { gint64 i; guint64 u; gdouble f; - } value; + } value; gboolean (*comp)(void*,const void*); void* (*extract)(tvbuff_t*,guint); } number; @@ -131,17 +131,17 @@ struct _tvbparse_wanted_t { const tvbparse_wanted_t* subelem; void* p; } control; - + int len; - + guint min; guint max; - + const void* data; - + tvbparse_action_t before; tvbparse_action_t after; - + }; /* an instance of a per packet parser */ @@ -157,18 +157,18 @@ struct _tvbparse_t { /* a matching token returned by either tvbparser_get or tvb_parser_find */ struct _tvbparse_elem_t { int id; - + tvbuff_t* tvb; int offset; int len; - + void* data; - + struct _tvbparse_elem_t* sub; - + struct _tvbparse_elem_t* next; struct _tvbparse_elem_t* last; - + const tvbparse_wanted_t* wanted; }; @@ -215,7 +215,7 @@ tvbparse_wanted_t* tvbparse_not_char(const int id, * * When looked for it returns a simple element one or more characters long if * one or more char(s) starting from the current offset match one of the needles. - * An element will be returned if at least min_len chars are given (1 if it's 0) + * An element will be returned if at least min_len chars are given (1 if it's 0) * It will get at most max_len chars or as much as it can if max_len is 0. */ tvbparse_wanted_t* tvbparse_chars(const int id, @@ -232,7 +232,7 @@ tvbparse_wanted_t* tvbparse_chars(const int id, * When looked for it returns a simple element one or more characters long if * one or more char(s) starting from the current offset do not match one of the * needles. - * An element will be returned if at least min_len chars are given (1 if it's 0) + * An element will be returned if at least min_len chars are given (1 if it's 0) * It will get at most max_len chars or as much as it can if max_len is 0. */ tvbparse_wanted_t* tvbparse_not_chars(const int id, @@ -247,7 +247,7 @@ tvbparse_wanted_t* tvbparse_not_chars(const int id, * a string element * * When looked for it returns a simple element if we have the given string at - * the current offset + * the current offset */ tvbparse_wanted_t* tvbparse_string(const int id, const gchar* string, @@ -259,7 +259,7 @@ tvbparse_wanted_t* tvbparse_string(const int id, * casestring * * When looked for it returns a simple element if we have a matching string at - * the current offset + * the current offset */ tvbparse_wanted_t* tvbparse_casestring(const int id, const gchar* str, @@ -270,18 +270,18 @@ tvbparse_wanted_t* tvbparse_casestring(const int id, /* * until * - * When looked for it returns a simple element containing all the characters + * When looked for it returns a simple element containing all the characters * found until the first match of the ending element if the ending element is * found. * - * When looking for until elements it calls tvbparse_find so it can be very slow. + * When looking for until elements it calls tvbparse_find so it can be very slow. * * It won't have a subelement, the ending's callbacks won't get called. */ /* * op_mode values determine how the terminating element and the current offset - * of the parser are handled + * of the parser are handled */ tvbparse_wanted_t* tvbparse_until(const int id, const void* private_data, @@ -305,12 +305,12 @@ tvbparse_wanted_t* tvbparse_set_oneof(const int id, tvbparse_action_t after_cb, ...); -/* +/* * hashed */ tvbparse_wanted_t* tvbparse_hashed(const int id, - const void* data, + const void* data, tvbparse_action_t before_cb, tvbparse_action_t after_cb, tvbparse_wanted_t* key, @@ -354,7 +354,7 @@ tvbparse_wanted_t* tvbparse_some(const int id, tvbparse_some(id, 1, G_MAXINT, private_data, before_cb, after_cb, wanted) -/* +/* * handle * * this is a pointer to a pointer to a wanted element (that might have not @@ -422,10 +422,10 @@ void tvbparse_shrink_token_cb(void* tvbparse_data, /* initialize the parser (at every packet) -* tvb: what are we parsing? +* tvb: what are we parsing? * offset: from where * len: for how many bytes -* private_data: will be passed to the action callbacks +* private_data: will be passed to the action callbacks * ignore: a wanted token type to be ignored (the associated cb WILL be called when it matches) */ tvbparse_t* tvbparse_init(tvbuff_t* tvb, @@ -446,7 +446,7 @@ guint tvbparse_len_left(tvbparse_t* tt); * This will look for the wanted token at the current offset or after any given * number of ignored tokens returning FALSE if there's no match or TRUE if there * is a match. - * The parser will be left in its original state and no callbacks will be called. + * The parser will be left in its original state and no callbacks will be called. */ gboolean tvbparse_peek(tvbparse_t* tt, const tvbparse_wanted_t* wanted); @@ -455,7 +455,7 @@ gboolean tvbparse_peek(tvbparse_t* tt, * This will look for the wanted token at the current offset or after any given * number of ignored tokens returning NULL if there's no match. * if there is a match it will set the offset of the current parser after - * the end of the token + * the end of the token */ tvbparse_elem_t* tvbparse_get(tvbparse_t* tt, const tvbparse_wanted_t* wanted); |