aboutsummaryrefslogtreecommitdiffstats
path: root/epan/tvbparse.c
diff options
context:
space:
mode:
authorLuis Ontanon <luis.ontanon@gmail.com>2006-02-09 13:05:32 +0000
committerLuis Ontanon <luis.ontanon@gmail.com>2006-02-09 13:05:32 +0000
commit0bb1b874ec85463c8671e7d2b5e9041c0f33bb07 (patch)
treea282d9d8967008f4d0cfc86b56ae5bacc587fa66 /epan/tvbparse.c
parent118e05db0bb080813a919dadcf2b1de9aa711fb8 (diff)
Add heuristic dissection of XML
svn path=/trunk/; revision=17228
Diffstat (limited to 'epan/tvbparse.c')
-rw-r--r--epan/tvbparse.c36
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;