From 24443fa33ad20a178536e7d3c21c3b2bcf1167a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Valverde?= Date: Sun, 10 Apr 2022 18:19:45 +0100 Subject: tshark: Add underline to dfilter errors $ tshark -Y 'frame.number == 123foobar and ip' -r /dev/null tshark: "123foobar" is not a valid number. frame.number == 123foobar and ip ^~~~~~~~~ --- tshark.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'tshark.c') diff --git a/tshark.c b/tshark.c index d39ffcd33f..012c6ded3d 100644 --- a/tshark.c +++ b/tshark.c @@ -722,7 +722,7 @@ must_do_dissection(dfilter_t *rfcode, dfilter_t *dfcode, int main(int argc, char *argv[]) { - char *err_msg; + char *err_msg, *err_msg_cont; static const struct report_message_routines tshark_report_routines = { failure_message, failure_message, @@ -777,6 +777,7 @@ main(int argc, char *argv[]) gchar *volatile dfilter = NULL; dfilter_t *rfcode = NULL; dfilter_t *dfcode = NULL; + dfilter_loc_t df_loc; e_prefs *prefs_p; gchar *output_only = NULL; gchar *volatile pdu_export_arg = NULL; @@ -2013,9 +2014,12 @@ main(int argc, char *argv[]) if (rfilter != NULL) { ws_debug("Compiling read filter: '%s'", rfilter); - if (!dfilter_compile(rfilter, &rfcode, &err_msg)) { + if (!dfilter_compile2(rfilter, &rfcode, &err_msg, &df_loc)) { cmdarg_err("%s", err_msg); + err_msg_cont = ws_strdup_error_offset(NULL, df_loc.col_start, df_loc.col_len); + cmdarg_err_cont(" %s\n %s\n", rfilter, err_msg_cont); g_free(err_msg); + g_free(err_msg_cont); epan_cleanup(); extcap_cleanup(); @@ -2040,9 +2044,12 @@ main(int argc, char *argv[]) if (dfilter != NULL) { ws_debug("Compiling display filter: '%s'", dfilter); - if (!dfilter_compile(dfilter, &dfcode, &err_msg)) { + if (!dfilter_compile2(dfilter, &dfcode, &err_msg, &df_loc)) { cmdarg_err("%s", err_msg); + err_msg_cont = ws_strdup_error_offset(NULL, df_loc.col_start, df_loc.col_len); + cmdarg_err_cont(" %s\n %s\n", dfilter, err_msg_cont); g_free(err_msg); + g_free(err_msg_cont); epan_cleanup(); extcap_cleanup(); -- cgit v1.2.3