aboutsummaryrefslogtreecommitdiffstats
path: root/tshark.c
diff options
context:
space:
mode:
authorJoão Valverde <j@v6e.pt>2022-04-10 18:19:45 +0100
committerA Wireshark GitLab Utility <gerald+gitlab-utility@wireshark.org>2022-04-11 19:25:37 +0000
commit24443fa33ad20a178536e7d3c21c3b2bcf1167a9 (patch)
tree1b5281d8fecc8114bd514bc880363355dd8a0ccb /tshark.c
parentfb3bdffaba1ebeb9a7b2d33542b47825b4a2afee (diff)
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 ^~~~~~~~~
Diffstat (limited to 'tshark.c')
-rw-r--r--tshark.c13
1 files changed, 10 insertions, 3 deletions
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();