dfilter: Move flags to dfwork_t
Replace booleans with a flags field.
This commit is contained in:
parent
61bfa918f1
commit
9e98b13524
|
@ -43,6 +43,7 @@ struct epan_dfilter {
|
|||
|
||||
typedef struct {
|
||||
/* Syntax Tree stuff */
|
||||
unsigned flags;
|
||||
stnode_t *st_root;
|
||||
unsigned field_count;
|
||||
df_error_t *error;
|
||||
|
@ -56,7 +57,6 @@ typedef struct {
|
|||
GHashTable *references; /* hfinfo -> pointer to array of references */
|
||||
GHashTable *raw_references; /* hfinfo -> pointer to array of references */
|
||||
char *expanded_text;
|
||||
gboolean apply_optimization;
|
||||
wmem_allocator_t *dfw_scope; /* Because we use exceptions for error handling sometimes
|
||||
cleaning up memory allocations is inconvenient. Memory
|
||||
allocated from this pool will be freed when the dfwork_t
|
||||
|
|
|
@ -201,9 +201,10 @@ static void free_refs_array(gpointer data)
|
|||
|
||||
|
||||
static dfwork_t*
|
||||
dfwork_new(void)
|
||||
dfwork_new(unsigned flags)
|
||||
{
|
||||
dfwork_t *dfw = g_new0(dfwork_t, 1);
|
||||
dfw->flags = flags;
|
||||
|
||||
dfw->references =
|
||||
g_hash_table_new_full(g_direct_hash, g_direct_equal,
|
||||
|
@ -349,7 +350,7 @@ dfilter_expand(const char *expr, df_error_t **err_ret)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
dfwork_parse(dfwork_t *dfw, unsigned flags)
|
||||
dfwork_parse(dfwork_t *dfw)
|
||||
{
|
||||
df_scanner_state_t state;
|
||||
yyscan_t scanner;
|
||||
|
@ -370,15 +371,15 @@ dfwork_parse(dfwork_t *dfw, unsigned flags)
|
|||
df_yyset_extra(&state, scanner);
|
||||
|
||||
#ifdef NDEBUG
|
||||
if (flags & DF_DEBUG_FLEX || flags & DF_DEBUG_LEMON) {
|
||||
if (dfw->flags & DF_DEBUG_FLEX || dfw->flags & DF_DEBUG_LEMON) {
|
||||
ws_message("Compile Wireshark without NDEBUG to enable Flex and/or Lemon debug traces");
|
||||
}
|
||||
#else
|
||||
/* Enable/disable debugging for Flex. */
|
||||
df_yyset_debug(flags & DF_DEBUG_FLEX, scanner);
|
||||
df_yyset_debug(dfw->flags & DF_DEBUG_FLEX, scanner);
|
||||
|
||||
/* Enable/disable debugging for Lemon. */
|
||||
DfilterTrace(flags & DF_DEBUG_LEMON ? stderr : NULL, "lemon> ");
|
||||
DfilterTrace(dfw->flags & DF_DEBUG_LEMON ? stderr : NULL, "lemon> ");
|
||||
#endif
|
||||
|
||||
while (1) {
|
||||
|
@ -466,8 +467,7 @@ dfilter_compile_real(const gchar *text, dfilter_t **dfp,
|
|||
__func__, caller, text);
|
||||
}
|
||||
|
||||
dfw = dfwork_new();
|
||||
dfw->apply_optimization = flags & DF_OPTIMIZE;
|
||||
dfw = dfwork_new(flags);
|
||||
|
||||
if (flags & DF_EXPAND_MACROS) {
|
||||
dfw->expanded_text = dfilter_macro_apply(text, &dfw->error);
|
||||
|
@ -481,7 +481,7 @@ dfilter_compile_real(const gchar *text, dfilter_t **dfp,
|
|||
ws_noisy("Verbatim text: %s", dfw->expanded_text);
|
||||
}
|
||||
|
||||
if (!dfwork_parse(dfw, flags)) {
|
||||
if (!dfwork_parse(dfw)) {
|
||||
goto FAILURE;
|
||||
}
|
||||
|
||||
|
|
|
@ -844,7 +844,7 @@ dfw_gencode(dfwork_t *dfw)
|
|||
dfw->interesting_fields = g_hash_table_new(g_int_hash, g_int_equal);
|
||||
gencode(dfw, dfw->st_root);
|
||||
dfw_append_insn(dfw, dfvm_insn_new(DFVM_RETURN));
|
||||
if (dfw->apply_optimization) {
|
||||
if (dfw->flags & DF_OPTIMIZE) {
|
||||
optimize(dfw);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue