summaryrefslogtreecommitdiff
path: root/epan/dfilter/dfilter.c
diff options
context:
space:
mode:
authorLuis Ontanon <luis.ontanon@gmail.com>2007-01-18 02:54:56 +0000
committerLuis Ontanon <luis.ontanon@gmail.com>2007-01-18 02:54:56 +0000
commit80dcfb23d2dc85dde9591cbcaae6127c5f9f5c37 (patch)
treec7d8bc2e9a8fd2c9f05c45494723a1f87ea5bfef /epan/dfilter/dfilter.c
parent3e9ac49497c59ca683a6f31d12cab2018c3a9d75 (diff)
downloadwireshark-80dcfb23d2dc85dde9591cbcaae6127c5f9f5c37.tar.gz
display filter macros.
NOT to be copied over to release 0.99.5 svn path=/trunk/; revision=20467
Diffstat (limited to 'epan/dfilter/dfilter.c')
-rw-r--r--epan/dfilter/dfilter.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/epan/dfilter/dfilter.c b/epan/dfilter/dfilter.c
index a2bb2ecd61..06a9dd55a2 100644
--- a/epan/dfilter/dfilter.c
+++ b/epan/dfilter/dfilter.c
@@ -34,6 +34,8 @@
#include "dfvm.h"
#include <epan/epan_dissect.h>
#include "dfilter.h"
+#include "dfilter-macro.h"
+#include <epan/report_err.h>
#define DFILTER_TOKEN_ID_OFFSET 1
@@ -42,7 +44,7 @@ static gchar dfilter_error_msg_buf[1024];
gchar *dfilter_error_msg; /* NULL when no error resulted */
/* From scanner.c */
-void df_scanner_text(const char *text);
+void df_scanner_text(const char *text);
void df_scanner_cleanup(void);
int df_lex(void);
@@ -71,6 +73,8 @@ dfilter_fail(const char *format, ...)
void
dfilter_init(void)
{
+ gchar* err;
+
if (ParserObj) {
g_message("I expected ParserObj to be NULL\n");
/* Free the Lemon Parser object */
@@ -86,9 +90,15 @@ dfilter_init(void)
/* Trace parser */
DfilterTrace(stdout, "lemon> ");
#endif
-
+
/* Initialize the syntax-tree sub-sub-system */
sttype_init();
+
+ if ( ! dfilter_macro_load(&err) ) {
+ if (err) {
+ report_failure("%s",err);
+ }
+ }
}
/* Clean-up the dfilter module */
@@ -182,8 +192,7 @@ dfwork_free(dfwork_t *dfw)
if (dfw->insns) {
free_insns(dfw->insns);
}
-
-
+
g_free(dfw);
}
@@ -195,9 +204,13 @@ dfilter_compile(const gchar *text, dfilter_t **dfp)
dfilter_t *dfilter;
dfwork_t *dfw;
gboolean failure = FALSE;
-
+
dfilter_error_msg = NULL;
+ if ( !( text = dfilter_macro_apply(text, 0, &dfilter_error_msg) ) ) {
+ return FALSE;
+ }
+
dfw = dfwork_new();
df_scanner_text(text);