dfilter: Replace compile booleans arguments with a bit flag
This commit is contained in:
parent
84e75be5c6
commit
b116ccd6d5
2
dftest.c
2
dftest.c
|
@ -165,7 +165,7 @@ main(int argc, char **argv)
|
|||
|
||||
/* Compile it */
|
||||
if (!dfilter_compile_real(expanded_text, &df, &df_err,
|
||||
"dftest", TRUE, FALSE, FALSE)) {
|
||||
DF_SAVE_TREE, "dftest")) {
|
||||
fprintf(stderr, "dftest: %s\n", df_err->msg);
|
||||
if (df_err->loc.col_start >= 0) {
|
||||
fprintf(stderr, "\t%s\n", expanded_text);
|
||||
|
|
|
@ -355,9 +355,8 @@ dfilter_expand(const char *expr, char **err_ret)
|
|||
|
||||
gboolean
|
||||
dfilter_compile_real(const gchar *text, dfilter_t **dfp,
|
||||
df_error_t **errpp,
|
||||
const char *caller, gboolean save_tree,
|
||||
gboolean apply_macros, gboolean apply_optimization)
|
||||
df_error_t **errpp, unsigned flags,
|
||||
const char *caller)
|
||||
{
|
||||
int token;
|
||||
dfilter_t *dfilter;
|
||||
|
@ -393,9 +392,9 @@ dfilter_compile_real(const gchar *text, dfilter_t **dfp,
|
|||
}
|
||||
|
||||
dfw = dfwork_new();
|
||||
dfw->apply_optimization = apply_optimization;
|
||||
dfw->apply_optimization = flags & DF_OPTIMIZE;
|
||||
|
||||
if (apply_macros) {
|
||||
if (flags & DF_EXPAND_MACROS) {
|
||||
dfw->expanded_text = dfilter_macro_apply(text, &dfw->error.msg);
|
||||
if (dfw->expanded_text == NULL) {
|
||||
goto FAILURE;
|
||||
|
@ -495,7 +494,7 @@ dfilter_compile_real(const gchar *text, dfilter_t **dfp,
|
|||
tree_str = NULL;
|
||||
log_syntax_tree(LOG_LEVEL_NOISY, dfw->st_root, "Syntax tree after successful semantic check", &tree_str);
|
||||
|
||||
if (save_tree && tree_str == NULL) {
|
||||
if ((flags & DF_SAVE_TREE) && tree_str == NULL) {
|
||||
tree_str = dump_syntax_tree_str(dfw->st_root);
|
||||
}
|
||||
|
||||
|
@ -515,7 +514,7 @@ dfilter_compile_real(const gchar *text, dfilter_t **dfp,
|
|||
dfilter->raw_references = dfw->raw_references;
|
||||
dfw->raw_references = NULL;
|
||||
|
||||
if (save_tree) {
|
||||
if (flags & DF_SAVE_TREE) {
|
||||
ws_assert(tree_str);
|
||||
dfilter->syntax_tree_str = tree_str;
|
||||
tree_str = NULL;
|
||||
|
|
|
@ -69,16 +69,23 @@ WS_DLL_PUBLIC
|
|||
void
|
||||
dfilter_error_free(df_error_t *);
|
||||
|
||||
// TODO: Replace booleans with a bit flag.
|
||||
/* Save textual representation of syntax tree (for debugging purposes). */
|
||||
#define DF_SAVE_TREE (1U << 0)
|
||||
/* Perform macro substitution on filter text. */
|
||||
#define DF_EXPAND_MACROS (1U << 1)
|
||||
/* Do an optimization pass on the compiled filter. */
|
||||
#define DF_OPTIMIZE (1U << 2)
|
||||
|
||||
WS_DLL_PUBLIC
|
||||
gboolean
|
||||
dfilter_compile_real(const gchar *text, dfilter_t **dfp,
|
||||
df_error_t **errpp,
|
||||
const char *caller, gboolean save_tree,
|
||||
gboolean apply_macros, gboolean apply_optimization);
|
||||
df_error_t **errpp, unsigned flags,
|
||||
const char *caller);
|
||||
|
||||
#define dfilter_compile(text, dfp, errp) \
|
||||
dfilter_compile_real(text, dfp, errp, __func__, FALSE, TRUE, TRUE)
|
||||
dfilter_compile_real(text, dfp, errp, \
|
||||
DF_EXPAND_MACROS|DF_OPTIMIZE, \
|
||||
__func__)
|
||||
|
||||
/* Frees all memory used by dfilter, and frees
|
||||
* the dfilter itself. */
|
||||
|
|
2
tshark.c
2
tshark.c
|
@ -626,7 +626,7 @@ _compile_dfilter(const char *text, dfilter_t **dfp, const char *caller)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
ok = dfilter_compile_real(expanded, dfp, &df_err, caller, FALSE, FALSE, TRUE);
|
||||
ok = dfilter_compile_real(expanded, dfp, &df_err, DF_OPTIMIZE, caller);
|
||||
if (!ok ) {
|
||||
cmdarg_err("%s", df_err->msg);
|
||||
|
||||
|
|
Loading…
Reference in New Issue