From 9ee9b40b6467e38302419bf9a3c80fe3b9beed38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Valverde?= Date: Mon, 28 Mar 2022 00:21:53 +0100 Subject: [PATCH] dfilter: Store expanded text --- dftest.c | 4 ---- epan/dfilter/dfilter-int.h | 1 + epan/dfilter/dfilter.c | 2 ++ epan/dfilter/dfvm.c | 5 ++++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dftest.c b/dftest.c index b5cc14496a..5995bbffeb 100644 --- a/dftest.c +++ b/dftest.c @@ -130,8 +130,6 @@ main(int argc, char **argv) /* Get filter text */ text = get_args_as_string(argc, argv, 1); - printf("Filter: %s\n", text); - /* Compile it */ if (!dfilter_compile(text, &df, &err_msg)) { fprintf(stderr, "dftest: %s\n", err_msg); @@ -141,8 +139,6 @@ main(int argc, char **argv) exit(2); } - printf("\n"); - if (df == NULL) printf("Filter is empty\n"); else diff --git a/epan/dfilter/dfilter-int.h b/epan/dfilter/dfilter-int.h index eeb1e31bff..aaaf4b0f53 100644 --- a/epan/dfilter/dfilter-int.h +++ b/epan/dfilter/dfilter-int.h @@ -26,6 +26,7 @@ struct epan_dfilter { int *interesting_fields; int num_interesting_fields; GPtrArray *deprecated; + char *expanded_text; }; typedef struct { diff --git a/epan/dfilter/dfilter.c b/epan/dfilter/dfilter.c index ff2e013d62..ba04a7f791 100644 --- a/epan/dfilter/dfilter.c +++ b/epan/dfilter/dfilter.c @@ -205,6 +205,7 @@ dfilter_free(dfilter_t *df) g_free(df->registers); g_free(df->attempted_load); g_free(df->free_registers); + g_free(df->expanded_text); g_free(df); } @@ -444,6 +445,7 @@ dfilter_compile_real(const gchar *text, dfilter_t **dfp, dfw->insns = NULL; dfilter->interesting_fields = dfw_interesting_fields(dfw, &dfilter->num_interesting_fields); + dfilter->expanded_text = ws_strdup(expanded_text); /* Initialize run-time space */ dfilter->num_registers = dfw->next_register; diff --git a/epan/dfilter/dfvm.c b/epan/dfilter/dfvm.c index 46c21e665b..f234a620b9 100644 --- a/epan/dfilter/dfvm.c +++ b/epan/dfilter/dfvm.c @@ -188,7 +188,10 @@ dfvm_dump(FILE *f, dfilter_t *df) dfvm_value_t *arg1, *arg2, *arg3, *arg4; char *arg1_str, *arg2_str, *arg3_str, *arg4_str; - fprintf(f, "Instructions:\n"); + + fprintf(f, "Filter: %s\n", df->expanded_text); + + fprintf(f, "\nInstructions:\n"); length = df->insns->len; for (id = 0; id < length; id++) {