diff options
author | Luis Ontanon <luis.ontanon@gmail.com> | 2006-02-09 13:05:32 +0000 |
---|---|---|
committer | Luis Ontanon <luis.ontanon@gmail.com> | 2006-02-09 13:05:32 +0000 |
commit | 0bb1b874ec85463c8671e7d2b5e9041c0f33bb07 (patch) | |
tree | a282d9d8967008f4d0cfc86b56ae5bacc587fa66 /epan/tvbparse.c | |
parent | 118e05db0bb080813a919dadcf2b1de9aa711fb8 (diff) |
Add heuristic dissection of XML
svn path=/trunk/; revision=17228
Diffstat (limited to 'epan/tvbparse.c')
-rw-r--r-- | epan/tvbparse.c | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/epan/tvbparse.c b/epan/tvbparse.c index 06b3f094f6..5b2a02797d 100644 --- a/epan/tvbparse.c +++ b/epan/tvbparse.c @@ -67,8 +67,8 @@ #define TVBPARSE_DEBUG_FIND 0x00000100 #define TVBPARSE_DEBUG_NEWTOK 0x00000080 #define TVBPARSE_DEBUG_IGNORE 0x00000040 -/*#define TVBPARSE_DEBUG_ 0x00000020 -#define TVBPARSE_DEBUG_ 0x00000010 +#define TVBPARSE_DEBUG_PEEK 0x00000020 +/*#define TVBPARSE_DEBUG_ 0x00000010 #define TVBPARSE_DEBUG_ 0x00000008 #define TVBPARSE_DEBUG_ 0x00000004 #define TVBPARSE_DEBUG_ 0x00000002 @@ -1272,6 +1272,38 @@ 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; + int offset = tt->offset; + +#ifdef TVBPARSE_DEBUG + if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_PEEK) g_warning("tvbparse_peek: ENTER offset=%i",offset); +#endif + + offset += ignore(tt,offset); + +#ifdef TVBPARSE_DEBUG + if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_PEEK) g_warning("tvbparse_peek: after ignore offset=%i",offset); +#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 + return TRUE; + } else { +#ifdef TVBPARSE_DEBUG + if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_PEEK) g_warning("tvbparse_peek: NOT GOT"); +#endif + return FALSE; + } + +} + tvbparse_elem_t* tvbparse_get(tvbparse_t* tt, const tvbparse_wanted_t* wanted) { tvbparse_elem_t* tok = NULL; |