aboutsummaryrefslogtreecommitdiffstats
path: root/dftest.c
diff options
context:
space:
mode:
authorJoão Valverde <j@v6e.pt>2022-12-29 20:06:19 +0000
committerJoão Valverde <j@v6e.pt>2022-12-29 23:48:56 +0000
commit1400d9272441c0117e24100ed760780045732c2f (patch)
tree52b142fe041d174c62a4b55b4a5b601eef883f42 /dftest.c
parentba7917309a92447fb81bde61041377c68edc5fd7 (diff)
dfilter: Add compilation warning for ambiguous syntax
$ dfilter 'frame contains fc' Filter: frame contains fc Warning: Interpreting "fc" as "Fibre Channel". Consider writing :fc or .fc. (...)
Diffstat (limited to 'dftest.c')
-rw-r--r--dftest.c56
1 files changed, 30 insertions, 26 deletions
diff --git a/dftest.c b/dftest.c
index 8fea7b121a..28b7e4bacb 100644
--- a/dftest.c
+++ b/dftest.c
@@ -71,14 +71,15 @@ main(int argc, char **argv)
cfile_write_failure_message,
cfile_close_failure_message
};
- char *text;
- char *expanded_text;
- dfilter_t *df;
- gchar *err_msg;
- df_error_t *df_err;
- GTimer *timer;
+ char *text = NULL;
+ char *expanded_text = NULL;
+ dfilter_t *df = NULL;
+ gchar *err_msg = NULL;
+ df_error_t *df_err = NULL;
+ GTimer *timer = NULL;
gdouble elapsed_expand, elapsed_compile;
gboolean ok;
+ int exit_status = 0;
cmdarg_err_init(dftest_cmdarg_err, dftest_cmdarg_err_cont);
@@ -162,13 +163,9 @@ main(int argc, char **argv)
if (expanded_text == NULL) {
fprintf(stderr, "dftest: %s\n", err_msg);
g_free(err_msg);
- g_free(text);
- epan_cleanup();
- g_timer_destroy(timer);
- exit(2);
+ exit_status = 2;
+ goto out;
}
- g_free(text);
- text = NULL;
printf("Filter: %s\n", expanded_text);
@@ -186,28 +183,35 @@ main(int argc, char **argv)
putloc(stderr, df_err->loc);
}
dfilter_error_free(df_err);
- g_free(expanded_text);
- epan_cleanup();
- g_timer_destroy(timer);
- exit(2);
+ exit_status = 2;
}
if (df == NULL) {
printf("Filter is empty.\n");
+ goto out;
}
- else {
- printf("\nSyntax tree:\n%s\n\n", dfilter_syntax_tree(df));
- dfilter_dump(df);
- printf("\nElapsed time: %.f µs (%.f µs + %.f µs)\n",
- (elapsed_expand + elapsed_compile) * 1000 * 1000,
- elapsed_expand * 1000 * 1000, elapsed_compile * 1000 * 1000);
+
+ for (GSList *l = dfilter_get_warnings(df); l != NULL; l = l->next) {
+ printf("\nWarning: %s.\n", (char *)l->data);
}
- dfilter_free(df);
+ printf("\nSyntax tree:\n%s\n\n", dfilter_syntax_tree(df));
+ dfilter_dump(df);
+ printf("\nElapsed time: %.f µs (%.f µs + %.f µs)\n",
+ (elapsed_expand + elapsed_compile) * 1000 * 1000,
+ elapsed_expand * 1000 * 1000, elapsed_compile * 1000 * 1000);
+
+out:
epan_cleanup();
- g_free(expanded_text);
- g_timer_destroy(timer);
- exit(0);
+ if (df != NULL)
+ dfilter_free(df);
+ if (text != NULL)
+ g_free(text);
+ if (expanded_text != NULL)
+ g_free(expanded_text);
+ if (timer != NULL)
+ g_timer_destroy(timer);
+ exit(exit_status);
}
/*